Skip to content

fix: preserve unmanaged dock content and add sync - #37

Merged
tevass merged 3 commits into
mainfrom
fix/35-dock-reconciliation-and-sync
Oct 31, 2026
Merged

tevass merged 3 commits into
mainfrom
fix/35-dock-reconciliation-and-sync

Conversation

@tevass

@tevass tevass commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #35: reopening a dock containing a tool-generated directory such as .dirac now preserves that content and opens the workspace normally.

  • Preserve extra files, directories, and manual symlinks during open, sync, add, and remove, while rejecting managed-link conflicts before changes.
  • Add zwd sync [workspace] to recover missing links and reconcile workspace configuration without launching Zed. Accept registered names, workspace paths, or inference from the current dock root.
  • Keep correct links in place, support case-only link renames, strengthen ownership validation, and replace lock files atomically. Update status to distinguish extra content from inconsistent managed links.
  • Keep delete as a preview; make delete --force remove the entire validated owned dock, including extra content, without following symlink targets.
  • Update usage documentation, the glossary, agent guidance, and ADR-0010; add regression coverage and a focused macOS CI job.

Validation

All 80 tests passed, along with the following checks through Devbox:

cargo fmt --all -- --check
cargo check --all-targets --locked
cargo test --locked
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo check --target x86_64-pc-windows-msvc --all-targets --locked
git diff --check

Manual Zed smoke tests and native macOS/Windows runtime checks were not performed locally. The new macOS CI job exercises case-only link rename regressions.

Impact

  • CLI behavior changed
  • Workspace format changed
  • Dock safety behavior changed
  • Release flow changed
  • Documentation only

Lock version 1 and the persistence layout remain unchanged. delete --force now deletes files stored exclusively inside the dock; its preview explains this behavior. Linked project targets remain intact.

Security and Supply Chain

  • No secrets, credentials, private paths, or generated release artifacts were added.
  • New or changed dependencies are necessary and reflected in lockfiles. No dependencies were added or changed.
  • GitHub Actions changes use least-privilege permissions.

Reconcile managed links from workspace configuration without disturbing
extra files or manual symlinks. Recover missing links, reject conflicts
before mutation, and atomically replace ownership locks.

Make delete --force remove the entire validated owned dock without
following symlink targets. Cover recovery, conflicts, ownership checks,
and complete deletion with regression tests.

Fixes #35
Distinguish case-insensitive lookup aliases from separate directory
entries before rejecting unmanaged collisions. Recreate renamed links
after removing their old managed spelling, including configuration
target changes.

Add CLI regression tests and run case-only rename coverage on macOS CI.
Local Linux suite, formatting, Clippy, and local/Windows compilation
pass; native macOS execution remains pending.
@tevass
tevass force-pushed the fix/35-dock-reconciliation-and-sync branch from ae64f04 to 74d2e27 Compare October 31, 2026 23:03
@tevass
tevass merged commit 452905f into main Oct 31, 2026
9 checks passed
@tevass
tevass deleted the fix/35-dock-reconciliation-and-sync branch October 31, 2026 23:07
@runrly-echo runrly-echo Bot mentioned this pull request Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: will not open workspace due to hidden folder

1 participant