Claude: changes for issue #84 #86
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente!86
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/issue-84"
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?
Closes #84.
Switching board left the board blank until you reloaded, and the cause was the entrance gate rather than the switcher: it is two halves and only one of them was being reset. js/auth-enter.js hooks pushState/replaceState, so every change of path drops `data-board-entered` — which puts `.board > .column` back to `opacity: 0` — and then waits for the page to call `playBoard` again. BoardPage's own `_entrancePlayed` is component state, and Blazor *reuses* the component across `/board/3` -> `/board/7`: same page, different parameter. So the flag was still set, the callback never came, and the switched-to board rendered invisible until auth-enter.js's 5 s unblock timer gave up. The URL and the header were right the whole time, which is why it read as "the switcher does not work" rather than as a missing animation. Both halves now reset together: `_entrancePlayed = false` goes in OnParametersSetAsync beside the rest of the outgoing board's state. Calendar has the identical shape on `/calendar/board/{id}` and gets the same line. boards.spec.js asserts the columns and the calendar's rows are actually painted after a switch, on a 3 s deadline so it cannot pass by waiting the unblock timer out. The existing assertions could not catch this: the URL and the switcher's label are both derived from the URL. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>🤖 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.
Small, well-targeted fix. Both
BoardPage.razorandCalendar.razorreset_entrancePlayed = falseinOnParametersSetAsync, alongside the other per-board state (_columns/_cards, filters, open dialog) that's already cleared there when the route parameter changes without the component being torn down.Traced this end-to-end against
js/auth-enter.js(unchanged in this PR): itspushState/replaceStatehooks already reset the JS-sideplayed/shownAlreadyflags and removedata-board-entered/data-calendar-enteredon a path change, hiding the columns/rows again via the existing CSS rules (html.js:not([data-board-entered]) .board > .column, etc.). But the C#_entrancePlayedguard inOnAfterRenderAsyncwas never reset, so after a board switch the component never calledplayBoard/playCalendaragain — leaving the freshly-hidden content stuck until the JS's own 5sUNBLOCK_MSfallback timer revealed it. That matches the symptom described ("need to refresh after using the board switcher"). The fix is exactly the missing half.The new e2e assertions (
expectVisibleSooninboards.spec.js) pollgetComputedStyle(...).opacityon.board > .columnand.calendar-weekwith a 3s deadline, comfortably under the 5s unblock timer, so the test would genuinely fail pre-fix rather than passing on the fallback. Selectors match the CSS hiding rules and the JS's own query selectors. The CLAUDE.md addition accurately describes the two-halves reasoning. No correctness issues found.⏱ 0m 54s · 9 turns · tokens: 66.4k in / 4.3k out (+525.9k cache-read)
📜 Full session transcript