Repository navigation
Sync off keeps every chat, and a copied older chat can no longer be wiped - #2082
Merged
Merged
Conversation
A rewind or a take onto a copied older chat removed .cell/copy-ready, so Home fell back to the untouched original, and opening that original ran CopyLegacy, which removed the copy and every turn written since. Restore now keeps this computer's own .cell bookkeeping, a take re-stamps the copy markers, and CopyLegacy refuses to remove a destination that already holds sealed turns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BucketSessionDirs is now the one walk over a project bucket and its .moving copy folder. Home, recent sessions, knowledge history and session workspaces all go through it. It reads .moving at most once and does no copy lookups at all when a bucket has no copies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With sync off, or quiet before pairing, a completed copy still opens, saved hold receipts stay dormant so a local send never waits on them, and no sync drive starts. A displaced window still refuses to send. Doctor skips unfinished copy folders and sends nothing but one read to the sync service. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With chats in the copy folder now listed, the row says `here · 2 copies …`, and the explanation wraps across its column with the projects panel's words in between, so a screen search missed it although the row said it whole. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 tasks
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.
Closes the rest of #2072 (item H). Items A, D, F, G, I, L and M landed in #2075, #2070's items in #2078, and B in #2079.
What changes
CODEAF_SYNC_URL=off, or sync quiet before pairing, Home lists every chat on this computer once: chats in the copy folder (.moving) and older chats alike. Each one opens and can be written.movablePlacereturned early, so the untouched original opened instead.TestDisplacedWindowWithLocalEmptyReadingRefusesSend).dev)..cell/copy-ready. Home then fell back to the original, and opening that original ranCopyLegacy, which removed the copy with every turn written since..cellbookkeeping (copy-ready,copy-offered,published.json,adopted.json).CopyLegacyrefuses to remove a destination that already holds sealed turns. It reopens and re-stamps a valid one, or fails without deleting anything.BucketSessionDirsis the single listing of a bucket and its copy folder, used by Home, recent sessions, knowledge history, session workspaces and the v3 layout scan. It reads.movingat most once, and makes no copy lookups at all when a bucket has no copies. Before, it made 400CopyRootand 610Copiedcalls for 200 chats with no copies.Not done, and why
codeaf-conditional-takes) comes back onPOST /v1/dir/acquire, and doctor must not create anything on the service.GET /v1/dir/listcarries no capabilities, so doctor has no read-only way to ask.codeaf-release servicekeeps the probe.Validation contract → tests
TestSyncOffHomeKeepsEveryChatOpensAndWritesdrives the real Home withCODEAF_SYNC_URL=offand with a quiet unpaired home. It opens and writes every chat and checks that zero requests reach the service. AlsoTestBucketSessionDirsKeepsMovingAndLegacyChatsOnce.TestCopiedLegacyChatKeepsCopyReadyAfterRewindandTestCopiedLegacyChatKeepsCopyReadyAfterTakeBack(borrowed project and owned workspace). Each failed before the fix.TestOpeningStaleOriginalNeverDeletesPopulatedCopyandTestCopyLegacyRefusesToWipePopulatedDestination.TestDisplacedWindowWithLocalEmptyReadingRefusesSend.TestBucketWithoutMovingMakesNoCopyLookupscounts lookups through seams. It sees 0 with no copies, and 1Copiedfor one copy among 200 chats.TestDoctorDoesNotCreateRecordsOnSyncServicechecks that it sends onlyGET /v1/dir/list, adds no namespaces, and sends nothing at all with sync off.Proof
Focused runs on the branch:
internal/cell,internal/cellstore,internal/handoff(copy, restore, rewind, materialize, take),internal/session(bucket, copy, recent, knowledge),internal/tui3(displaced, held elsewhere),cmd/codeaf(sync off, doctor, older chats, layout) andinternal/manual. gofmt, build and vet are clean. The touched-package suites run in CI.🤖 Generated with Claude Code