Finish the calendar in the UI language v2 #257
No reviewers
Labels
No labels
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente!257
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ui-v2-calendar"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finishes the calendar in the UI language v2, to the Figma frames Desktop · Calendar · Month (41:2646 / 73:5429), Timeline (67:4583 / 73:5596), Phone · Calendar (57:1370 / 58:1524) and Calendar & search parts (34:180), light and dark.
What changed
BoardTitleBargainsTitleContent,MenuContent,CssClass,ActiveandCloseMenu()): the month takes the title, the line names the board (Summer fair · 7 due this month), the views stay, and the exports join Share and Board settings in the board's ⋯. Narrow, the controls wrap under the title.CalendarMonth.ByDaynow covers the whole grid). Entries are a dot (board colour on all boards, the first tag's on one board, as before) and one line; overdue is red text. Three chips, then +N more (a button, so the day sheet is reachable by keyboard); a shorter day shows as many whole chips as fit and its total where that leaves any out — container queries on the day, since every chip stays in the markup.ColumnService.GetDeckIdsAsync, one query).scrollAgenda). The filter moved into ⋯; the old flyout andanchorFlyoutare gone.cal.count.month,.quarter,cal.overdue,cal.more,cal.date.weekday).Judgement calls
How verified
tools/verify.shgreen (600 unit tests;CalendarMonthTestsupdated for the grid-wideByDay).expectExportHref).🤖 Generated with Claude Code
🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
🤖 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.
✅ Verdict: approve — no blocking issues found.
I found no blocking problems. I read the diff and checked
GetDatedCardsAsync; I did not build or run anything.GetDatedCardsAsyncalready loadsBoardColumn,TagsandAssignees.Member, which the new agenda meta line (AgendaMeta) needs, so it adds no lazy-load or null risk.docs/calendar.md,docs/frontend.mdanddocs/ui.mdare updated with their reasons. TheCalendarMonth.ByDaychange is covered by the updated unit tests.Minor notes, none blocking:
ScrollAgendaAsyncrecords its key even when the agenda is hidden (desktop width). Resizing to phone width afterwards won't scroll the agenda to its lead day until the next month, pick or filter change..calendar-mini-day) and the agenda sections both carrydata-date. Any e2e selector on[data-date]alone will match both, so scope it to a class.Filtered.Where(c => c.DueDate == detailDay), which relies onFilteredkeeping the date-then-id order thatGetDatedCardsAsyncreturns. It holds today, butByDayno longer guarantees it there.🧠 claude-sonnet-5-5 · ⏱ 0m 16s · 3 turns · tokens: 72.3k in / 1.7k out (+94.8k cache-read)
📜 Full session transcript
🤖 Resolving the merge conflicts — the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the fix runs.
Facts pinned: on this branch the calendar passes
TitleContent, so.board-titlebar-namedoes not exist on a calendar page (that h1 only renders whenTitleContentis null) — but the board's name is in the title-bar line (SubLine(wide) = ScopeName = _board?.Name). So keeping genericnamingwith.board-titlebar-namefor the calendar entry would fail on this branch. Correct resolution: per-entry locator —.board-titlebarfor the calendar (title-bar contains the board via its line),.page-crumbfor settings (main's truthful addition):The run reported an error after replying: Upstream request failed: [invalid_request_error] native reasoning control reasoning_effort is not allowed
⚠️ Files still unresolved:
docs/frontend.md,docs/ui.md,src/Ponente.Kanban/Services/ColumnService.cs,tests/e2e/boards.spec.js— nothing was pushed.⏱ 10m 25s · 35 steps · $0.0657 · tokens: 65.3k in / 8.2k out (+1579.1k cache-read) · Go: 5h 8% · wk 15% · mo 90%
📜 Full session transcript
💬 Verdict: comment — the reviewer did not submit a structured review; the raw output follows.
Let me check how the phone's floating tab bar is accounted for on the calendar page now that the old
height: calc(100vh - var(--phone-nav-h))rule was removed.⏱ 30m 3s · 48 steps · $0.1440 · tokens: 116.1k in / 2.3k out (+2794.5k cache-read) · Go: 5h 8% · wk 15% · mo 90%
📜 Full session transcript
57a18cfedb20b3eff646🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
🤖 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.
✅ Verdict: approve — no blocking issues found.
I found no blocking problems, and the points from my last pass are the same non-blocking notes. I read the diff only; I did not build or run anything, and part of the diff was truncated.
ScrollAgendaAsync: it records its key even while the agenda is hidden at desktop width. After a resize to phone width, the agenda won't scroll to its lead day until the next month, pick or filter change.data-date:.calendar-mini-dayand.calendar-agenda-dayboth carry it, so a selector on[data-date]alone matches both. Scope selectors to a class.Filtered.Where(c => c.DueDate == detailDay), which relies onFilteredkeeping the date-then-id order fromGetDatedCardsAsync. That holds today, butByDayno longer enforces it there.The changes I looked at hold up:
GetDeckIdsAsync: one query, and it applies the same "a board of one column has no deck" rule as the board.ByDay: it now covers the whole grid, and the unit tests were updated for that.docs/calendar.md,docs/frontend.mdanddocs/ui.mdare updated with their reasons, and the changelog entry is in both locales.🧠 claude-sonnet-5-5 · ⏱ 0m 4s · 2 turns · tokens: 71.0k in / 542 out (+12.2k cache-read)
📜 Full session transcript
✅ Verdict: approve — no blocking issues found.
The calendar v2 read is solid: the head swap into
BoardTitleBar(or its ownheader.calendar-headon the general calendar) is correctly rendered exactly once per scope with no duplicate ids; the month-tray layout with the container-query chip cap is internally consistent; the timeline's weekend/today overlays share the exact column grid so they align; andColumnService.GetDeckIdsAsynccleanly answers "done" for the loaded boards in one query. The phone-height accounting works through the existingbody:has(.board-header) { padding-bottom: var(--phone-nav-h) }+.calendar-page { flex: 1 }derivation — no--phone-nav-hsubtraction is needed from the page itself, which resolves the question I left open on the last pass.⏱ 20m 58s · 42 steps · $0.1241 · tokens: 318.2k in / 2.5k out (+2053.4k cache-read) · Go: 5h 9% · wk 16% · mo 90%
📜 Full session transcript