Keep selected projects when switching hosts (#2700)

* fix(app): preserve project selection across hosts

Rendered project identity and persisted equivalence were conflated after duplicate-project handling. Keep them separate so host changes resolve selectable equivalents deterministically without resetting legacy sidebar identity.

* fix(app): restore selected clone after host round trip

Keep manual origin and current destination placements separately so switching back restores the chosen checkout while archive gaps preserve the active host selection.

* fix(app): key status icons by project view

* fix(app): preserve origin during archive gaps
This commit is contained in:
Mohamed Boudra
2026-07-31 15:42:08 +02:00
committed by GitHub
parent 87ef631ac4
commit 99eca19a76
56 changed files with 1234 additions and 428 deletions
@@ -7,14 +7,14 @@ export interface ScheduleProjectTarget {
optionId: string;
serverId: string;
serverName: string;
projectKey: string;
projectViewKey: string;
projectName: string;
cwd: string;
isGit: boolean;
}
export function buildProjectOptionId(serverId: string, projectKey: string): string {
return `${PROJECT_OPTION_PREFIX}${serverId}:${projectKey}`;
export function buildProjectOptionId(serverId: string, projectViewKey: string): string {
return `${PROJECT_OPTION_PREFIX}${serverId}:${projectViewKey}`;
}
/**
@@ -33,10 +33,10 @@ export function buildScheduleProjectTargets(
continue;
}
targets.push({
optionId: buildProjectOptionId(host.serverId, project.projectKey),
optionId: buildProjectOptionId(host.serverId, project.viewKey),
serverId: host.serverId,
serverName: host.serverName,
projectKey: project.projectKey,
projectViewKey: project.viewKey,
projectName: host.projectName,
cwd,
isGit: Boolean(host.gitRuntime),