Clicking the app title should open the current board, not the first one #113

Closed
opened 2026-08-19 02:21:27 +00:00 by Grandiras · 2 comments
Owner
No description provided.
Collaborator

🤖 On it — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 On it — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/306); the reply will link the full session transcript. <!-- claude-run:comment --> 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/issue-113/run-306.md) — updating every ~5 minutes while the task runs.
Collaborator

Fixed on branch claude/issue-113.

What was wrong

The wordmark in the header was a hard-coded href="/". A bare path in this app means the default board — the first one in your list — so from a second board's calendar, its tags page, or the board itself, the one control everyone presses to get back to the cards quietly moved you to somebody else's board and dropped the one you had picked. That is exactly the silent substitution AdminHref was already written to refuse, one row to the left.

The change

NavHeader.razor now builds the link from the board the URL is already about:

private string HomeHref => BoardHref(ActiveBoardId, "/board");
  • From /calendar/board/7, /admin/tags/7, /admin/columns/7 or /board/7/board/7.
  • It is the board and not the section you are on — the wordmark is the way home, not a sixth board-scoped link (the switcher is what keeps you on your page).
  • It still falls back to / exactly where ActiveBoardId is null and there is no board to name: signed out, on the general calendar (/calendar/all is every board at once, so it claims none), and on /admin/members / /admin/boards.

Also in the commit: a bullet in Changelog.Unreleased in both locales, the reasoning written into docs/boards-and-permissions.md beside the switcher's own rules, and a new e2e test in tests/e2e/boards.spec.js (the wordmark goes back to the board you are on) covering both board-scoped pages plus the general-calendar fallback.

Verified

Ran the app for real in this container (host Postgres 15 + dotnet run in Development on :8090) and drove it with Playwright:

  • dotnet build / dotnet test Ponente.sln312 passed, including ChangelogTests and DocumentationTests.
  • boards.spec.js — the new test passes, and I checked it the other way round too: with the href="/" restored and the app rebuilt, it fails on unexpected value "http://localhost:8090/", so it actually pins the behaviour.
  • board.spec.js — 23/23, including admin pages show nav header, which is the existing test that clicks this link.

One pre-existing failure, not caused by this change: boards.spec.js:156 the nav switches boards… fails at expectVisibleSoon('.calendar-week') — it fails identically with NavHeader.razor reverted to the unmodified file, and it is the prerender/entrance race docs/testing.md already documents as why the e2e suite is not trustworthy inside a job container. Not filed as an issue for that reason.


⏱ 9m 41s · 65 turns · tokens: 85.8k in / 17.7k out (+4732.4k cache-read)
📜 Full session transcript
→ Opened PR: #126

Fixed on branch **`claude/issue-113`**. ## What was wrong The wordmark in the header was a hard-coded `href="/"`. A bare path in this app means *the default board* — the first one in your list — so from a second board's calendar, its tags page, or the board itself, the one control everyone presses to get back to the cards quietly moved you to somebody else's board and dropped the one you had picked. That is exactly the silent substitution `AdminHref` was already written to refuse, one row to the left. ## The change `NavHeader.razor` now builds the link from the board the URL is already about: ```csharp private string HomeHref => BoardHref(ActiveBoardId, "/board"); ``` - From `/calendar/board/7`, `/admin/tags/7`, `/admin/columns/7` or `/board/7` → `/board/7`. - It is the **board** and not the section you are on — the wordmark is the way home, not a sixth board-scoped link (the switcher is what keeps you on your page). - It still falls back to `/` exactly where `ActiveBoardId` is null and there is no board to name: signed out, on the general calendar (`/calendar/all` is every board at once, so it claims none), and on `/admin/members` / `/admin/boards`. Also in the commit: a bullet in `Changelog.Unreleased` in both locales, the reasoning written into `docs/boards-and-permissions.md` beside the switcher's own rules, and a new e2e test in `tests/e2e/boards.spec.js` (`the wordmark goes back to the board you are on`) covering both board-scoped pages plus the general-calendar fallback. ## Verified Ran the app for real in this container (host Postgres 15 + `dotnet run` in Development on `:8090`) and drove it with Playwright: - `dotnet build` / `dotnet test Ponente.sln` — **312 passed**, including `ChangelogTests` and `DocumentationTests`. - `boards.spec.js` — the new test passes, and I checked it the other way round too: with the `href="/"` restored and the app rebuilt, it fails on `unexpected value "http://localhost:8090/"`, so it actually pins the behaviour. - `board.spec.js` — 23/23, including `admin pages show nav header`, which is the existing test that clicks this link. One pre-existing failure, not caused by this change: `boards.spec.js:156 the nav switches boards…` fails at `expectVisibleSoon('.calendar-week')` — it fails identically with `NavHeader.razor` reverted to the unmodified file, and it is the prerender/entrance race `docs/testing.md` already documents as why the e2e suite is not trustworthy inside a job container. Not filed as an issue for that reason. --- ⏱ 9m 41s · 65 turns · tokens: 85.8k in / 17.7k out (+4732.4k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/issue-113/run-306.md) → Opened PR: https://git.grandiras.net/Grandiras/Ponente/pulls/126
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/Ponente#113
No description provided.