Conversation
…edits - Native launch fallback: strip CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST only when the admission credential is ours, so a user-owned gateway keeps its guard instead of losing it while the credential stays. - Desktop profile rebuilds: carry appliedFingerprint/appliedAt only when the desired profile is unchanged, so a saved edit no longer reports the old on-disk config as applied. The management PUT discards client-supplied markers and restores the server-owned ones only for an identical result. - ocx sync: persist the fingerprint of the exact Desktop config just written through the config-mutation lock, so the applied marker advances with the bytes instead of going stale. (cherry picked from commit 3254286) (cherry picked from commit 9b81802d349220043e8956929bfd545b0927c86a)
…rifted mid-sync The carried sync stamps the fingerprint of the Desktop bytes it just wrote onto the persisted profile under the config-mutation lock. If another writer saved a different desired profile between the Desktop write and the marker commit, the new profile would claim the old bytes as applied. The callback now compares the persisted profile's desired content with the profile the write actually used and skips the marker when they differ, reporting the skip instead of a clean change. Unchanged profiles still store the fingerprint. Co-authored-by: luvs01 <luvs01@users.noreply.github.com> (cherry picked from commit 4992a7740322636483dc18063c3f7393719b3abc)
(cherry picked from commit 7597bce) (cherry picked from commit 0abd90ea579c1d59ee7dcb666ef8037a986c21a5)
Four cases sat at the 5s timeout because fixture placement paid for work no assertion inspects: saveConfig's mutation-lock and ACL subprocess per write, and buildClaudeDesktopState's runtime probe plus bundled-catalog subprocess. Place fixture config bytes directly, seed the runtime/bundled caches through the existing test seams, and split the no-arg and --static cases into their own rows. Assertions, flags, ACL hardening on verified paths, and the 5s limit are unchanged.
…profile removal The sync route compared the persisted desired profile against a normalized empty profile when the desired profile had been deleted between the write and the marker commit, so a concurrent delete or empty-profile write still passed the presence guard and resurrected the profile with a fresh fingerprint. Compare presence first, then content, and decline the marker write when the persisted profile no longer matches what was written.
…37-desktop-applied-on-dev
|
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. |
리뷰 · 우선순위 61 / 80이 PR은 Claude Desktop의 “지금 디스크에 적용된 설정”을 가리키는 표시( 라인 - 메인테이너의 판단이 필요한 지점 표시 스킵을 너의 추천 방향은 맞고, 표시를 서버 소유로 두고 경합 때 삭제된 프로필을 되살리지 않는 쪽이 맞습니다. nested assignment 키 순서도 family처럼 정규화하거나, 비교를 필드 단위로 바꾸면 defaults 순서 버그와 같은 종류의 재발을 줄입니다. sync 스킵은 호출 계약부터 정한 뒤 문서/테스트를 맞추세요. #5337은 이미 닫혀 있으니 이 PR로 이어서 보고, 중복 carry PR이 생기면 닫으세요. ready 전환 전에는 바꾼 스위트 CI와 managed-by-host/표시 위조 경로만 짧게라도 확인한 뒤 머지하는 편이 안전합니다. 이 댓글은 grok-bot이 작성했습니다 |
…37-desktop-applied-on-dev
|
Carried into #5619 at 9d0999f (same net patch as the earlier 2f61b77) with your authorship kept. Follow-ups apply the same applied-marker compare to the provider-change writer, the client-sync writer and the profile PUT, so a concurrent edit or a newer marker is never overwritten. Closing in favor of #5619. Thank you! |
Summary
Consolidate #5337 with the related CLI explanation correction so Claude Desktop's saved settings and applied-state markers describe the configuration actually written. Editing a desired profile clears stale applied markers; a sync that races with another edit or deletion reports that its marker was skipped instead of claiming the newer settings are applied.
appliedFingerprint/appliedAtonly for unchanged profile content, reject client-supplied markers, and persist the fingerprint of the exact Desktop write through the config mutation lock.claudeCodedeletion or deletion of an explicitly empty profile stays deleted. An initially absent profile and an unchanged profile still record successful writes normally.Verification
9d0999f29ce0dde6f396e9670f720c0dbc779c79, based on deva4bdc03054d4a449c7762eec9853f04557a06fb4. The clean dev merge at955d93cpreserved all 11 contribution files from testedd933915;2f61b77then fixed family-order comparison and added its regression/contract. The current dev refresh leaves all 11 final Desktop contribution files and all proxy sources undersrc/unchanged from that tested2f61b77head.bun run test tests/clients/sync-client-integrations.test.tson pinned Bun 1.4.0 passed 37 tests, 0 failures, 238 assertions, 22.10 seconds, including edited/deleted/empty/initially-absent desired profiles and existing sync contracts.bun run test -- ./tests/clients/sync-client-integrations.test.ts ./tests/clients/desktop-profile.test.tspassed 55 tests, 0 failures, 653 assertions, 30.71 seconds on pinned Bun 1.4.0. Final typecheck, structure, privacy, file-size ratchet and whitespace checks passed. The earlier 37-test run is separate and not added to this total.icacls ETIMEDOUT; that failure is retained and the precise OS cause is unconfirmed. A separate diagnostic used a 30-second timeout and is not acceptance evidence. These samples are not combined into one passing run or a claim that all Windows timing failures are solved.Checklist