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: 4f6f3f39cbed481e9d7bde5dfa09b6c2
Branch: dev/2-inbox-done-total
Base: 00a3e67
At: 2026-11-01T13:12:18Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
What happens today
The Inbox dialog groups cards into Needs / Progress / Done. The Done group is capped at 20 rows, and the number in its header is computed after the cut, so it reports 20 no matter how many tasks actually finished inside the 7-day window.
core/src/client/inbox.js:25—const DONE_MAX = 20.:358—return { needs: …, progress: …, done: done.sort(newest).slice(0, DONE_MAX) }: the model returnsneeds,progress,doneand nothing else, so the caller cannot know how many rows were dropped.:654— the header count isgroups[group.id].length, i.e. the post-cut length.- Two sources share those 20 slots: finished/cancelled tasks (
:301, 7-day windowKEEP_MSat:23/:202) and one "latest Session" card per Bot (:350). - The empty state (
:656, text atGROUPS:61Nothing finished in the last 7 days.) only appears when the group is completely empty, so a truncated group still looks complete.
Reproduction (live main 00a3e67a)
Model-only probe (esbuild bundle of the real inbox.js + a vm, calling the exported inboxModel), 25 finished tasks inside the window:
tasks given : 25
done rows drawn : 20
header count text: 20
total in model : MISSING
newest kept : finished-00 | oldest kept: finished-19
dropped silently : finished-20, finished-21, finished-22, finished-23, finished-24
Expected
- The cap may stay, but the reader must be told what it hides:
inboxModelalso returnsdoneTotal(the count before the cut). - The Done group draws one line after its rows when
doneTotal > done.length:{count} more not shown— the key already exists (core/src/client/i18n.js:228), and the project board already uses that shape (project-board.js:572). - At 20 or fewer rows the line is absent; the empty state keeps its current text.
needsandprogresscounts and rows are unchanged (they are not capped).
Acceptance (red first)
core/test/inbox.test.js:
- 25 finished tasks inside the window →
done.length === 20anddoneTotal === 25; the dialog's Done section shows exactly5 more not shown. - 20 or fewer → no more-line, and
doneTotal === done.length. - 0 → the existing
Nothing finished in the last 7 days.empty state, unchanged. needs/progressrows and header counts are byte-identical to today for the same input.
Scope
core/src/client/inbox.js(doneTotal+ the line),core/test/inbox.test.js,core/client.jsandpatches/ds-bot/0008-client-bundle.patchregenerated bygenerate,docs/subsystems/core-client.mdrow, changelog fragment.- Out of scope: changing
DONE_MAX, adding a "show all" control, touching the Session-card source, or any host change.
Dedupe
Searched before opening: DONE_MAX → 0 issues (open or closed); Done inbox 20 → 41 results scanned, nearest #471 (inbox phase 2 umbrella, does not mention a cap), #1305 (test fixture ageing, closed), #472/#349 (step 1 delivery) — none about the silent truncation. Not in the Product backlog before this report.
Activity
HugoXK commentedon Nov 1, 2026
Release
Written-by: FlyBot Lead
Released: 4f6f3f39cbed481e9d7bde5dfa09b6c2
Reason: shipped in #2044 (merged 3eca1e5)
At: 2026-11-01T14:10:48Z
Inbox Done group silently drops every finished task past 20 and the c…
Inbox Done group opens the finished rows past the cap (ThinkFlowLab#2050
Open the Inbox's hidden finished rows from its Done group (ThinkFlowL…