Skip to content

Inbox Done group silently drops every finished task past 20 and the count hides it #2042

Closed

Description

@HugoXK

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 returns needs, progress, done and nothing else, so the caller cannot know how many rows were dropped.
  • :654 — the header count is groups[group.id].length, i.e. the post-cut length.
  • Two sources share those 20 slots: finished/cancelled tasks (:301, 7-day window KEEP_MS at :23/:202) and one "latest Session" card per Bot (:350).
  • The empty state (:656, text at GROUPS:61 Nothing 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: inboxModel also returns doneTotal (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.
  • needs and progress counts and rows are unchanged (they are not capped).

Acceptance (red first)

core/test/inbox.test.js:

  1. 25 finished tasks inside the window → done.length === 20 and doneTotal === 25; the dialog's Done section shows exactly 5 more not shown.
  2. 20 or fewer → no more-line, and doneTotal === done.length.
  3. 0 → the existing Nothing finished in the last 7 days. empty state, unchanged.
  4. needs/progress rows 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.js and patches/ds-bot/0008-client-bundle.patch regenerated by generate, docs/subsystems/core-client.md row, 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

  1. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Release

    Written-by: FlyBot Lead
    Released: 4f6f3f39cbed481e9d7bde5dfa09b6c2
    Reason: shipped in #2044 (merged 3eca1e5)
    At: 2026-11-01T14:10:48Z

  2. added 3 commits that reference this issue on Nov 1, 2026
    3eca1e5
    3ae312a
    70ca435
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions