Repository navigation
fix(web): sweep-2 fixes — hidden-tab SSE, query invalidation, heartbeat notifications, stdin actions, share revoke - #562
Merged
Merged
Conversation
The hidden flag started as false, so a tab opened in the background connected immediately and only released the stream on a later visibilitychange that never fires. Those idle streams exhausted Chrome's 6-connections-per-host pool and stalled other requests. Initialise the flag from document.hidden; the visible handler already connects and calls onReconnect. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
queryKeyForKind returned ["servers"], ["backups"], ... but the app caches those under ["fleet", kind, ...] and ["resource", ..., kind], so only templates were ever refreshed by watch events. Replace it with queryFilterForKind, which returns a predicate that selects exactly the fleet lists, per-server collections and server detail for the kind (no blanket prefix, so unrelated queries are not refetched). The panel keeps its per-kind 500 ms coalescing. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
The agent patches status.agent every ~20 s, and each resulting MODIFIED watch event became a "modified server X" notice. Track a per-object (generation, phase) signature in NotificationsPanel and drop MODIFIED events that leave it unchanged, before they notify or invalidate. The filter lives in the client because a watch event carries no old object, so the API cannot tell a heartbeat from a transition statelessly. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
Action buttons were disabled whenever the template had no RCON, even though the API runs stdin-transport actions over pod attach and the card already resolved that transport for the "sent" chip. Gate each button on its own resolved transport: stdin needs an attachable console, rcon still needs RCON. The hint now distinguishes "no console" from "this action needs RCON". Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
The Backups tab schedule row passed nextScheduleTime to formatRelative, which only handles the past and clamps a future time to "0s ago". Use formatRelativeFuture, as the stat card and the fleet page already do, so it reads "in 3h" (or "due" when overdue). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
The audit table rendered every /auth/login row as "Signed in", even 401/429 rejections. Pass the row's HTTP status into auditAction and show "Failed sign-in" for status >= 400. The Access column already shows the Failed/Denied outcome; the action text now agrees with it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
Expired and revoked links cannot be revoked again, yet every row showed a Revoke button. Match design xCJlu: Active rows keep the button, the others show a muted dash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 58 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (15)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
CI Report - 2ec3db1run 37319905918 - attempt 1 0 failed - 7 passed - 13 skipped - 18m48s elapsed Coverage
Changed
Slowest jobs
e2e buckets run
|
PR #562 now shows the Revoke button only on Active (non-expired) share links. The mock fixtures had an expiry date (2026-08-04) which is now in the past (today is 2026-10-05), causing the test to fail because no Revoke button renders. Update the first share link's expiresAt to null (never expires) so the test can find the Revoke button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018MnGTGHzHhFQCa22wRknUS Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dashboard fixes from the second live kubelab sweep, one commit each:
/eventsopen. A tab that starts hidden kept its/eventsstream open, and with Chrome's 6-connections-per-host cap that starved the other tabs. The hidden flag now starts fromdocument.hidden.["servers"], …) didn't match any real query key.queryFilterForKindnow targets the fleet and resource queries for servers, backups, schedules and restores, so they no longer rely on 5 s polling alone.xCJlu; Expired and Revoked rows show a muted "—".Tests were added for each fix. The changed assertions were approved by the user:
link-1is now never-expiring, because all three fixed dates had passed.web/specs.mdis updated.Nothing was built or run locally (by the user's request); CI is the verification.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NsN6bnAMRM9XQtrTQ6KC7U