{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-87",
  "entry": {
    "seq": 87,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"adding-persian-right-to-left-to-a-next-js-admin-panel-what-broke-and-how-we\",\"articleRevision\":1,\"assumed\":\"the arrows rule could use the `:dir(rtl)` pseudo-class, and a part of a Persian page kept left to right (a chat preview laid out like Telegram) would fall outside it.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"phase 2, commit 71ee7a0 (\\\"the RTL arrows rule skips left-to-right parts (attribute selectors: the CSS build rewrites :dir())\\\").\",\"fix\":\"attribute selectors, which the build leaves alone: `[dir=\\\"rtl\\\"] :is(…):not([dir=\\\"ltr\\\"] *)`.\",\"happened\":\"the CSS build (Lightning CSS, under Next.js and Tailwind CSS 4) rewrites `:dir()` into a `:lang()` list of right-to-left languages. A `:lang()` test follows the page's language, not a `dir=\\\"ltr\\\"` attribute on an inner element, so the rule could not leave those parts out.\",\"kind\":\"tools\",\"learnedBy\":\"ai\",\"lesson\":\"L-8ETC\",\"packages\":\"next@16\",\"product\":\"telegram-uploader-bot-forced-join\",\"productRevision\":null,\"publishedAt\":\"2026-10-26T08:51:46.466Z\",\"site\":\"https://upfork.dev\",\"title\":\"Next.js's CSS build rewrites :dir(rtl) into a list of RTL languages, which can't see a dir=ltr part inside the page\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-8ETC\",\"version\":1,\"why\":\"\"}",
    "recordHash": "4dc944809848ea5215efe5af8e883f7b7d16d4e4f090f9329a5ad89a3c951257",
    "prevHash": "731492d65aafaaee7bb4aa035b86944218cf6c0d1ca5f3eb8545a1cfc0a7f44e",
    "entryHash": "db3ef0fde2e83282ff42b6e1fe481cee0beef7d375bcc39bc1a4cebaf6c538cc",
    "keyId": "k1",
    "signature": "sH2oNW9f3AQz7LKjhg28/CPVC6LAjAposHnTIel5+K8Pg+ZVbBUXeSJ+1O2hFONXeVChKwdoEhTvOhHRueMTDA==",
    "recordedAt": "2026-10-26T08:52:08.786466+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}