FN-5972: fix mobile auto-merge blank dashboard

Restore mobile auto-merge dashboard stability and broaden regression coverage.

- share the mobile media query between viewport detection and board stabilization so landscape phones stay on the mobile path
- add an integration regression suite for toggling auto-merge across mobile, tablet, desktop, rollback, and task review surfaces
- expand dashboard and CLI tests, keep the new published changeset, and preserve related vitest coverage lists and safety comments

Files changed:
$(git diff --cached --stat)

Fusion-Task-Id: FN-5972

Fusion-Task-Lineage: f3a3bbae-21c2-451b-b24f-848cc12d0542
This commit is contained in:
gsxdsm
2026-06-07 17:02:48 -07:00
parent ec8e4d3b0d
commit fa23782dbb
39 changed files with 648 additions and 22 deletions

View File

@@ -349,6 +349,25 @@ describe("project commands", () => {
await expect(runProjectAdd("bad name", "/tmp")).rejects.toThrow("process.exit:1");
});
it("prompts for a missing project name in interactive add mode", async () => {
mockListProjects.mockResolvedValue([]);
mockRegisterProject.mockResolvedValue({
id: "proj-1",
name: "demo",
path: ".",
isolationMode: "in-process",
});
mockQuestion.mockResolvedValueOnce("demo");
const { runProjectAdd } = await import("../project.js");
await expect(runProjectAdd("", ".", { force: true })).resolves.toBeUndefined();
expect(mockQuestion).toHaveBeenCalledWith(expect.stringContaining("Project name"));
expect(mockRegisterProject).toHaveBeenCalledWith(
expect.objectContaining({ name: "demo" }),
);
});
it("validation exits on missing required args for runProjectRemove", async () => {
const { runProjectRemove } = await import("../project.js");
await expect(runProjectRemove("")).rejects.toThrow("process.exit:1");