From de4ff8fe92f78f11c7424cd33cef38504afe4f85 Mon Sep 17 00:00:00 2001 From: istos Date: Thu, 30 Jul 2026 08:50:51 +0200 Subject: [PATCH] Card 22: the board's tab names its project Co-Authored-By: Claude Fable 5 --- .../22-board-title-names-its-project.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tasks/backlog/22-board-title-names-its-project.md diff --git a/tasks/backlog/22-board-title-names-its-project.md b/tasks/backlog/22-board-title-names-its-project.md new file mode 100644 index 0000000..40cb4e8 --- /dev/null +++ b/tasks/backlog/22-board-title-names-its-project.md @@ -0,0 +1,66 @@ +# 22 — The board's tab names its project + +**Status:** Backlog +**Priority:** Low — one line of confusion, many times a day once two benches exist +**Type:** Bug + +Every board tab is titled "Bench — task board", so two or more benches +(one per project, exactly the setup start.sh's port-shifting exists +for) are indistinguishable in the tab bar, in cmd-tab window lists, +and in browser history. The title should lead with the project, which +the board already knows. + +## Context + +- `board.html:6` — `Bench — task board`, static, + never updated. +- The board knows its identity: the header already renders the tasks + root path, `/api/state` carries `board.root` (stop.sh identifies + the right process by it), and the repo directory name + (`config.REPO.name`) is the natural human name for the project. +- Multiple boards are a supported reality: 26071 is pinned for the + first, start.sh walks to a free port for the next — the tab title + is currently the only thing that *doesn't* follow. + +**Affected areas:** `board.html` (title update from state; possibly +the served page), `httpd.py`/`config.py` only if the project name +isn't already in the state payload. + +## What to build + +- Title becomes ` · bench` (project first — tab truncation + eats the tail, and the tail is the same in every bench tab). + Project = the repo directory's name; a `BOARD_TITLE` setting in + `.env` overrides it for people whose checkout dirs are all `app`. +- Set it as early as the page can know it (server-render into the + HTML if cheap, else first state load) and keep it stable — no + flicker between generic and named on every refresh. +- The view switcher may suffix (` · sessions`), but only if + it costs nothing; the project must stay the first word regardless. + +**Out of scope** — tempting neighbours left alone: + +- Per-project favicons or theme accents. +- Renaming anything in the page body — the header's path line already + does that job. + +## Acceptance + +- [ ] Given two projects' boards open side by side, then their tabs + read `projectA · bench` and `projectB · bench` — distinguishable + at tab-bar width. +- [ ] Given `BOARD_TITLE=payments` in local/.env, then the tab reads + `payments · bench`. +- [ ] The title is right on first paint or within the first state + load, and never reverts to the generic string afterwards. + +## Open questions + +- None. + +## Notes + +Requested 2026-07-30, the day multiple benches first existed — +downstream installs started the same morning as the v0.1-alpha +release, and the tab bar immediately stopped saying which bench was +which.