From 768afb765819498ad6eac9b0a95ee9bf1ac65a08 Mon Sep 17 00:00:00 2001 From: Project7 Date: Mon, 8 Jun 2026 01:40:54 +0000 Subject: [PATCH] [#504] Keep editor bars from covering content --- app/web/components/PreviewPanel.test.tsx | 35 +++++ app/web/components/PreviewPanel.tsx | 16 +- app/web/components/StoriesPage.tsx | 140 +++++++++--------- ...cut-BqZI0-Rv.js => export-cut-CDJl8Zjg.js} | 2 +- .../{index-C43toXVm.js => index-CP7cx6Zm.js} | 6 +- ...{index-CcfChGEK.css => index-MOqpTOzP.css} | 2 +- app/web/dist/index.html | 4 +- 7 files changed, 125 insertions(+), 80 deletions(-) rename app/web/dist/assets/{export-cut-BqZI0-Rv.js => export-cut-CDJl8Zjg.js} (98%) rename app/web/dist/assets/{index-C43toXVm.js => index-CP7cx6Zm.js} (97%) rename app/web/dist/assets/{index-CcfChGEK.css => index-MOqpTOzP.css} (74%) diff --git a/app/web/components/PreviewPanel.test.tsx b/app/web/components/PreviewPanel.test.tsx index 9059d6a..f6e01f6 100644 --- a/app/web/components/PreviewPanel.test.tsx +++ b/app/web/components/PreviewPanel.test.tsx @@ -82,4 +82,39 @@ describe("PreviewPanel — Genesis workflow-coach cut actions (#429)", () => { fireEvent.click(screen.getByTestId("genesis-edit-mode-cuts")); expect(await screen.findByTestId("cut-list-panel")).toBeInTheDocument(); }); + + it("keeps the opening-text save bar and episode footer outside the editor body after repeated tab/subview switches (#504)", async () => { + render( + , + ); + + await screen.findByTestId("workflow-coach"); + + for (let i = 0; i < 2; i++) { + fireEvent.click(screen.getByRole("button", { name: /^Edit/ })); + expect(await screen.findByTestId("prose-editor-shell")).toBeInTheDocument(); + expect(screen.getByTestId("prose-editor-savebar")).toHaveTextContent( + "No changes", + ); + expect(screen.getByTestId("preview-panel-footer")).toBeInTheDocument(); + expect(screen.getByTestId("cartoon-review-publish")).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId("genesis-edit-mode-cuts")); + expect(await screen.findByTestId("cut-list-panel")).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId("genesis-edit-mode-text")); + expect(await screen.findByTestId("prose-editor-textarea")).toBeInTheDocument(); + expect(screen.getByTestId("prose-editor-savebar")).toBeInTheDocument(); + expect(screen.getByTestId("preview-panel-footer")).toBeInTheDocument(); + + fireEvent.click(screen.getByRole("button", { name: /^Preview/ })); + expect(await screen.findByText("The story begins.")).toBeInTheDocument(); + } + }); }); diff --git a/app/web/components/PreviewPanel.tsx b/app/web/components/PreviewPanel.tsx index dfce4c5..793d2c7 100644 --- a/app/web/components/PreviewPanel.tsx +++ b/app/web/components/PreviewPanel.tsx @@ -1213,7 +1213,8 @@ export function PreviewPanel({ // Plain prose editor (fiction files + the Genesis "Opening text" sub-view). const proseEditor = (