Skip to content

feat(sync): keep project lists device-local - #1568

Merged
vastsa merged 1 commit into
mainfrom
feat/config-sync-device-local-project-lists
Oct 11, 2026
Merged

vastsa merged 1 commit into
mainfrom
feat/config-sync-device-local-project-lists

Conversation

@vastsa

@vastsa vastsa commented Oct 11, 2026

Copy link
Copy Markdown
Owner

Why

This publishes the one local-only deliverable that was sitting on the local
main branch and never reached remote main: project lists describe the
workspace of a particular device, so portable configuration sync must not
recreate them on another device. Until now projects was still a public
ConfigSyncCategory, so a synced or restored vault could register unwanted
workspaces on the receiving machine.

The rest of that local branch (chore(sync) integration commits and the merge
commit) contains only content that remote main already has in a newer form, so
this branch publishes the feature commit alone, rebased onto current main.

Change

  • Remove projects from CONFIG_SYNC_CATEGORIES, the category UI, the adapter
    registry, capture, and application; normalize saved and draft category
    selections to the supported set.
  • Ignore retired projects entities in existing vault revisions and local
    recovery state, after the revision has been validated and authenticated in
    full, so local projects and supported configuration history survive an
    upgrade.
  • Keep project-scoped MCP, skills, instructions, memory, and automation
    mappings working through their logical identities and explicit local folder
    mappings. Local project records and remote revision history stay intact, and
    no project deletions are published to retire the category.
  • New ADR docs/adr/device-local-project-lists-in-config-sync.md (plus its
    zh-CN mirror and index entry), and the updated
    03-runtime/22-config-sync.md / 06-delivery/04-e2e-test-plan.md in both
    locales.

Consumers of ConfigSyncCategory must stop requesting projects. Existing
encrypted vaults keep validating; older clients may still publish project
entities, and new clients ignore them. Process ownership, encryption, and
approval boundaries are unchanged, and no data is deleted.

Validation

Base origin/main 9d3273fd9; candidate 6c5bdae19.

  • cargo test -p host-core --locked → 823 passed, 0 failed (includes
    legacy_project_revision_sync_and_restore_preserve_local_projects and the
    config-sync S3 suite).
  • cargo fmt --check -p host-core clean; cargo clippy -p host-core --all-targets reports only the two pre-existing transcripts.rs warnings
    that this change does not touch.
  • Desktop suite node --test test/*.test.mjs → 3788 passed, 0 failed, including
    the new config-sync-form / config-sync-preferences / config-sync-user-path
    cases.
  • tsc -p tsconfig.json --noEmit clean. (In a worktree that reuses the host
    build artifacts, the linked packages/shared/dist is stale; resolving
    @pi-desktop/shared to this branch's source reproduces the CI arrangement and
    the check passes. CI builds the packages before typechecking.)
  • packages/shared vitest → 1236 passed; packages/i18n vitest → 30 passed.
  • biome lint clean; check-locales (85 pairs) and check-docs (569 pages)
    pass.

Project lists describe the workspace on a particular device and should not be
recreated by portable configuration sync. Remove their category and adapters
while retaining scoped capability mappings.

Ignore retired project records in existing vault revisions and local recovery
state so upgrades preserve local projects and supported configuration history.
Copilot AI balanced review requested due to automatic review settings October 11, 2026 15:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vastsa
vastsa merged commit eec988c into main Oct 11, 2026
5 checks passed
@vastsa
vastsa deleted the feat/config-sync-device-local-project-lists branch October 11, 2026 15:08
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.

2 participants