fix(app): open Changes on the populated comparison (#3636)

* fix(app): restore smart Changes comparison selection

The tab migration persisted the selected comparison, pinning Changes to an empty view after checkout state changed. Keep comparison overrides ephemeral per surface and expire them when dirtiness changes, while preserving only presentation state in tabs.

* chore(app): date Changes compatibility cleanup
This commit is contained in:
Mohamed Boudra
2026-08-21 11:23:43 +02:00
committed by GitHub
parent 04624cb419
commit a7f3bf7abb
17 changed files with 228 additions and 45 deletions
@@ -484,7 +484,7 @@ describe("workspace-layout-store actions", () => {
).toEqual(override);
});
it("keeps every Changes state field independent across explicit instances", () => {
it("keeps every Changes presentation field independent across explicit instances", () => {
const workspaceKey = createWorkspaceKey();
const store = workspaceLayoutStore.getState();
const first = store.openTab({
@@ -498,8 +498,6 @@ describe("workspace-layout-store actions", () => {
intent: "new",
})!;
const changed: ChangesState = {
mode: "base",
baseRef: "origin/main",
layout: "split" as const,
wrapLines: true,
hideWhitespace: true,
@@ -811,8 +809,6 @@ describe("workspace-layout-store actions", () => {
.getState()
.openTab({ workspaceKey: workspaceKey, target: { kind: "working_diff" }, intent: "new" })!;
const firstState: ChangesState = {
mode: "base" as const,
baseRef: "origin/main",
layout: "split" as const,
wrapLines: true,
hideWhitespace: true,
@@ -823,8 +819,6 @@ describe("workspace-layout-store actions", () => {
commitsCollapsed: false,
};
const secondState: ChangesState = {
mode: "base" as const,
baseRef: "release",
layout: "unified" as const,
wrapLines: false,
hideWhitespace: false,