Skip to content

Add beta branch-aware package workspaces - #420

Draft
Meris Nici (promeris) wants to merge 43 commits into
mainfrom
promeris-codex/fs-package-workspace
Draft

Add beta branch-aware package workspaces#420
Meris Nici (promeris) wants to merge 43 commits into
mainfrom
promeris-codex/fs-package-workspace

Conversation

@promeris

@promeris Meris Nici (promeris) commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds beta filesystem-style package workspaces with lightweight conditional manifests and incremental file synchronization.

Testing

  • npm run build
  • workspace tests: 103 passed

Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace.service.ts Outdated
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts Outdated
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace-change-classifier.ts Outdated
Comment thread src/commands/workspace/workspace-change-classifier.ts
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace-git.service.ts Fixed
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace-push.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace-pull.service.ts Outdated
Comment thread src/commands/workspace/workspace-pull.service.ts Outdated
Comment thread src/commands/workspace/workspace-pull.service.ts
Comment thread src/commands/workspace/workspace.service.ts
Comment thread src/commands/workspace/workspace-pull.service.ts
Comment thread src/commands/workspace/workspace.service.ts

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 3 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 35692cf. Configure here.

"revision",
"serverRevision",
"filesystemName",
];

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Manifest metadata allowlist too narrow

Medium Severity

FORBIDDEN_METADATA_FIELDS used when validating and writing remote manifest metadata is a strict subset of NON_SEMANTIC_NODE_FIELDS enforced when reading local node files. Fields such as createdBy, updatedBy, lastModifiedAt, and draft IDs can pass pull validation, get written under .package/nodes, then cause later status, push, or pull calls to reject the workspace as invalid node metadata.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 35692cf. Configure here.

break;
}
length = Math.min(64, length + 4);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suffix uniqueness check always passes

Low Severity

In disambiguate, uniquePrefixes is computed with Set.add inside every. Set.add returns the set object, which is always truthy, so prefix uniqueness is never actually verified. Sibling nodes whose node-key hashes share a short prefix can receive identical derived filenames when the occupied-name check also passes.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 35692cf. Configure here.

@sonarqubecloud

Copy link
Copy Markdown

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