Keep new worktrees clean when setup changes are uncommitted (#3311)

* fix(worktrees): preserve selected base config

New worktrees were overwriting the selected ref's paseo.json with source-checkout bytes, which could create an accidental revert in an otherwise fresh workspace. Keep committed base config authoritative and warn when locally saved setup changes still need to be committed.

* fix(worktrees): seed config exclusively

* fix(projects): refresh config status on focus
This commit is contained in:
Mohamed Boudra
2026-08-13 12:02:15 +02:00
committed by GitHub
parent 9a7301d9a0
commit c190fed27c
23 changed files with 460 additions and 55 deletions
@@ -138,6 +138,34 @@ const SourceSchema = z.object({
);
});
it("accepts project config responses with and without setup commit status", () => {
const payload = {
requestId: "project-config-read",
repoRoot: "/repo",
ok: true,
config: null,
revision: null,
};
const envelope = (
responsePayload: typeof payload & {
hasUncommittedWorktreeSetupChanges?: boolean;
},
) => ({
type: "session",
message: {
type: "read_project_config_response",
payload: responsePayload,
},
});
expect(GeneratedWSOutboundMessageSchema.safeParse(envelope(payload)).success).toBe(true);
expect(
GeneratedWSOutboundMessageSchema.safeParse(
envelope({ ...payload, hasUncommittedWorktreeSetupChanges: true }),
).success,
).toBe(true);
});
it("accepts a compact provider snapshot envelope", () => {
const envelope = {
type: "session",