[{"name":"activity-notifications","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"Composer","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"Dialog","kind":"directory","size":0,"lastCommitHash":"fea2565ab71dc2046d36fec60eb4bcc8269be45d","lastCommitWhen":"2026-08-30T08:01:35+07:00","lastCommitMessage":"refactor: let dialog lists compose their own pagination tail\n"},{"name":"dialogs","kind":"directory","size":0,"lastCommitHash":"fea2565ab71dc2046d36fec60eb4bcc8269be45d","lastCommitWhen":"2026-08-30T08:01:35+07:00","lastCommitMessage":"refactor: let dialog lists compose their own pagination tail\n"},{"name":"dms","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"EditImageDialog","kind":"directory","size":0,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"EmojiPicker","kind":"directory","size":0,"lastCommitHash":"0d51a3cbe970ab4a6db9678099043f5498b3aec0","lastCommitWhen":"2026-08-20T19:46:26+07:00","lastCommitMessage":"chore: upgrade dependencies\n"},{"name":"ExternalEmbed","kind":"directory","size":0,"lastCommitHash":"693ee15b72619c4c098a35009f1009cafc059223","lastCommitWhen":"2026-08-22T21:30:45+07:00","lastCommitMessage":"fix: let the dm bubble tint show through link cards\n"},{"name":"forms","kind":"directory","size":0,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"hooks","kind":"directory","size":0,"lastCommitHash":"6cea647c1a275b48c5ce30ca702f96f02c80d925","lastCommitWhen":"2026-08-21T08:38:18+07:00","lastCommitMessage":"chore: reduce initial bundle size\n"},{"name":"ImageEmbed","kind":"directory","size":0,"lastCommitHash":"b25f4a5c9c68f258fbeb314bd443bc3a21d81967","lastCommitWhen":"2026-08-20T11:40:31+07:00","lastCommitMessage":"feat: add carousel paging controls\n"},{"name":"images","kind":"directory","size":0,"lastCommitHash":"d5a23f5aff72ea68f8aeb547146a5e1c3c9b7aeb","lastCommitWhen":"2026-08-19T10:57:00+07:00","lastCommitMessage":"fix: skip gallery offset on moderation-blurred posts\n"},{"name":"intents","kind":"directory","size":0,"lastCommitHash":"14115733d975ad1f0e21640f488b4cd7f703e998","lastCommitWhen":"2026-08-18T21:30:43+07:00","lastCommitMessage":"refactor: make HMR work again\n"},{"name":"Lightbox","kind":"directory","size":0,"lastCommitHash":"94a19daa5cb289a90f0ef90c1ab121aa8d4da806","lastCommitWhen":"2026-08-26T07:50:19+07:00","lastCommitMessage":"fix: toggle lightbox chrome on touch taps outside the image\n"},{"name":"List","kind":"directory","size":0,"lastCommitHash":"22a4905b6665eb311a5e5b8dae71e38164f25b63","lastCommitWhen":"2026-08-30T09:53:19+07:00","lastCommitMessage":"fix: correct regressions from the list state component migration\n"},{"name":"LockScroll","kind":"directory","size":0,"lastCommitHash":"14115733d975ad1f0e21640f488b4cd7f703e998","lastCommitWhen":"2026-08-18T21:30:43+07:00","lastCommitMessage":"refactor: make HMR work again\n"},{"name":"Menu","kind":"directory","size":0,"lastCommitHash":"d6e9a4d61cd50bece0a33e0310102ac71047a203","lastCommitWhen":"2026-08-20T15:55:59+07:00","lastCommitMessage":"feat: add profile feed filters\n"},{"name":"moderation","kind":"directory","size":0,"lastCommitHash":"fea2565ab71dc2046d36fec60eb4bcc8269be45d","lastCommitWhen":"2026-08-30T08:01:35+07:00","lastCommitMessage":"refactor: let dialog lists compose their own pagination tail\n"},{"name":"Post","kind":"directory","size":0,"lastCommitHash":"0393ac84668cb56b1a471c2a2a082871ad002f91","lastCommitWhen":"2026-08-30T11:35:31+07:00","lastCommitMessage":"feat: preview Tangled strings in composer\n"},{"name":"PostControls","kind":"directory","size":0,"lastCommitHash":"33bcfdf2c2e44829b9c2a44f77a03af8bd8eb19c","lastCommitWhen":"2026-08-28T12:37:14+07:00","lastCommitMessage":"refactor: hoist finally blocks out of the way of React Compiler\n\nReact Compiler cannot lower a `try` with a `finalizer` clause, so it silently skipped optimizing\nevery component and hook containing one — 13 sites, confirmed by running the compiler over `src/`.\n\nnone of the guarded bodies return or rethrow, so running the cleanup after the `try`/`catch` is\nequivalent. three of the sites were empty `finally {}` leftovers and are just gone.\n"},{"name":"PostFeed","kind":"directory","size":0,"lastCommitHash":"22a4905b6665eb311a5e5b8dae71e38164f25b63","lastCommitWhen":"2026-08-30T09:53:19+07:00","lastCommitMessage":"fix: correct regressions from the list state component migration\n"},{"name":"ProfileHoverCard","kind":"directory","size":0,"lastCommitHash":"14115733d975ad1f0e21640f488b4cd7f703e998","lastCommitWhen":"2026-08-18T21:30:43+07:00","lastCommitMessage":"refactor: make HMR work again\n"},{"name":"Prompt","kind":"directory","size":0,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"SearchAutocomplete","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"Shell","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"StarterPack","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"Toast","kind":"directory","size":0,"lastCommitHash":"4d12e02710a72590bbda202f96cf6118ac40fb35","lastCommitWhen":"2026-08-02T17:22:35+07:00","lastCommitMessage":"refactor: point icon slot call sites at the svg sprites\n"},{"name":"verification","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"web","kind":"directory","size":0,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"AccountList.css.ts","kind":"file","size":1894,"lastCommitHash":"317a153e7a4d272a605e99136afc93eee68e7402","lastCommitWhen":"2026-08-02T17:44:53+07:00","lastCommitMessage":"refactor: render the account list, error message, and select icons from svg sprites\n"},{"name":"AccountList.tsx","kind":"file","size":3839,"lastCommitHash":"d27e1b38ce6d5e649ac5c593077892c280e2cb43","lastCommitWhen":"2026-08-19T10:49:20+07:00","lastCommitMessage":"fix: cache account profiles between sessions\n"},{"name":"AppLanguageDropdown.css.ts","kind":"file","size":659,"lastCommitHash":"45233a2ebf5341f2cb90b330af1e571e824a74de","lastCommitWhen":"2026-07-22T10:54:01+07:00","lastCommitMessage":"refactor: port LoggedOut view to React DOM\n"},{"name":"AppLanguageDropdown.tsx","kind":"file","size":1597,"lastCommitHash":"4d12e02710a72590bbda202f96cf6118ac40fb35","lastCommitWhen":"2026-08-02T17:22:35+07:00","lastCommitMessage":"refactor: point icon slot call sites at the svg sprites\n"},{"name":"AvatarBubbles.css.ts","kind":"file","size":1196,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"AvatarBubbles.tsx","kind":"file","size":5205,"lastCommitHash":"0d51a3cbe970ab4a6db9678099043f5498b3aec0","lastCommitWhen":"2026-08-20T19:46:26+07:00","lastCommitMessage":"chore: upgrade dependencies\n"},{"name":"AvatarStack.css.ts","kind":"file","size":937,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"AvatarStack.tsx","kind":"file","size":1748,"lastCommitHash":"0eb0f2b9c07ea5820a4dd276425b11d147c4156c","lastCommitWhen":"2026-07-21T11:09:43+07:00","lastCommitMessage":"refactor: stop using `&&` to produce non-boolean values\n"},{"name":"BlockLink.tsx","kind":"file","size":6008,"lastCommitHash":"6ea41564576bbb0524eddbdc8ae78185e8949caa","lastCommitWhen":"2026-08-20T20:34:05+07:00","lastCommitMessage":"fix: pass post source through navigation state\n"},{"name":"BotAccountAlert.css.ts","kind":"file","size":481,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"BotAccountAlert.tsx","kind":"file","size":1973,"lastCommitHash":"14115733d975ad1f0e21640f488b4cd7f703e998","lastCommitWhen":"2026-08-18T21:30:43+07:00","lastCommitMessage":"refactor: make HMR work again\n"},{"name":"BotBadge.css.ts","kind":"file","size":465,"lastCommitHash":"97b2f5ac653dbb212061ade5111911d50a2bf022","lastCommitWhen":"2026-08-02T18:21:04+07:00","lastCommitMessage":"fix: restore the bot badge colour and size icons with svg attributes\n"},{"name":"BotBadge.tsx","kind":"file","size":1202,"lastCommitHash":"97b2f5ac653dbb212061ade5111911d50a2bf022","lastCommitWhen":"2026-08-02T18:21:04+07:00","lastCommitMessage":"fix: restore the bot badge colour and size icons with svg attributes\n"},{"name":"CenteredSpinner.css.ts","kind":"file","size":273,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"CenteredSpinner.tsx","kind":"file","size":860,"lastCommitHash":"ef0b43c776ad8c1fb6fa41341f6c38a53ec1b0af","lastCommitWhen":"2026-08-02T17:16:45+07:00","lastCommitMessage":"refactor: give the settings, post control, spinner, and empty state icon slots their own css classes\n"},{"name":"ClampedPostText.css.ts","kind":"file","size":796,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"ClampedPostText.tsx","kind":"file","size":1717,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"EditableBanner.css.ts","kind":"file","size":943,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"EditableBanner.tsx","kind":"file","size":2793,"lastCommitHash":"a1976966a7d0d0d12f163991a9fbf0a8ee2e6f09","lastCommitWhen":"2026-08-06T09:28:39+07:00","lastCommitMessage":"refactor: dissolve lib/strings and collapse lib/moderation\n"},{"name":"EditableUserAvatar.css.ts","kind":"file","size":938,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"EditableUserAvatar.tsx","kind":"file","size":3323,"lastCommitHash":"a1976966a7d0d0d12f163991a9fbf0a8ee2e6f09","lastCommitWhen":"2026-08-06T09:28:39+07:00","lastCommitMessage":"refactor: dissolve lib/strings and collapse lib/moderation\n"},{"name":"EmbedThumb.css.ts","kind":"file","size":883,"lastCommitHash":"c3517b78f0cb27c6c0c2d531e5f78c018e2a8cea","lastCommitWhen":"2026-08-06T10:09:13+07:00","lastCommitMessage":"refactor: split lib/constants and separate env from platform detection\n\nlib/constants.ts becomes lib/constants/ split by domain, imported directly rather than through a\nbarrel. env/index.ts was a re-export barrel over env/common.ts, so the build-time import.meta.env\nvalues move to env.ts and the browser detection moves to lib/browser/platform.ts, next to the\ninput-modality module that already consumed it.\n\nrenames along the way:\n\n- SUPPORTED_MIME_TYPES/SupportedMimeTypes to VIDEO_UPLOAD_MIME_TYPES/VideoUploadMimeType; the type\n  was plural for a single union member\n- MAX_GRAPHEME_LENGTH to MAX_POST_GRAPHEME_LENGTH, which sat unqualified beside the draft and dm\n  limits\n- PROD_DEFAULT_FEED, STAGING_DEFAULT_FEED, GIF_KLIPY_SEARCH and GIF_KLIPY_FEATURED to camel-case\n  builders; they take an arbitrary rkey or params rather than naming a constant\n"},{"name":"EmbedThumb.tsx","kind":"file","size":1990,"lastCommitHash":"ada98fd643f886eef0c375334bae35eb284292b9","lastCommitWhen":"2026-08-09T16:34:19+07:00","lastCommitMessage":"refactor: rely on React Compiler memoization\n"},{"name":"EmptyState.css.ts","kind":"file","size":912,"lastCommitHash":"ef0b43c776ad8c1fb6fa41341f6c38a53ec1b0af","lastCommitWhen":"2026-08-02T17:16:45+07:00","lastCommitMessage":"refactor: give the settings, post control, spinner, and empty state icon slots their own css classes\n"},{"name":"EmptyState.tsx","kind":"file","size":2486,"lastCommitHash":"29fe55d0d45e5e648d48ef4d144ae4b327956424","lastCommitWhen":"2026-08-02T18:59:19+07:00","lastCommitMessage":"refactor: let the FAB and empty state own their icon styling\n\nFAB takes a component rather than an element and applies its own class, which drops three\nbyte-identical copies of \"the fab glyph is 24px white\" from call sites. EmptyState resolves\n`iconColor` against the palette itself, so the prop is a typed key instead of a bare string and\n`colors` no longer has to be imported by its callers.\n\nthe rest is post-migration tidying: a dead class export and a duplicate of `icon` in the post\ncontrols, five never-imported assets, `circleInfoIcon` moved to the stylesheet its only consumer\nalready imports, the pill glyph size collapsed back to the single constant the avatar branch reads,\nand classes renamed after the role they fill rather than the glyph that happened to reach them\nfirst — the codemod's `2` suffixes carried no meaning, and one of them had a dots button wearing a\nclass named for an emoji picker.\n"},{"name":"Error.css.ts","kind":"file","size":1026,"lastCommitHash":"1fbb5acb6ac764cce58232859ef3415cb85aac90","lastCommitWhen":"2026-08-30T07:27:16+07:00","lastCommitMessage":"refactor: migrate messages and notifications lists to the new list state components\n"},{"name":"Error.tsx","kind":"file","size":1384,"lastCommitHash":"05f9fbb0e2bdbbb461e69a71caebfd5ca8a3cbb2","lastCommitWhen":"2026-08-06T09:23:55+07:00","lastCommitMessage":"refactor: group lib by domain\n"},{"name":"ErrorBoundary.css.ts","kind":"file","size":124,"lastCommitHash":"cdea89287f9e25889393cc97699358fa0e253dc3","lastCommitWhen":"2026-07-25T08:06:31+07:00","lastCommitMessage":"refactor: move view/com/util components into components/\n\nthese nine components are each imported from three or more unrelated areas, so under the\nreach rule they belong in the shared tree. flattens the error/, fab/, and load-latest/\nsingle-file subdirectories on the way in.\n"},{"name":"ErrorBoundary.tsx","kind":"file","size":985,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"ErrorMessage.css.ts","kind":"file","size":869,"lastCommitHash":"317a153e7a4d272a605e99136afc93eee68e7402","lastCommitWhen":"2026-08-02T17:44:53+07:00","lastCommitMessage":"refactor: render the account list, error message, and select icons from svg sprites\n"},{"name":"ErrorMessage.tsx","kind":"file","size":936,"lastCommitHash":"317a153e7a4d272a605e99136afc93eee68e7402","lastCommitWhen":"2026-08-02T17:44:53+07:00","lastCommitMessage":"refactor: render the account list, error message, and select icons from svg sprites\n"},{"name":"ErrorScreen.css.ts","kind":"file","size":1057,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"ErrorScreen.tsx","kind":"file","size":1831,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"FAB.css.ts","kind":"file","size":837,"lastCommitHash":"29fe55d0d45e5e648d48ef4d144ae4b327956424","lastCommitWhen":"2026-08-02T18:59:19+07:00","lastCommitMessage":"refactor: let the FAB and empty state own their icon styling\n\nFAB takes a component rather than an element and applies its own class, which drops three\nbyte-identical copies of \"the fab glyph is 24px white\" from call sites. EmptyState resolves\n`iconColor` against the palette itself, so the prop is a typed key instead of a bare string and\n`colors` no longer has to be imported by its callers.\n\nthe rest is post-migration tidying: a dead class export and a duplicate of `icon` in the post\ncontrols, five never-imported assets, `circleInfoIcon` moved to the stylesheet its only consumer\nalready imports, the pill glyph size collapsed back to the single constant the avatar branch reads,\nand classes renamed after the role they fill rather than the glyph that happened to reach them\nfirst — the codemod's `2` suffixes carried no meaning, and one of them had a dots button wearing a\nclass named for an emoji picker.\n"},{"name":"FAB.tsx","kind":"file","size":910,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"FeedCard.css.ts","kind":"file","size":1974,"lastCommitHash":"e65680f963dcf7acd64ab5f3d151dcdfcfba6ece","lastCommitWhen":"2026-08-01T10:25:17+07:00","lastCommitMessage":"feat: disable navigation in embed previews\n"},{"name":"FeedCard.tsx","kind":"file","size":8890,"lastCommitHash":"7a1b320b62d605f6c86ca42aff46db8012ae4000","lastCommitWhen":"2026-08-30T06:52:52+07:00","lastCommitMessage":"fix: stop skeleton card rows stretching to fill leftover space\n"},{"name":"FeedInterstitials.css.ts","kind":"file","size":3797,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"FeedInterstitials.tsx","kind":"file","size":7035,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"InterestTabs.tsx","kind":"file","size":1383,"lastCommitHash":"ada98fd643f886eef0c375334bae35eb284292b9","lastCommitWhen":"2026-08-09T16:34:19+07:00","lastCommitMessage":"refactor: rely on React Compiler memoization\n"},{"name":"LikedByList.tsx","kind":"file","size":2217,"lastCommitHash":"22a4905b6665eb311a5e5b8dae71e38164f25b63","lastCommitWhen":"2026-08-30T09:53:19+07:00","lastCommitMessage":"fix: correct regressions from the list state component migration\n"},{"name":"ListCard.css.ts","kind":"file","size":1597,"lastCommitHash":"e65680f963dcf7acd64ab5f3d151dcdfcfba6ece","lastCommitWhen":"2026-08-01T10:25:17+07:00","lastCommitMessage":"feat: disable navigation in embed previews\n"},{"name":"ListCard.tsx","kind":"file","size":6903,"lastCommitHash":"7a1b320b62d605f6c86ca42aff46db8012ae4000","lastCommitWhen":"2026-08-30T06:52:52+07:00","lastCommitMessage":"fix: stop skeleton card rows stretching to fill leftover space\n"},{"name":"LoadLatestBtn.css.ts","kind":"file","size":1721,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"LoadLatestBtn.tsx","kind":"file","size":1060,"lastCommitHash":"05f9fbb0e2bdbbb461e69a71caebfd5ca8a3cbb2","lastCommitWhen":"2026-08-06T09:23:55+07:00","lastCommitMessage":"refactor: group lib by domain\n"},{"name":"LoadMoreRetryBtn.css.ts","kind":"file","size":804,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"LoadMoreRetryBtn.tsx","kind":"file","size":595,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"MediaPreview.css.ts","kind":"file","size":1221,"lastCommitHash":"04e5aa725b5da8e618480d0f7dd60a3a0dc91a1d","lastCommitWhen":"2026-08-12T10:09:07+07:00","lastCommitMessage":"fix: blur moderated images on notification\n"},{"name":"MediaPreview.tsx","kind":"file","size":3506,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"MissingFeed.css.ts","kind":"file","size":1690,"lastCommitHash":"29fe55d0d45e5e648d48ef4d144ae4b327956424","lastCommitWhen":"2026-08-02T18:59:19+07:00","lastCommitMessage":"refactor: let the FAB and empty state own their icon styling\n\nFAB takes a component rather than an element and applies its own class, which drops three\nbyte-identical copies of \"the fab glyph is 24px white\" from call sites. EmptyState resolves\n`iconColor` against the palette itself, so the prop is a typed key instead of a bare string and\n`colors` no longer has to be imported by its callers.\n\nthe rest is post-migration tidying: a dead class export and a duplicate of `icon` in the post\ncontrols, five never-imported assets, `circleInfoIcon` moved to the stylesheet its only consumer\nalready imports, the pill glyph size collapsed back to the single constant the avatar branch reads,\nand classes renamed after the role they fill rather than the glyph that happened to reach them\nfirst — the codemod's `2` suffixes carried no meaning, and one of them had a dots button wearing a\nclass named for an emoji picker.\n"},{"name":"MissingFeed.tsx","kind":"file","size":3946,"lastCommitHash":"a1976966a7d0d0d12f163991a9fbf0a8ee2e6f09","lastCommitWhen":"2026-08-06T09:28:39+07:00","lastCommitMessage":"refactor: dissolve lib/strings and collapse lib/moderation\n"},{"name":"MyLists.tsx","kind":"file","size":1715,"lastCommitHash":"22a4905b6665eb311a5e5b8dae71e38164f25b63","lastCommitWhen":"2026-08-30T09:53:19+07:00","lastCommitMessage":"fix: correct regressions from the list state component migration\n"},{"name":"NavigationDisabled.tsx","kind":"file","size":1074,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"NewskieDialog.css.ts","kind":"file","size":1123,"lastCommitHash":"29fe55d0d45e5e648d48ef4d144ae4b327956424","lastCommitWhen":"2026-08-02T18:59:19+07:00","lastCommitMessage":"refactor: let the FAB and empty state own their icon styling\n\nFAB takes a component rather than an element and applies its own class, which drops three\nbyte-identical copies of \"the fab glyph is 24px white\" from call sites. EmptyState resolves\n`iconColor` against the palette itself, so the prop is a typed key instead of a bare string and\n`colors` no longer has to be imported by its callers.\n\nthe rest is post-migration tidying: a dead class export and a duplicate of `icon` in the post\ncontrols, five never-imported assets, `circleInfoIcon` moved to the stylesheet its only consumer\nalready imports, the pill glyph size collapsed back to the single constant the avatar branch reads,\nand classes renamed after the role they fill rather than the glyph that happened to reach them\nfirst — the codemod's `2` suffixes carried no meaning, and one of them had a dots button wearing a\nclass named for an emoji picker.\n"},{"name":"NewskieDialog.tsx","kind":"file","size":3099,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"PlayButtonIcon.css.ts","kind":"file","size":887,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"PlayButtonIcon.tsx","kind":"file","size":574,"lastCommitHash":"97b2f5ac653dbb212061ade5111911d50a2bf022","lastCommitWhen":"2026-08-02T18:21:04+07:00","lastCommitMessage":"fix: restore the bot badge colour and size icons with svg attributes\n"},{"name":"PostContent.css.ts","kind":"file","size":158,"lastCommitHash":"be5e07aec170717a8ffe36a7bd66bbecbecf7fc2","lastCommitWhen":"2026-07-11T20:19:34+07:00","lastCommitMessage":"chore: remove comments and JSDoc from css.ts files\n"},{"name":"PostContent.tsx","kind":"file","size":2564,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"PostLayout.const.ts","kind":"file","size":261,"lastCommitHash":"49d5a5efa47fba27176a4280f56bfcdaeb87e003","lastCommitWhen":"2026-07-23T12:11:33+07:00","lastCommitMessage":"refactor: drop react-native and the ALF design system\n"},{"name":"PostLayout.css.ts","kind":"file","size":1644,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"PostLayout.tsx","kind":"file","size":2135,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"PostMeta.css.ts","kind":"file","size":667,"lastCommitHash":"cdea89287f9e25889393cc97699358fa0e253dc3","lastCommitWhen":"2026-07-25T08:06:31+07:00","lastCommitMessage":"refactor: move view/com/util components into components/\n\nthese nine components are each imported from three or more unrelated areas, so under the\nreach rule they belong in the shared tree. flattens the error/, fab/, and load-latest/\nsingle-file subdirectories on the way in.\n"},{"name":"PostMeta.tsx","kind":"file","size":4857,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"PostNumber.css.ts","kind":"file","size":660,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"PostNumber.tsx","kind":"file","size":1080,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"PreviewableUserAvatar.tsx","kind":"file","size":3185,"lastCommitHash":"57f31dc5defbff35609775e021455b49e2d47f78","lastCommitWhen":"2026-08-30T11:56:50+07:00","lastCommitMessage":"refactor: prioritize handles across the interface\n"},{"name":"ProfileBadges.css.ts","kind":"file","size":539,"lastCommitHash":"65f662ba7b12add7bc9a12eeef3c132de06260d0","lastCommitWhen":"2026-08-02T17:59:17+07:00","lastCommitMessage":"refactor: colour the verification badge with a css class instead of a fill prop\n"},{"name":"ProfileBadges.tsx","kind":"file","size":2166,"lastCommitHash":"97b2f5ac653dbb212061ade5111911d50a2bf022","lastCommitWhen":"2026-08-02T18:21:04+07:00","lastCommitMessage":"fix: restore the bot badge colour and size icons with svg attributes\n"},{"name":"ProgressCircle.tsx","kind":"file","size":2198,"lastCommitHash":"10647ee68d04adb3be3e0602786eaa20ddcb620e","lastCommitWhen":"2026-07-04T14:05:24+07:00","lastCommitMessage":"refactor: rename kebab-case components to PascalCase\n"},{"name":"RichText.css.ts","kind":"file","size":1078,"lastCommitHash":"1dc62c74461ad308899f8b05e1ed0f31f2e3b32d","lastCommitWhen":"2026-08-05T10:31:11+07:00","lastCommitMessage":"feat: show trend descriptions and post counts\n\nreplaces the category label and the hot/new/age pill with the trend\ndescription and its post count, and moves the rank into its own leading\ncolumn. dropping the freshness badge also drops the per-minute tick that\nre-rendered every row.\n"},{"name":"RichText.tsx","kind":"file","size":4967,"lastCommitHash":"480f2ff027410d05ed29b298fbdd2cdfdeb08bd1","lastCommitWhen":"2026-08-26T14:12:27+07:00","lastCommitMessage":"feat: thread numbering badges in feed posts\n"},{"name":"RichTextTag.tsx","kind":"file","size":5927,"lastCommitHash":"14115733d975ad1f0e21640f488b4cd7f703e998","lastCommitWhen":"2026-08-18T21:30:43+07:00","lastCommitMessage":"refactor: make HMR work again\n"},{"name":"RouteLoadingScreen.tsx","kind":"file","size":609,"lastCommitHash":"6cea647c1a275b48c5ce30ca702f96f02c80d925","lastCommitWhen":"2026-08-21T08:38:18+07:00","lastCommitMessage":"chore: reduce initial bundle size\n"},{"name":"SearchError.css.ts","kind":"file","size":636,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"SearchError.tsx","kind":"file","size":627,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"Select.css.ts","kind":"file","size":4251,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"Select.tsx","kind":"file","size":6420,"lastCommitHash":"828fa3c51d18bfb0c6c9cdf2dc98043c500749bd","lastCommitWhen":"2026-08-13T21:56:40+07:00","lastCommitMessage":"refactor: deopt RC from composable components\n"},{"name":"SettingsCards.css.ts","kind":"file","size":5069,"lastCommitHash":"ef0b43c776ad8c1fb6fa41341f6c38a53ec1b0af","lastCommitWhen":"2026-08-02T17:16:45+07:00","lastCommitMessage":"refactor: give the settings, post control, spinner, and empty state icon slots their own css classes\n"},{"name":"SettingsCards.tsx","kind":"file","size":11259,"lastCommitHash":"828fa3c51d18bfb0c6c9cdf2dc98043c500749bd","lastCommitWhen":"2026-08-13T21:56:40+07:00","lastCommitMessage":"refactor: deopt RC from composable components\n"},{"name":"sharing.ts","kind":"file","size":1113,"lastCommitHash":"23da4d1f1cc094919c885c6d769ca3c3fa6df4a4","lastCommitWhen":"2026-08-06T09:20:25+07:00","lastCommitMessage":"refactor: move feature code out of lib\n"},{"name":"Spinner.css.ts","kind":"file","size":696,"lastCommitHash":"4d12e02710a72590bbda202f96cf6118ac40fb35","lastCommitWhen":"2026-08-02T17:22:35+07:00","lastCommitMessage":"refactor: point icon slot call sites at the svg sprites\n"},{"name":"Spinner.tsx","kind":"file","size":1097,"lastCommitHash":"ef0b43c776ad8c1fb6fa41341f6c38a53ec1b0af","lastCommitWhen":"2026-08-02T17:16:45+07:00","lastCommitMessage":"refactor: give the settings, post control, spinner, and empty state icon slots their own css classes\n"},{"name":"Stack.css.ts","kind":"file","size":544,"lastCommitHash":"a4f91111c90c4d4914633515d54af7af1815f8c8","lastCommitWhen":"2026-07-26T07:37:24+07:00","lastCommitMessage":"refactor: order shared option objects by call lifecycle\n\norder the option bags of recipe(), useQuery()/useInfiniteQuery(), useMutation(),\nand the atcute client by call lifecycle — identity, gating, work, shaping,\ncallbacks — instead of alphabetically. short scalars read first and multi-line\nfunction bodies settle at the bottom.\n\nwithin a compound variant entry, matchers stay alphabetical and `style` goes\nlast, so the payload follows what it matches on.\n"},{"name":"Stack.tsx","kind":"file","size":494,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"SuggestedFollowsDialog.css.ts","kind":"file","size":1579,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"SuggestedFollowsDialog.tsx","kind":"file","size":6423,"lastCommitHash":"ada98fd643f886eef0c375334bae35eb284292b9","lastCommitWhen":"2026-08-09T16:34:19+07:00","lastCommitMessage":"refactor: rely on React Compiler memoization\n"},{"name":"Tabs.css.ts","kind":"file","size":2398,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"Tabs.tsx","kind":"file","size":8486,"lastCommitHash":"f55f4d4e75187ebb0591296a2420cd5833ed9735","lastCommitWhen":"2026-08-22T11:37:47+07:00","lastCommitMessage":"feat: add profile collections tab\n"},{"name":"TabScroller.css.ts","kind":"file","size":2597,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"TabScroller.tsx","kind":"file","size":7366,"lastCommitHash":"273b9894e50e836c175fffc3bbed944f29b58995","lastCommitWhen":"2026-08-25T21:14:16+07:00","lastCommitMessage":"refactor: trim React Compiler output\n"},{"name":"Text.css.ts","kind":"file","size":3698,"lastCommitHash":"cd80d1ef1823028210fca5915a450c1a7a56cf1b","lastCommitWhen":"2026-08-06T09:53:39+07:00","lastCommitMessage":"refactor: move generic utilities into src/lib/utils\n\ncollects the domain-agnostic helpers that were scattered across the top level of\nsrc/lib, and flattens src/lib/async into the same directory.\n\nurl.ts and download.ts were mixed: toNiceDomain names the bluesky service, and\ndownloadImage goes through the bsky cdn. both move out to the domain directories\nthat already hold their neighbours, leaving the rest generic.\n"},{"name":"Text.tsx","kind":"file","size":2462,"lastCommitHash":"9dbe77b66bcddf9f2ab2cb09fce2e8023432253f","lastCommitWhen":"2026-08-13T22:23:16+07:00","lastCommitMessage":"refactor: deopt a few more components from RC\n"},{"name":"TextField.css.ts","kind":"file","size":2026,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"TextField.tsx","kind":"file","size":5373,"lastCommitHash":"828fa3c51d18bfb0c6c9cdf2dc98043c500749bd","lastCommitWhen":"2026-08-13T21:56:40+07:00","lastCommitMessage":"refactor: deopt RC from composable components\n"},{"name":"TimeElapsed.tsx","kind":"file","size":732,"lastCommitHash":"09d9d607df35fd5bf0d1bcdff10f344deaa221bf","lastCommitWhen":"2026-08-13T09:01:23+07:00","lastCommitMessage":"chore: don't rely on global React.* types\n"},{"name":"Tooltip.css.ts","kind":"file","size":702,"lastCommitHash":"011bd774d734e51d1cadc5617e9003ae4838caa4","lastCommitWhen":"2026-07-18T22:45:35+07:00","lastCommitMessage":"refactor: sort css properties by concentric order\n"},{"name":"Tooltip.tsx","kind":"file","size":1287,"lastCommitHash":"9dbe77b66bcddf9f2ab2cb09fce2e8023432253f","lastCommitWhen":"2026-08-13T22:23:16+07:00","lastCommitMessage":"refactor: deopt a few more components from RC\n"},{"name":"TrendingInterstitial.css.ts","kind":"file","size":646,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"TrendingInterstitial.tsx","kind":"file","size":2874,"lastCommitHash":"01506e525f657a93b953a29e293201bd569624c9","lastCommitWhen":"2026-08-26T14:12:25+07:00","lastCommitMessage":"fix: overfetch trends before muted word filtering\n"},{"name":"UserAvatar.css.ts","kind":"file","size":2159,"lastCommitHash":"b3d2bb52920dfa44d3bff11f0d67fd05fb0beb79","lastCommitWhen":"2026-08-27T14:48:43+07:00","lastCommitMessage":"refactor: move layered helper out of layers.css.ts\n"},{"name":"UserAvatar.tsx","kind":"file","size":8828,"lastCommitHash":"bd4ccbeb1089ed599cbbaa3006fe4766016ab0f2","lastCommitWhen":"2026-08-06T09:31:34+07:00","lastCommitMessage":"refactor: rename misleading lib functions and files\n"},{"name":"UserBanner.css.ts","kind":"file","size":548,"lastCommitHash":"46e55a1a94b193c48f155e5ddc6cd17921c0c0cb","lastCommitWhen":"2026-08-23T20:14:53+07:00","lastCommitMessage":"feat: pin a header to the profile screen\n"},{"name":"UserBanner.tsx","kind":"file","size":728,"lastCommitHash":"95d463cf7ca0e7a81a9eb5384384dfea43479fc9","lastCommitWhen":"2026-07-03T10:43:23+07:00","lastCommitMessage":"chore: alter package order sorting\n"},{"name":"WhoCanReply.css.ts","kind":"file","size":776,"lastCommitHash":"56af180b3deefa63248f9d1ff4037d2e93a0a198","lastCommitWhen":"2026-08-02T17:53:49+07:00","lastCommitMessage":"refactor: render direct icon call sites from svg sprites via css classes\n"},{"name":"WhoCanReply.tsx","kind":"file","size":7911,"lastCommitHash":"bd4ccbeb1089ed599cbbaa3006fe4766016ab0f2","lastCommitWhen":"2026-08-06T09:31:34+07:00","lastCommitMessage":"refactor: rename misleading lib functions and files\n"}]