Repository navigation
Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: c4b84bba698f42998b58c70826c195d2
Branch: dev/2-feedback-error-list-show-more
Base: 03a1253
At: 2026-11-03T05:00:30Z
A Settings → Feedback error report that holds sixty errors draws eight rows, titles itself Recent errors · 60, and offers no way to reach the other fifty-two. The rows are cut by a literal window in core/src/client/feedback.js — const shown = entries.slice(0, 8) at line 90 — and nothing in that section draws a control past it — so the count in the title promises rows the list cannot show, and the reader has no hint that the list is cut.
Reproduction
Host-side probe against main at 03a12530, mounting the settings Feedback page with a report of sixty errors:
PROBE_FEEDBACK {"hostTotal":60,"title":"Recent errors · 60","rowsDrawn":8,"moreControls":0,"numberOfRowsOnScreen":8}
hostTotal 60, rowsDrawn 8, moreControls 0: the page knows about all sixty and draws eight, with no control to see the rest. The same shape holds for any report longer than eight — the title says the true count, the list stops at eight.
Expected behaviour
- A report longer than eight rows draws the same eight rows, then one control under them (a
bt-fb-morebutton witharia-expanded) that expands the list to every error already loaded and readsShow lessonce expanded, folding back to eight. - A report of eight or fewer rows draws no control at all, and keeps its title and rows exactly as they are today.
- Nothing else in the section moves: the title still reads
Recent errors · {count}, and the rows themselves are unchanged.
Scope
Written files (4 non-generated):
core/src/client/feedback.js— theentries.slice(0, 8)window, anallErrorsstate, and the control.core/test/feedback-errors-more.test.js— new: sixty errors draw eight rows and offer the rest; expanding draws the errors past the eighth and folding returns; eight or fewer draw no control and keep the title.docs/subsystems/core-client.md— one line on the control.changelog.d/2266-error-list-show-more.fixed.md— one line.
Generated, by the repository's own generate step: core/client.js, patches/ds-bot/0001-core-fixes.patch, patches/ds-bot/0008-client-bundle.patch, patches/ds-bot/files/test/feedback-errors-more.test.js. Because core/client.js and the client bundle move, this is a core-lane change and takes its turn behind the core pull requests already open.
Triage
risk-tier computed on the same rule function the gate uses: T1 — every non-generated path is T1 (changelog.d/…, core/client.js, core/src/client/feedback.js, core/test/feedback-errors-more.test.js, patches/ds-bot/0001-core-fixes.patch, 0008-client-bundle.patch, files/test/feedback-errors-more.test.js), docs/subsystems/core-client.md is T0. 220 changed lines over four non-generated files.
Already checked for a duplicate
Searched before opening: feedback in titles (2, both closed and unrelated: #1054 friend invite, #1021 join feedback), Recent errors (1, closed #1347, a settings-drawer click-through), Show more (7, all closed; #2249/#2263/#2259/#2051 are the workflow card and held-task lists, not the settings error report), error list (4, closed #987/#989/#992/#993, which split the list error from the share error — a different slot, not the row cap). On main at 03a12530, core/src/client/feedback.js:90 is const shown = entries.slice(0, 8); the file contains no Show more, no Show less, and no bt-fb-more: the cap is there and the control does not exist yet.
Activity
client: the Settings error list offers the remaining errors behind Sh…