carry forward remaining unique non-dev PR work#319
Conversation
(cherry picked from commit fd042cf)
(cherry picked from commit 7c5d218)
(cherry picked from commit 9deced0)
(cherry picked from commit 2f5b33a)
(cherry picked from commit 36d9bee)
(cherry picked from commit 575e1ed)
(cherry picked from commit 8a6def5)
(cherry picked from commit ec80dbd)
(cherry picked from commit 2aa40b0)
(cherry picked from commit 2488a87)
(cherry picked from commit 3c3395b)
(cherry picked from commit 3d58661)
(cherry picked from commit 5e5fa68)
(cherry picked from commit 51313b6)
(cherry picked from commit 2173066)
(cherry picked from commit 1a5eca3)
(cherry picked from commit 0085918)
(cherry picked from commit b5dfcaf)
(cherry picked from commit c9a61f4)
(cherry picked from commit 36a3f9e)
(cherry picked from commit dedb342)
(cherry picked from commit e78f103)
(cherry picked from commit fa4a6aa)
(cherry picked from commit d120dc0)
(cherry picked from commit 7c24c0c)
(cherry picked from commit 7afbc2f)
(cherry picked from commit 1110df6)
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (21)
Cache: Disabled due to data retention organization setting Knowledge base: Disabled due to data retention organization setting 📝 WalkthroughSummaryThis PR carries forward 97 commits of graph-unique, non-dev changes aggregated from PRs Key ChangesRetry & Error Handling:
Architecture & Dependencies:
Storage & Snapshot Inspection:
Test Coverage:
Risks & ConsiderationsNo security or data-loss risks identified. Existing tests pass local validation (clean, typecheck, build, lint, vitest). Behavioral changes to locked-file handling and synthetic-fixture detection are well-covered by new assertions, though snapshot visibility semantics shift (locked files now visible vs. previously absent). The removal of exception wrapping in Walkthroughrefactored account storage and settings management: removed flagged-account port functions, enhanced snapshot inspection with retry-friendly stat logic and optional log warnings, reorganized settings controller dependencies into shared type, adjusted delay cap and retry codes. test coverage added across snapshot inspection, account persistence, and settings panel logic. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes critical observationsaccount-save.ts:line 7–13 — the try/catch removal is a semantic shift: errors from account-snapshot.ts:line 40–50 — settings-write-queue.ts:line 1 — account-clear-entry.test.ts:line 15–25 — new test validates concurrent restore-backup-entry.test.ts — windows path handling now tested with flagged-storage-file.ts:line 5–20 — unified-settings-entry.ts + unified-settings-controller.ts — type extraction looks clean, but verify that all callers of test coverage gaps — new test files are comprehensive and use fakes/mocks well. no obvious coverage gaps, though the removed ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
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 |
Summary
devwork that is not already included inmainmain#318Source PRs included
#250#251#252#253#254#269#273#278#283#285#290#293Audit note
#301was graph-unique during audit but replayed patch-empty against currentmain, so it is not carried hereLocal validation
npm run clean:repo:checknpm run typechecknpm run buildnpm run lintnpx vitest run test/settings-persist-utils.test.ts test/account-snapshot.test.ts test/storage-flagged.test.ts test/account-save.test.ts test/account-clear-entry.test.ts test/restore-backup-entry.test.ts test/settings-panels.test.ts test/unified-settings-entry.test.ts test/dashboard-formatters.test.ts test/account-port.test.ts test/named-backups-entry.test.tsnote: greptile review for oc-chatgpt-multi-auth. cite files like
lib/foo.ts:123. confirm regression tests + windows concurrency/token redaction coverage.Greptile Summary
this pr carries forward 12 source prs worth of non-
devwork onto a freshmainbaseline — primarily windows filesystem resilience improvements, type-level refactoring, and test coverage expansion across the storage and settings layers. the changes are well-scoped and all locally validated.key changes:
account-save.ts: removes the silent try/catch that swallowedloadExistingStorage()probe errors — transient windowsEBUSYhits during the synthetic-fixture safety check now fail the save viacreateStorageErrorinstead of proceeding blindlyaccount-snapshot.ts:EBUSY/EPERMonstatnow returns{ exists: true }(no bytes/mtimeMs), triggering a 2-attempt metadata retry after load succeeds; persistent locks fall back tobytes: 0, mtimeMs: 0flagged-storage-file.ts: addsreadFileWithRetrywithEBUSY/EAGAINretry set (3 retries, 10 ms base exponential) before parsing flagged account filessettings-write-queue.ts: bumpsSETTINGS_WRITE_MAX_DELAY_MSfrom 1 s → 30 s — has no effect on pure filesystem retries (peak backoff ~400 ms) but allows honoring larger http 429retry-aftervalues for remote settings syncexperimental-sync-target-entry.ts: narrows retryable read codes — dropsENOTEMPTY(irrelevant for reads) andEACCES(covered byEPERMfor windows antivirus locks)UnifiedSettingsControllerDepsextracted as a named type;SnapshotStatsmoved tobackup-metadata.ts; duplicatesaveFlaggedAccountsEntry/clearFlaggedAccountsEntrycopies removed fromaccount-port.tsaccount-save,account-snapshot,dashboard-formatters, andsettings-persist-utils; existing suites extended with concurrency, windows-path, and lock-recovery scenariosConfidence Score: 5/5
flagged-save-entry.tsverified to exist. no missing required files.Important Files Changed
Sequence Diagram
sequenceDiagram participant Caller participant describeAccountSnapshot participant statSnapshot participant loadAccountsFromPath Caller->>describeAccountSnapshot: (path, kind, deps) describeAccountSnapshot->>statSnapshot: stat(path) alt EBUSY/EPERM (windows lock) statSnapshot-->>describeAccountSnapshot: { exists: true } (no bytes/mtimeMs) else success statSnapshot-->>describeAccountSnapshot: { exists: true, bytes, mtimeMs } else ENOENT statSnapshot-->>describeAccountSnapshot: { exists: false } describeAccountSnapshot-->>Caller: { exists: false, valid: false } end describeAccountSnapshot->>loadAccountsFromPath: load(path) loadAccountsFromPath-->>describeAccountSnapshot: { normalized, schemaErrors, storedVersion } loop up to 2 retries (if bytes/mtimeMs still missing) describeAccountSnapshot->>statSnapshot: stat(path) retry statSnapshot-->>describeAccountSnapshot: refreshedStats end note over describeAccountSnapshot: bytes ?? 0, mtimeMs ?? 0 (locked fallback) describeAccountSnapshot-->>Caller: BackupSnapshotMetadata (valid/invalid)Prompt To Fix All With AI
Reviews (1): Last reviewed commit: "Fix storage import after unique replay" | Re-trigger Greptile