Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Review readiness checklist
✅ 4/4 boxes ticked. This pull request was already a draft. Its draft status will be preserved after every issue above is resolved. |
리뷰 · 우선순위 24 / 80이 PR은 메인 기기 재인증(reauth) 화면에서 “취소”를 눌렀는데 서버가 잠깐 실패하고, 그다음 상태 조회(GET)에서 “그런 flow 없음”(404 + 라인 gui/src/components/use-main-device-reauth.ts (GET 폴 분기) - 메인테이너의 판단이 필요한 지점 스크린샷 게이트를 이 PR에 그대로 적용할지, 아니면 “보이는 UI 변경 없음”으로 면제할지. 면제 기준이 없다면 작성자가 기존 reauth 화면 캡처를 하나 올리면 draft/ 너의 추천 코드 방향은 맞고 DELETE 처리와도 대칭입니다. 이 댓글은 grok-bot이 작성했습니다 |
|
Behavior-only fix in the reauth ownership hook (no visual change to the dialog or screens), so there is no meaningful screenshot to attach — requesting \gui-screenshot-waived\ from a maintainer. cc @lidge-jun |
…top, reauth unknown_flow, Raycast probe, pool golden, no-renames) (#5600) * docs: harden branch content classification against renames * docs: date the no-renames correction and align sibling commands * test(oauth): exercise configured generic pool validators * test(oauth): prove the generic null-strategy clear and harden test teardown * test(oauth): require the strategy property in the cleared response * fix(integrations): harden Raycast defaults probe * test(integrations): cover killed defaults probe in Raycast detection * fix(reauth): stop polling terminal unknown flows * fix(qoder): preserve offsets in scaffold scanning * fix(responses): keep a cyber-policy stop when a 5xx body has malformed UTF-8 consumeComboFailure read 5xx bodies with fatalUtf8, so a single malformed byte rejected the whole read and replaced an otherwise recognizable cyber-policy refusal with "Provider error <status>". The combo then hopped instead of stopping. readBoundedResponseBody gains reportUtf8Validity: it decodes with replacement characters and reports utf8Valid at EOF (true by construction when fatalUtf8 is also set). consumeComboFailure keeps every existing trust rule for malformed 5xx bodies -- no quota evidence, usage, or ordinary classification -- and only lets the lenient decode through when it identifies a cyber-policy refusal. The quota agreement with shouldRetryCodexPoolAccountQuota is unchanged. Reimplements #5307 with a narrower classification gate. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * docs: separate the campaign command from the corrected rerun command The branch and PR classification summaries showed the --no-renames form as though the campaign had used it. State the command that produced the recorded verdicts and the form any rerun must use, matching the correction in 010_method.md. Follow-up to #5461. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * test(oauth): restore the pool-validator home even when shutdown throws A throwing server.stop skipped the OPENCODEX_HOME restore and temp-dir removal, leaking both into later cases. Run cleanup in an inner finally. Follow-up to #5442. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * test(integrations): model a killed defaults probe with a type-safe result The timeout case cast a result with exitCode null directly to typeof Bun.spawnSync, which strict TypeScript can reject, and its empty stdout could not tell an exit-code check from an empty read. Cast through unknown, cover null and non-zero exits, and return "1" on stdout so ignoring the exit code would visibly report Pro. Follow-up to #5244. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * docs(structure): record the terminal unknown_flow GET in the reauth contract The dashboard contract said a non-2xx GET keeps cancellation ownership and polling, and that no replacement login POST can appear before DELETE settles. A GET 404 unknown_flow now ends the flow the same way the DELETE path does, so qualify both statements as applying to retryable GET errors and state the exception in the overview. Follow-up to #5428. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * fix(qoder): keep single-unit Unicode case folding in scaffold scanning Matching markers with ASCII-only folding kept offsets correct but dropped matches the lowercased scan used to make: U+212A KELVIN SIGN lowercases to an ASCII k, so <invo\u212Ae> tool markup passed through unsuppressed, whole or split across deltas. Fold each code unit as toLowerCase() does when the result is a single code unit; characters that expand, such as U+0130, still cannot shift offsets. Follow-up to #5366. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * docs(pr-assets): add the reauth unknown_flow GET before/after capture Main-account card rendered with the dev hook and the branch hook against a mocked management API (Cancel DELETE 503, then GET 404 unknown_flow). Synthetic identity only. Follow-up to #5428. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> * test(responses): keep a non-replayable malformed cyber stop free of retry metadata Carries the #5307-related part of cc466ed, which the author added after consolidating #5307 into #5553: a malformed 502 cyber-policy body that was marked non-replayable must keep the marker, carry no Retry-After or quota reset, and still stop the combo. Document the malformed-body contract in the responses structure doc, matching the narrower classification gate this branch implements. Follow-up to #5307 (via #5553). Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> --------- Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
Motivation
404withcode: "unknown_flow", leaving the UI in a stalepending/committingstate and pausing account-pool refresh.Description
gui/src/components/use-main-device-reauth.tsthe GET poll path now treats a404withdto.code === "unknown_flow"as terminal by stopping the poll, clearing the storedflowId, and transitioning to the existing generic failure state instead of scheduling another tick.unknown_flowterminal condition.gui/tests/main-device-reauth-ownership.test.tsxthat reproduces a failed cancellation followed by a404 unknown_flowand asserts the hook stops polling and enters the failure state.Testing
bun test ./gui/tests/main-device-reauth-ownership.test.tsx: 34 tests pass.Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:
All CI tests are green on my local testing.
I pushed my PR to the latest dev commit.
I resolved all correct Codex and CodeRabbit findings.
My PR is ready for review.