From ce4b59d655e60a86af98abf510976f691182f1b6 Mon Sep 17 00:00:00 2001 From: Maggie Appleton <5599295+MaggieAppleton@users.noreply.github.com> Date: Fri, 2 Oct 2026 22:23:21 +0100 Subject: [PATCH 1/3] Widen the default chat pane by 60px --- apps/web/src/workspace.tsx | 2 +- docs/jev-issues/JEV-006.md | 40 +++++++++++++++++++ docs/jev-issues/README.md | 17 ++++++++ e2e/conversation-plan-layout.e2e.ts | 8 ++-- .../exceptions/dynamic-web.json | 4 +- 5 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 docs/jev-issues/JEV-006.md create mode 100644 docs/jev-issues/README.md diff --git a/apps/web/src/workspace.tsx b/apps/web/src/workspace.tsx index 447145ad..a1e9733b 100644 --- a/apps/web/src/workspace.tsx +++ b/apps/web/src/workspace.tsx @@ -34,7 +34,7 @@ import type { export type Pane = "chat"; const CHAT_PANE = { - initial: 304, + initial: 364, max: 400, min: 304, storageKey: "chopin:pane:chat", diff --git a/docs/jev-issues/JEV-006.md b/docs/jev-issues/JEV-006.md new file mode 100644 index 00000000..3ad4afcb --- /dev/null +++ b/docs/jev-issues/JEV-006.md @@ -0,0 +1,40 @@ +# JEV-006 — Widen the default chat pane by 60px + +Status: Verified; preparing fix PR. PR: Pending. Reported as “Issue 5”; stable ID: JEV-006. + +The chat pane is too narrow by default. Maggie requested about 60px more width. +The existing workspace is the reference; the approved end state is the same chat +surface with more horizontal space. Specs and routine choices are preapproved. + +## Design and scope + +Change `CHAT_PANE.initial` in `apps/web/src/workspace.tsx` from `304` to `364`. +Keep the existing `304–400` resize range, storage key, saved user widths, and +compact full-width chat behavior. This changes the default without overriding an +intentional size. Raising all three bounds was considered but would change more +than the requested default. No storage migration, new component or server change. + +## Small implementation plan + +- [x] Implementer owns the one-line workspace default change and any required + exact existing design-contract hash renewal. No unrelated layout changes. +- [x] Independent tester runs existing resize/persistence browser checks and + measures a fresh default at desktop and compact sizes; capture the real UI. +- [x] Reviewer checks scope and compatibility. Run `bun run fix`, `bun run types`, + `bun run ci`, and inspect the final diff. No redundant new test for the constant. +- [ ] Orchestrator owns this record/index and a fix PR targeting + `Maggie/jev-chat-product`, with verified inline UI image; no merge or direct + prototype push. + +Verification: the independent tester checked the fresh 364px default, keyboard +minimum 304px and maximum 400px, saved 400px width after reload, compact layouts at +893px and 390px without horizontal overflow, and restored width at 1280px. The 11 existing +shell checks, 2 layout checks and 1 temporary measurement check pass. Both layout +checks pass after reducing their drag from 40px to +20px so keyboard resizing still has room under the existing 400px maximum. +Independent review approved the one-value change, unchanged bounds/storage/compact +branch, and two exact existing design-contract hash renewals. Types, repository CI +and diff checks pass. The real UI comparison shows the same chat at 304px and 364px, captured with +the existing resize control and a fresh default. It will be attached and verified +in the fix PR before handoff. Use disposable +fixtures; preserve the live prototype at port 8787 and its document unchanged. diff --git a/docs/jev-issues/README.md b/docs/jev-issues/README.md new file mode 100644 index 00000000..21cb3368 --- /dev/null +++ b/docs/jev-issues/README.md @@ -0,0 +1,17 @@ +# Jev issue queue + +Fix PRs target `Maggie/jev-chat-product`; [prototype PR #241](https://github.com/githubnext/chopin/pull/241) +remains draft. One issue per fix PR; no automatic merges or direct prototype pushes. + +| ID | Problem | Status | PR | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------- | ----------------------------------------------------- | +| [JEV-001](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-001.md) | Incorrect decision anchors and overlapping markers | Ready for Maggie’s review | [#242](https://github.com/githubnext/chopin/pull/242) | +| [JEV-002](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-002.md) | Stale rationale after changing a choice | Queued | Pending | +| [JEV-003](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-003.md) | Useful questions/preferences unapplied; incomplete review recovery | Queued; determine separate recovery scopes before implementation | Pending | +| [JEV-004](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-004.md) | Baseline CI conversation-capacity timeouts | Queued | Pending | +| [JEV-005](https://github.com/githubnext/chopin/blob/maggie/jev-005-click-debug-popovers/docs/jev-issues/JEV-005.md) | Click-only Jev debug popovers with code-icon buttons | Ready for Maggie’s review | [#243](https://github.com/githubnext/chopin/pull/243) | +| [JEV-006](JEV-006.md) | Default chat pane 60px wider | Verified; preparing fix PR | Pending | + +Evidence: [live browser pass](../jev-live-browser-test.md), +[UI reconciliation](../jev-ui-reconciliation.md). Baseline: +`27eb3724a6e7ba3020552e7a1fa17f234811941b`. Notes first recorded 2 October 2026. diff --git a/e2e/conversation-plan-layout.e2e.ts b/e2e/conversation-plan-layout.e2e.ts index 19f342d0..8f532a28 100644 --- a/e2e/conversation-plan-layout.e2e.ts +++ b/e2e/conversation-plan-layout.e2e.ts @@ -11,7 +11,7 @@ function chatPane(page: Page) { return page.getByRole("complementary", { includeHidden: true, name: "Chat" }); } -test("desktop Chat sits before the document at its initial 304px width", async ({ join, page }) => { +test("desktop Chat sits before the document at its initial 364px width", async ({ join, page }) => { await page.setViewportSize({ width: 1280, height: 800 }); await join("ana"); let chat = chatPane(page); @@ -19,7 +19,7 @@ test("desktop Chat sits before the document at its initial 304px width", async ( for (let width of [1280, 1440]) { await page.setViewportSize({ width, height: 800 }); - await expect.poll(async () => (await box(chat)).width).toBeCloseTo(304, 0); + await expect.poll(async () => (await box(chat)).width).toBeCloseTo(364, 0); let [chatBox, documentBox, frameBox] = await Promise.all([ box(chat), box(document), @@ -47,11 +47,11 @@ test("the Chat edge grows right, keeps its left-side reopen control, and remembe await page.mouse.move(dragX, dragY); await page.mouse.down(); - await page.mouse.move(dragX + 40, dragY, { + await page.mouse.move(dragX + 20, dragY, { steps: 4, }); await page.mouse.up(); - await expect.poll(async () => (await box(chat)).width).toBeGreaterThan(initial.width + 30); + await expect.poll(async () => (await box(chat)).width).toBeGreaterThan(initial.width + 10); expect((await box(chat)).x).toBeCloseTo(initial.x, 0); let pointerWidth = (await box(chat)).width; diff --git a/scripts/design-contract/exceptions/dynamic-web.json b/scripts/design-contract/exceptions/dynamic-web.json index 07142142..f153291b 100644 --- a/scripts/design-contract/exceptions/dynamic-web.json +++ b/scripts/design-contract/exceptions/dynamic-web.json @@ -214,7 +214,7 @@ 1 ] ], - "sourceHash": "5f41df3a09f1671ac41a3b0b70cd4416efecbcc76e7ed4a45d16b49b7e29c49d" + "sourceHash": "7b07be5a575fd36ebaac2f95b3f08258126e1efb2a2b3c48790502e63d382f7f" }, { "file": "apps/web/src/workspace.tsx", @@ -249,7 +249,7 @@ 2 ] ], - "sourceHash": "5f41df3a09f1671ac41a3b0b70cd4416efecbcc76e7ed4a45d16b49b7e29c49d" + "sourceHash": "7b07be5a575fd36ebaac2f95b3f08258126e1efb2a2b3c48790502e63d382f7f" }, { "file": "apps/web/src/navigation-dialog.tsx", From a6f7f1db571a4a59b4de3273ea53170d509cc3cf Mon Sep 17 00:00:00 2001 From: Maggie Appleton <5599295+MaggieAppleton@users.noreply.github.com> Date: Fri, 2 Oct 2026 22:24:38 +0100 Subject: [PATCH 2/3] Record JEV-006 PR and verified width comparison --- docs/jev-issues/JEV-006.md | 29 +++++++++++++++-------------- docs/jev-issues/README.md | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/jev-issues/JEV-006.md b/docs/jev-issues/JEV-006.md index 3ad4afcb..03c00a5b 100644 --- a/docs/jev-issues/JEV-006.md +++ b/docs/jev-issues/JEV-006.md @@ -1,6 +1,6 @@ # JEV-006 — Widen the default chat pane by 60px -Status: Verified; preparing fix PR. PR: Pending. Reported as “Issue 5”; stable ID: JEV-006. +Status: Ready for Maggie’s review. PR: [#244](https://github.com/githubnext/chopin/pull/244). Reported as “Issue 5”; stable ID: JEV-006. The chat pane is too narrow by default. Maggie requested about 60px more width. The existing workspace is the reference; the approved end state is the same chat @@ -22,19 +22,20 @@ than the requested default. No storage migration, new component or server change measures a fresh default at desktop and compact sizes; capture the real UI. - [x] Reviewer checks scope and compatibility. Run `bun run fix`, `bun run types`, `bun run ci`, and inspect the final diff. No redundant new test for the constant. -- [ ] Orchestrator owns this record/index and a fix PR targeting +- [x] Orchestrator owns this record/index and a fix PR targeting `Maggie/jev-chat-product`, with verified inline UI image; no merge or direct prototype push. -Verification: the independent tester checked the fresh 364px default, keyboard -minimum 304px and maximum 400px, saved 400px width after reload, compact layouts at -893px and 390px without horizontal overflow, and restored width at 1280px. The 11 existing -shell checks, 2 layout checks and 1 temporary measurement check pass. Both layout -checks pass after reducing their drag from 40px to -20px so keyboard resizing still has room under the existing 400px maximum. -Independent review approved the one-value change, unchanged bounds/storage/compact -branch, and two exact existing design-contract hash renewals. Types, repository CI -and diff checks pass. The real UI comparison shows the same chat at 304px and 364px, captured with -the existing resize control and a fresh default. It will be attached and verified -in the fix PR before handoff. Use disposable -fixtures; preserve the live prototype at port 8787 and its document unchanged. +Verification: 11 existing shell checks, 2 layout checks and 1 temporary measurement +check pass. Chromium confirmed a fresh 364px default at 1440px, the unchanged 304px +minimum and 400px maximum, saved 400px after reload, compact layouts at 893px and +390px without horizontal overflow, and restored width at 1280px. The existing +resize test now drags 20px so its keyboard step still fits below the 400px maximum. +Independent review approved the one-value change and two exact hash renewals. +Formatting, types, repository CI and diff checks pass. + +The real UI comparison shows identical chat messages at 304px and 364px, captured +with the existing resize control and a fresh default. PR #244 contains exactly one +inline GitHub attachment with useful alt text, verified HTTP 200 and `image/png`; +no local image reference remains. No merge or direct prototype push. Disposable +services are stopped; the live prototype at port 8787 and its document are unchanged. diff --git a/docs/jev-issues/README.md b/docs/jev-issues/README.md index 21cb3368..15ec4c3b 100644 --- a/docs/jev-issues/README.md +++ b/docs/jev-issues/README.md @@ -10,7 +10,7 @@ remains draft. One issue per fix PR; no automatic merges or direct prototype pus | [JEV-003](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-003.md) | Useful questions/preferences unapplied; incomplete review recovery | Queued; determine separate recovery scopes before implementation | Pending | | [JEV-004](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-004.md) | Baseline CI conversation-capacity timeouts | Queued | Pending | | [JEV-005](https://github.com/githubnext/chopin/blob/maggie/jev-005-click-debug-popovers/docs/jev-issues/JEV-005.md) | Click-only Jev debug popovers with code-icon buttons | Ready for Maggie’s review | [#243](https://github.com/githubnext/chopin/pull/243) | -| [JEV-006](JEV-006.md) | Default chat pane 60px wider | Verified; preparing fix PR | Pending | +| [JEV-006](JEV-006.md) | Default chat pane 60px wider | Ready for Maggie’s review | [#244](https://github.com/githubnext/chopin/pull/244) | Evidence: [live browser pass](../jev-live-browser-test.md), [UI reconciliation](../jev-ui-reconciliation.md). Baseline: From 75836b5b3ea99124a4912195863ca8c7a8c9ec32 Mon Sep 17 00:00:00 2001 From: Maggie Appleton <5599295+MaggieAppleton@users.noreply.github.com> Date: Sat, 3 Oct 2026 05:47:19 +0100 Subject: [PATCH 3/3] Remove planning artifacts and streamline regression coverage --- docs/jev-issues/JEV-006.md | 41 ----------------------------- docs/jev-issues/README.md | 17 ------------ e2e/conversation-plan-layout.e2e.ts | 5 ++-- 3 files changed, 3 insertions(+), 60 deletions(-) delete mode 100644 docs/jev-issues/JEV-006.md delete mode 100644 docs/jev-issues/README.md diff --git a/docs/jev-issues/JEV-006.md b/docs/jev-issues/JEV-006.md deleted file mode 100644 index 03c00a5b..00000000 --- a/docs/jev-issues/JEV-006.md +++ /dev/null @@ -1,41 +0,0 @@ -# JEV-006 — Widen the default chat pane by 60px - -Status: Ready for Maggie’s review. PR: [#244](https://github.com/githubnext/chopin/pull/244). Reported as “Issue 5”; stable ID: JEV-006. - -The chat pane is too narrow by default. Maggie requested about 60px more width. -The existing workspace is the reference; the approved end state is the same chat -surface with more horizontal space. Specs and routine choices are preapproved. - -## Design and scope - -Change `CHAT_PANE.initial` in `apps/web/src/workspace.tsx` from `304` to `364`. -Keep the existing `304–400` resize range, storage key, saved user widths, and -compact full-width chat behavior. This changes the default without overriding an -intentional size. Raising all three bounds was considered but would change more -than the requested default. No storage migration, new component or server change. - -## Small implementation plan - -- [x] Implementer owns the one-line workspace default change and any required - exact existing design-contract hash renewal. No unrelated layout changes. -- [x] Independent tester runs existing resize/persistence browser checks and - measures a fresh default at desktop and compact sizes; capture the real UI. -- [x] Reviewer checks scope and compatibility. Run `bun run fix`, `bun run types`, - `bun run ci`, and inspect the final diff. No redundant new test for the constant. -- [x] Orchestrator owns this record/index and a fix PR targeting - `Maggie/jev-chat-product`, with verified inline UI image; no merge or direct - prototype push. - -Verification: 11 existing shell checks, 2 layout checks and 1 temporary measurement -check pass. Chromium confirmed a fresh 364px default at 1440px, the unchanged 304px -minimum and 400px maximum, saved 400px after reload, compact layouts at 893px and -390px without horizontal overflow, and restored width at 1280px. The existing -resize test now drags 20px so its keyboard step still fits below the 400px maximum. -Independent review approved the one-value change and two exact hash renewals. -Formatting, types, repository CI and diff checks pass. - -The real UI comparison shows identical chat messages at 304px and 364px, captured -with the existing resize control and a fresh default. PR #244 contains exactly one -inline GitHub attachment with useful alt text, verified HTTP 200 and `image/png`; -no local image reference remains. No merge or direct prototype push. Disposable -services are stopped; the live prototype at port 8787 and its document are unchanged. diff --git a/docs/jev-issues/README.md b/docs/jev-issues/README.md deleted file mode 100644 index 15ec4c3b..00000000 --- a/docs/jev-issues/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Jev issue queue - -Fix PRs target `Maggie/jev-chat-product`; [prototype PR #241](https://github.com/githubnext/chopin/pull/241) -remains draft. One issue per fix PR; no automatic merges or direct prototype pushes. - -| ID | Problem | Status | PR | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------- | ----------------------------------------------------- | -| [JEV-001](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-001.md) | Incorrect decision anchors and overlapping markers | Ready for Maggie’s review | [#242](https://github.com/githubnext/chopin/pull/242) | -| [JEV-002](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-002.md) | Stale rationale after changing a choice | Queued | Pending | -| [JEV-003](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-003.md) | Useful questions/preferences unapplied; incomplete review recovery | Queued; determine separate recovery scopes before implementation | Pending | -| [JEV-004](https://github.com/githubnext/chopin/blob/maggie/jev-001-decision-anchors/docs/jev-issues/JEV-004.md) | Baseline CI conversation-capacity timeouts | Queued | Pending | -| [JEV-005](https://github.com/githubnext/chopin/blob/maggie/jev-005-click-debug-popovers/docs/jev-issues/JEV-005.md) | Click-only Jev debug popovers with code-icon buttons | Ready for Maggie’s review | [#243](https://github.com/githubnext/chopin/pull/243) | -| [JEV-006](JEV-006.md) | Default chat pane 60px wider | Ready for Maggie’s review | [#244](https://github.com/githubnext/chopin/pull/244) | - -Evidence: [live browser pass](../jev-live-browser-test.md), -[UI reconciliation](../jev-ui-reconciliation.md). Baseline: -`27eb3724a6e7ba3020552e7a1fa17f234811941b`. Notes first recorded 2 October 2026. diff --git a/e2e/conversation-plan-layout.e2e.ts b/e2e/conversation-plan-layout.e2e.ts index 8f532a28..3e27a689 100644 --- a/e2e/conversation-plan-layout.e2e.ts +++ b/e2e/conversation-plan-layout.e2e.ts @@ -11,15 +11,16 @@ function chatPane(page: Page) { return page.getByRole("complementary", { includeHidden: true, name: "Chat" }); } -test("desktop Chat sits before the document at its initial 364px width", async ({ join, page }) => { +test("desktop Chat retains its width and stays beside the document as the window grows", async ({ join, page }) => { await page.setViewportSize({ width: 1280, height: 800 }); await join("ana"); let chat = chatPane(page); let document = page.locator("main"); + let initialWidth = (await box(chat)).width; for (let width of [1280, 1440]) { await page.setViewportSize({ width, height: 800 }); - await expect.poll(async () => (await box(chat)).width).toBeCloseTo(364, 0); + await expect.poll(async () => (await box(chat)).width).toBeCloseTo(initialWidth, 0); let [chatBox, documentBox, frameBox] = await Promise.all([ box(chat), box(document),