refactor(gui): react-doctor cleanup for Startup/Debug/Storage/Usage#468
Conversation
|
Warning Review limit reached
Next review available in: 6 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (15)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
🔒 Under maintainer review — detailed feedback incoming@lidge-jun (maintainer) has this PR in an active review pass. Please do not merge, rebase, or This is a claim marker so two maintainers do not review or land the same PR at once. If you are a Baseline for this pass: No action needed from you until then. Thanks for the contribution and for your patience. Review tracker: |
|
Thanks for the react-doctor cleanup across Startup/Debug/Storage/Usage. Typecheck, lint, and matrix CI are green on the exact head, but this is labelled a refactor and three of the changes are behavior-changing rather than behavior-preserving. Those are what I'd like resolved before merge. 1. Aborted requests now clear shared loading state unconditionally — 2. 3. Overlap with Test gap: add component-level regressions for (a) an aborted request completing after its replacement starts, (b) rapid Debug flag/reset interactions, and (c) multiple Claude inbound entries sharing a timestamp, endpoint, and model. The current green typecheck/lint/matrix runs do not exercise any of these timing or reconciliation failures — which is exactly why the refactor reads as safe today. Reviewed as part of a maintainer review pass against |
Split Startup/Debug sections and apply 0.9.1 fetch/loading hardening on Storage and Usage.
Keep loading busy until the current Startup/Storage/Usage fetch finishes, reinstate Debug mutation busy state with latest-wins apply, and key Claude inbound rows on a monotonic capture id. Add regressions for abort-after-replace, rapid debug mutations, and same-timestamp inbound entries.
Review follow-up (
|
8b7c73f to
46bef6c
Compare
Invalidate load generations on effect cleanup before abort, and serialize Debug PUTs so server writes follow user action order.
Independent review of #468 confirmed all five production fixes are correct, but found that three of the accompanying tests do not fail for the reason they exist. This adds the missing coverage without changing behavior. - debug-claude-inbound-keys asserted row content only. With the old colliding composite key React still renders both rows correctly and merely warns on the console, so the test passed against the defect it was written to catch. It now captures console.error and asserts the duplicate-key warning is absent. - claude-inbound-debug captured three entries, never reaching RING_LIMIT=20. Added a wraparound case: eviction must not recycle ids, since a counter reset would resurrect a discarded id and reintroduce the collision. - Storage had a genuine race regression but Startup and Usage did not, so either could silently lose its generation guard. Added the equivalent delayed- settlement tests for both, verified RED by reverting each guard. - Both existing Debug tests end at the same state they start from, so dropping setClientResourceData() would still satisfy their final assertions. Added a false -> true transition where every GET keeps returning the pre-mutation state, proving the control re-enables already showing the PUT response. Verified RED by not installing the response. It lives in its own file because sharing a fetch stub with the serialization tests perturbs them. Co-authored-by: Wibias <37517432+Wibias@users.noreply.github.com>
|
Post-merge note: I put this through an independent review pass after it landed, and the five production fixes all hold up. Startup, Storage, and Usage each own loading through a complete generation sequence (increment, result guard, current-generation Your Three test-quality gaps did turn up, and I've closed them in
Startup and Usage had no race regression. Neither Debug test proved response-install ordering. Both flows end at the same state they start from, so removing Verification: GUI suite 178/178, the five affected files 8/8, backend batches clean, typecheck / One governance note for the record, not a criticism of the change: GitHub shows this merged by its own author with no recorded review decision, and Reviewed as part of a maintainer PABCD pass against |
통합(dev push 완료): #437 803807a, #460 74ddd96, #431 82a47db, #405 be16c1d, #468 후속 테스트 bcaf029. close: 통합 4건 + 통합 없이 1건(#459, 설계 충돌). #457은 OPEN 유지. 이슈 close 0건 — dev에서 고쳐졌는데 안 닫힌 이슈가 없었다. 무효화: WP4(#466)와 WP6(#467)은 동료가 직접 머지했고, 우리 분석이 지적한 결함을 동료 커밋이 같은 방향으로 해소했다. 보안 보류 5건에 신규 발견 게시: #429 재분류, #355 OAuth 토큰 목적지, #424 유료 브리지 기본 ON, #408 설치 락 해제, #403 4분할 요청. A-gate는 사이클마다 3~5라운드를 돌았다. 반복된 원인은 계획서에 테스트나 코드를 적으면서 실물 소스를 확인하지 않은 것이었다.
Summary
Stack
Test plan
bun x tsc -bingui/