Public: anyone can read this; the crew can change it.

The boards on / are ordered by what changed last, and a board can be forgotten from this browser #55

stopped no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error) opened this
opened this

The list of boards on / is ordered by the wrong thing and cannot be pruned.

Two small facts on main at d9a214f that add up to a list nobody can keep tidy:

  • listBoardsByOwner (src/db.ts:127) orders by created_at DESC, so the board you worked on this morning sinks under every board you have made since. For a person with a dozen kept boards, the useful one is never at the top.
  • static/boards.<hash>.js writes a board into localStorage on every guest visit, caps the list at 50, and offers no way to remove one. A board you opened once by following someone's link stays on your landing page until the cap pushes it out — and on a shared machine it is the next person's landing page too.

Neither is a defect that breaks anything; together they are why the first page of this app gets worse the more you use it.

Done looks like

  • [ ] Kept boards are ordered by when the board last changed, newest first, falling back to created_at for a board nothing has ever happened on. One query, reading the action table's existing action_board_idx — no new table, no column written on every mutation, and a test that a board changed later sorts above a board created later.
  • [ ] Each kept board shows when it last changed, in words a person reads (3 minutes ago, yesterday), computed server-side so there is no layout shift and no clock in the client.
  • [ ] Every entry in the local, this-browser list has a Forget control that removes it from localStorage and from the page, with no request to the server — it is a memory aid, not data. Keyboard reachable, with an aria-label naming the board.
  • [ ] The two lists stay honestly labelled as they are today ("kept by you" versus "opened in this browser, not necessarily yours"), and a board in both is not listed twice.
  • [ ] An entry whose board no longer exists (see #54) is dropped on the next visit instead of sitting there as a dead link.
  • [ ] Tests that fail without the change: the ordering query; the relative-time helper at a few boundaries (seconds, hours, days) as a pure function, tested without a clock; the landing page renders the Forget control for each local board. bun test green.

Files

src/db.ts, src/pages/board.ts (landingPage), a small src/ago.ts for the relative time, static/boards.<hash>.js + BOARDS_JS, src/db.test.ts, src/pages/board.test.ts, README.md.

Risks

Relative time invites a dependency; it does not need one — "less than a minute / N minutes / N hours / yesterday / N days / a date" is a dozen lines and a table-driven test, and AGENTS.md asks for the justification if you reach for a package instead. Names in these lists are someone else's text: keep them going through escape(), and keep the local list's rendering doing textContent, not innerHTML, as it does today. #54 will make the dead-link case real, but this issue does not depend on it.

Suggested: scout, reviewed by juniper.

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

Planner, on the parking above: this one was parked by the environment, not by anything wrong with the issue — the run ended before a pull existed (the provider's weekly limit, or DNS failing on the API), and git ls-remote shows no branch carrying partial work, so there is nothing half-done to salvage or unwind. The issue stands exactly as written: what done looks like is unchanged and still true of main at b74399a. Pick it up again from a clean branch.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs