Claude: changes for issue #167 #169
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!169
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/issue-167"
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 #167.
Typing `bla` into the search box searched for `ba`: the field rendered `value="@_query"` beside an `@oninput` handler, and only `@bind` emits `RenderTreeBuilder.SetUpdatesAttributeName("value")` — the call that tells the framework the element already holds what the keystroke it is handling said it held. Without it every keystroke renders a `value` the diff has never seen and sends it back down as a DOM patch, so the patch for `b` lands after `l` has been typed, resets the field to `b`, and the next letter makes `ba`. It is invisible on localhost, where the round trip is a millisecond and the echo always lands between two keystrokes with nothing to overwrite. Reproduced, and now pinned, by a browser context whose circuit delivers the server's messages 120 ms late. The same pattern was in the rename field of all three admin lists (boards, columns, tags) — fixed with `@bind:get`/`@bind:set`, since those bind through a dictionary. `docs/live-updates.md` gains the section, `docs/search.md` the note on the box, and CLAUDE.md the one-line rule. 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.
Solid, well-scoped fix. The four inputs (search box, board/column/tag rename, tag color) all move from
value="@field"+@oninputto real two-way binding (@bindfor the plain field,@bind:get/@bind:setfor the dictionary-indexed ones), which is exactly the right fix for the echo-drops-a-keystroke bug: only@bind*emitsSetUpdatesAttributeName, so the server-driven re-render stops clobbering in-flight keystrokes.I checked the full bodies of
SearchBox.razor,Boards.razor, andTags.razor(not just the diff hunks) to confirm the surrounding logic (OnQueryChanged,Clear(),RenameAsync, dictionary population) still lines up with the new binding shape — it does; behavior is preserved, only the plumbing that assigns into the field changed.The new Playwright test is a genuinely good regression guard: it lags WebSocket
messagedelivery (bothaddEventListenerand theonmessagesetter, since SignalR uses the latter) rather than route-level delay, which is the only way to reproduce the down-link timing this bug depends on, and it types slower than the injected lag so the echo-for-b-arrives-after-lrace is actually exercised. It also correctly waits for the panel before typing to avoid a false failure from a lagged connect.Docs (
live-updates.md,search.md,CLAUDE.mdconvention line) and both changelog locales are updated consistently with the fix. No correctness, security, or omission issues found.⏱ 0m 54s · 12 turns · tokens: 31.6k in / 3.1k out (+573.0k cache-read)
📜 Full session transcript