Skip to content

Add beta branch-aware package workspaces - #420

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

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

Conversation

@promeris

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

Copy link
Copy Markdown
Contributor

Description

Adds beta filesystem-style package workspaces with branch-aware clone, checkout, pull, status, push, and move commands. Git mappings stay local, and push sends incremental file changes by default.

Checklist

  • self reviewed
  • tested the changes
  • docs updated

Includes-AI-Code: true

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
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
Includes-AI-Code: true
Comment thread src/commands/workspace/workspace-change-classifier.ts
Includes-AI-Code: true
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.service.ts Outdated
Comment thread src/commands/workspace/workspace.service.ts Outdated
Comment thread src/commands/workspace/workspace-push.service.ts
Includes-AI-Code: true
@promeris Meris Nici (promeris) changed the title Add beta package workspace commands Add beta branch-aware package workspaces Aug 20, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
84.3% Coverage on New Code (required ≥ 85%)
3 New Critical Issues (required ≤ 0)
2 New Minor Issues (required ≤ 0)
B Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

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

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 2d29132. Configure here.

fs.rmSync(temporary, { recursive: true, force: true });
}
logger.info(`Reconciled Git branch '${observation.branch}' with ${packageKey}.`);
return true;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Git commits reset recorded move hints

High Severity

Any linked Git HEAD change, including a normal commit on the same branch, is treated as a target switch. synchronizeGitTarget then rewrites local state via reconcileLocalState, which replaces moveHints with only metadata path drift and drops recorded moves. pull also returns immediately after that remap, so it never applies remote files.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 2d29132. Configure here.

case "added":
if (expected) {
throw new GracefulError("Tracked file is missing synchronization state. Run workspace pull.");
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Metadata-backed additions cannot be pushed

Medium Severity

Classifier reports a metadata-backed file with no baseline as added and includes its nodeKey. Incremental push then treats any added change that still has expected metadata as unsynchronized and throws, so that status cannot be uploaded. Pull is also blocked while those local files remain, which leaves the workspace stuck.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 2d29132. Configure here.

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.

1 participant