Open threads in place - the duplicate side panel is gone

The right-hand thread panel repeated exactly what the flat timeline already
showed. Opening a thread now focuses the center pane itself: back control,
board state, the root message with its replies, board intervention
controls, and a thread reply composer - one conversation surface, never
two. The release contract also catches up with the icon shipping inside
the package, a pin the icon commit should have updated.
This commit is contained in:
ZacharyZhang-NY committed 2026-07-07 00:35:42 -04:00
1 parent 3246ea5f98
commit 62e663ed90
4 files changed
+73 -71

No files matched your search

@@ -64,8 +64,12 @@ describe("desktop release contract", () => {
expect(topLevelValue(config, "asar")).toBe("true");
expect(directories).toContain("output: release");
expect(directories).toContain("buildResources: resources");
expect(topLevelList(config, "files")).toEqual(["out/**/*", "package.json"]);
// resources/icon.png ships inside the package so windows can load it at
// runtime on Windows and Linux.
expect(topLevelList(config, "files")).toEqual(["out/**/*", "package.json", "resources/icon.png"]);
expect(existsSync(join(projectRoot, "resources", "icon.png"))).toBe(true);
expect(existsSync(join(projectRoot, "resources", "icon.ico"))).toBe(true);
expect(existsSync(join(projectRoot, "resources", "icon-mac.png"))).toBe(true);
expect(existsSync(join(projectRoot, "resources", "entitlements.mac.plist"))).toBe(true);
});
+5
View File
@@ -101,8 +101,13 @@ test("onboards, hires, and creates work in the Electron shell", async () => {
await page.getByRole("button", { name: "Send" }).click();
await expect(page.getByText("@Board").first()).toBeVisible();
await expect(page.getByText("/escalate").first()).toBeVisible();
// Threads open in place: the center pane becomes the thread and the
// channel composer is gone until you go back.
await page.getByRole("button", { name: "Open thread" }).first().click();
await expect(page.getByRole("textbox", { name: "Thread reply" })).toBeVisible();
await expect(page.getByRole("textbox", { name: "Message" })).not.toBeVisible();
await page.getByRole("button", { name: "Close thread" }).click();
await expect(page.getByRole("textbox", { name: "Message" })).toBeVisible();
await page.getByRole("button", { name: "Approvals" }).click();
await expect(page.getByText("Escalate release").first()).toBeVisible();