mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
* feat(feeds): add pretext-backed item sizing across board, catalog, and thread replies * feat: finalize pretext feed sizing rollout * fix(catalog): raise multiboard viewport buffer * fix(board): preserve pretext query overrides
79 lines
6.1 KiB
JSON
79 lines
6.1 KiB
JSON
{
|
|
"task": "pretext-feed-sizing",
|
|
"last_updated": "2026-04-02",
|
|
"items": [
|
|
{
|
|
"id": "F001",
|
|
"priority": 1,
|
|
"status": "completed",
|
|
"description": "Benchmark and harden Pretext-backed reply virtualization on the real thread reply Virtuoso path so the branch has trustworthy baseline data.",
|
|
"verification": [
|
|
"Open `?e2e=pretext-benchmark&variant=production&mode=dom&count=1200&seed=42` and run the scroll scenario on desktop and mobile.",
|
|
"Open `?e2e=pretext-benchmark&variant=production&mode=item-size&count=1200&seed=42` and compare rect calls, duration, long tasks, and visible estimate error."
|
|
],
|
|
"files": [
|
|
"src/components/post-desktop/post-desktop.tsx",
|
|
"src/components/post-mobile/post-mobile.tsx",
|
|
"src/e2e/pretext-benchmark-harness.tsx",
|
|
"src/hooks/use-reply-height-estimates.ts",
|
|
"src/lib/utils/pretext-height-estimates.ts",
|
|
"src/views/post/post.tsx"
|
|
],
|
|
"notes": "Reply virtualization is now production-credible on both desktop and mobile. Desktop production harness: `dom` -> `item-size` reduced rect reads from 2875 to 472 while keeping visible error low (`11.3px` mean, `30px` max). Mobile production harness: `dom` -> `item-size` reduced rect reads from 5059 to 1433, duration from 16863ms to 13452ms, max frame from 100.1ms to 59ms, and slow frames over 16ms from 227 to 99. The mobile follow-up audit sampled all 1200 replies and found `722411px` estimated vs `726218px` actual total height, so the Pretext reply tree is within about `0.5%` of the rendered total."
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"priority": 2,
|
|
"status": "completed",
|
|
"description": "Add a benchmarkable Pretext experiment for board feed Virtuoso items and determine whether feed cards are a better production target than thread replies.",
|
|
"verification": [
|
|
"Run a deterministic board-feed benchmark on `board.tsx` item virtualization for `dom`, `estimates`, and `item-size` modes.",
|
|
"Confirm whether item measurement reads and frame metrics improve materially on desktop and mobile."
|
|
],
|
|
"files": [
|
|
"src/lib/utils/pretext-height-estimates.ts",
|
|
"src/hooks/use-reply-height-estimates.ts",
|
|
"src/views/board/board.tsx",
|
|
"src/views/post/post.tsx",
|
|
"src/components/post-desktop/post-desktop.tsx",
|
|
"src/components/post-mobile/post-mobile.tsx",
|
|
"src/e2e/pretext-benchmark-harness.tsx"
|
|
],
|
|
"notes": "The board path was the hardest rollout surface, but it is now in a shippable state. Earlier live profiling found multiple board issues that are now addressed: desktop feed cards were still subtracting `14px` per preview reply even after the preview-reply estimator itself had become accurate, board preview replies were still rendering under `content-visibility:auto` while the feed card relied on Pretext sizing, the branch had lost `master` commit `99c0bbfac perf(board): reduce mobile reverse-scroll jank`, the mobile board-card preview calibration was massively over-subtracting once preview replies were present, and mobile multiboard `off` mode was still passing `itemSize={undefined}`, which overrides React Virtuoso's default DOM measurer. Board and catalog now only pass `itemSize` when explicit `item-size` mode is active, so the fallback path measures correctly again. Final matched live mobile A/B probes show the worktree no longer trails master on `/all`, and `/biz` keeps the Pretext sizing path active while matching the same visible card heights and total scroll height as master."
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"priority": 3,
|
|
"status": "completed",
|
|
"description": "Evaluate catalog virtualization for a Pretext-backed sizing strategy if board feed results are promising or if catalog-specific card layout needs a separate model.",
|
|
"verification": [
|
|
"Benchmark catalog Virtuoso rows under the same `dom` vs Pretext sizing modes.",
|
|
"Verify desktop and mobile catalog scrolling in a fresh browser session."
|
|
],
|
|
"files": [
|
|
"src/views/catalog/catalog.tsx",
|
|
"src/components/catalog-row/catalog-row.tsx",
|
|
"src/e2e/pretext-benchmark-harness.tsx"
|
|
],
|
|
"notes": "Catalog rows now use a dedicated Pretext estimator plus `item-size` by default, with pure derived matched-filter colors instead of render-time store writes. Benchmark pass: desktop catalog reduced rect reads from 439 to 73 with a small duration win (2272ms -> 2010ms), and mobile reduced rect reads from 1349 to 217 with comparable scroll timing."
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"priority": 4,
|
|
"status": "completed",
|
|
"description": "Prepare a production-safe rollout plan once a Pretext path shows a clear performance win, including feature-flag strategy, regression checks, and default-mode decisions.",
|
|
"verification": [
|
|
"Run `corepack yarn build`, `corepack yarn lint`, `corepack yarn type-check`, `corepack yarn doctor`, and the relevant browser benchmark flows.",
|
|
"Document whether the winning mode should remain opt-in, ship mobile-first, or replace DOM sizing by default."
|
|
],
|
|
"files": [
|
|
"src/lib/utils/pretext-height-estimates.ts",
|
|
"src/hooks/use-reply-height-estimates.ts",
|
|
"src/views/board/board.tsx",
|
|
"src/views/catalog/catalog.tsx"
|
|
],
|
|
"notes": "The rollout decision is now clear. The current verification set passes (`corepack yarn build`, `corepack yarn lint` with existing warnings only, `corepack yarn type-check`, `corepack yarn doctor` at the repo baseline `86/100`, and `corepack yarn test --run`), deterministic benchmark matrices still show the Pretext wins on catalog/replies/board, and the last board-specific fallback bug on mobile multiboard feeds is fixed. Final live A/B on the RPC-backed mobile `/all` sessions shows the worktree at parity or slightly better than master on the same visible cards, while `/biz` keeps the Pretext path active without the earlier stutter regression. The retained query flags (`pretextFeed`, `pretextCatalog`, `pretextReplies`) still provide an escape hatch, but the branch itself is ready for merge review."
|
|
}
|
|
]
|
|
}
|