Claude: changes for issue #179 #180

Merged
Grandiras merged 1 commit from claude/issue-179 into main 2026-08-27 03:39:54 +00:00
Collaborator

Closes #179.

Closes #179.
Redesign the phone nav bar into four destinations
All checks were successful
CI / build (pull_request) Successful in 33s
a386a5d3a8
The bar on the bottom edge held a wordmark, the board's name and a
magnifier, and left most of the widest slot on the device empty — while
Board and Calendar, the two readings every member came for, were two taps
down inside the account sheet, behind a face. Issue #179 is both halves of
that: too much hidden, too much space unused.

The bar is now Board · Calendar · Search · account, each a mark with its
word under it, sharing whatever the board switcher leaves. The wordmark
goes because its href *is* the Board tab's; the sole board's static title
goes because a name that is not a choice is the one thing down there that
cannot be pressed; the search's filled pill and the account's caret go
because in a row of labelled marks neither has a job left. The account
sheet keeps the admin fold, what the menu does, the settings and the way
out — the things a bar cannot hold.

`.nav-tabs` is in the DOM at every width and hidden by CSS, unlike the
menu's phone group: `_isPhone` is a round trip, and a bar that rearranges
itself after the page has painted is worse than one that never moved.

docs/ui.md carries the reasoning, docs/search.md the trigger's two shapes,
docs/frontend.md the note that the Lunacy canvas is now a sync behind here.
mobile.spec.js pins the four cells, their labels, their one baseline and
that the row reaches the bar's edge; search.spec.js swaps "the trigger is
filled" for "the trigger says Search".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Author
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

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

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/408); the reply will link the full session transcript. <!-- claude-run:pr_review --> 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-180/run-408.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

✅ Verdict: approve — no blocking issues found.

This moves Board and Calendar out of the phone account-menu sheet into the bottom bar as two new .nav-tab destinations alongside Search and the account, dropping the wordmark/board-name lead down to just the switcher (or a hidden title for single-board deployments). I traced the flex math (nav-tabs: flex 2 1 0 holding two .nav-tab children each flex: 1 1 0, versus .nav-search/.board-user each flex: 1 1 0) and it does produce four equal-width cells as the docs claim. Checked for the usual failure modes and didn't find any:

  • .nav-tabs/.nav-tab-label default to display: none globally and are only re-enabled inside the max-width: 599px block, so nothing leaks into tablet/desktop.
  • The removed tablet-only .nav-menu-toggle/.nav-avatar 34px override and the phone-only 20px override don't collide — the deleted rule lived later in the same 599px block and would have won if left in place, so removing it (rather than the earlier 20px rule) is correct.
  • All new/reused L10n keys (nav.board, nav.calendar, nav.menu, search.open) exist in both en and de in LocaleService.cs, and Changelog.Unreleased got matching entries in both locales.
  • BoardHref(ActiveBoardId, ...) in the new .nav-tabs block is the same call already used unconditionally elsewhere in the header (.nav-views), so it doesn't introduce a new null-ActiveBoardId edge case.
  • e2e coverage (mobile.spec.js, boards.spec.js, search.spec.js) was updated to match: four-cell geometry, one-line labels, wordmark gone, Board/Calendar no longer in the account sheet, and the search trigger's assertion swapped from "filled pill" to "has a visible label" (correct, since the phone trigger no longer wears the pill — that's still exercised at the 620px width in the existing tablet test).
  • Docs (ui.md, search.md, frontend.md) were updated in the same PR to describe the new bar, consistent with the CLAUDE.md convention.

Nothing here looks like a correctness bug or a missed update. Only a pre-existing, not-introduced-by-this-PR nit: there are now two unlabeled <nav> landmarks in the header (.nav-tabs and .nav-admin-links), but that ambiguity already existed before this change and isn't something this PR need fix.


⏱ 2m 34s · 27 turns · tokens: 63.0k in / 12.5k out (+1901.9k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. This moves Board and Calendar out of the phone account-menu sheet into the bottom bar as two new `.nav-tab` destinations alongside Search and the account, dropping the wordmark/board-name lead down to just the switcher (or a hidden title for single-board deployments). I traced the flex math (`nav-tabs: flex 2 1 0` holding two `.nav-tab` children each `flex: 1 1 0`, versus `.nav-search`/`.board-user` each `flex: 1 1 0`) and it does produce four equal-width cells as the docs claim. Checked for the usual failure modes and didn't find any: - `.nav-tabs`/`.nav-tab-label` default to `display: none` globally and are only re-enabled inside the `max-width: 599px` block, so nothing leaks into tablet/desktop. - The removed tablet-only `.nav-menu-toggle`/`.nav-avatar` 34px override and the phone-only 20px override don't collide — the deleted rule lived later in the same 599px block and would have won if left in place, so removing it (rather than the earlier 20px rule) is correct. - All new/reused L10n keys (`nav.board`, `nav.calendar`, `nav.menu`, `search.open`) exist in both `en` and `de` in `LocaleService.cs`, and `Changelog.Unreleased` got matching entries in both locales. - `BoardHref(ActiveBoardId, ...)` in the new `.nav-tabs` block is the same call already used unconditionally elsewhere in the header (`.nav-views`), so it doesn't introduce a new null-`ActiveBoardId` edge case. - e2e coverage (`mobile.spec.js`, `boards.spec.js`, `search.spec.js`) was updated to match: four-cell geometry, one-line labels, wordmark gone, Board/Calendar no longer in the account sheet, and the search trigger's assertion swapped from "filled pill" to "has a visible label" (correct, since the phone trigger no longer wears the pill — that's still exercised at the 620px width in the existing tablet test). - Docs (`ui.md`, `search.md`, `frontend.md`) were updated in the same PR to describe the new bar, consistent with the CLAUDE.md convention. Nothing here looks like a correctness bug or a missed update. Only a pre-existing, not-introduced-by-this-PR nit: there are now two unlabeled `<nav>` landmarks in the header (`.nav-tabs` and `.nav-admin-links`), but that ambiguity already existed before this change and isn't something this PR need fix. --- ⏱ 2m 34s · 27 turns · tokens: 63.0k in / 12.5k out (+1901.9k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-180/run-408.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:a386a5d3a810dcd112e024ded767a732f01317b1 -->
Grandiras deleted branch claude/issue-179 2026-08-27 03:39:54 +00:00
Sign in to join this conversation.
No reviewers
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!180
No description provided.