diff --git a/apps/web/src/pages/skill-detail-page.tsx b/apps/web/src/pages/skill-detail-page.tsx index e909c1f38..989358148 100644 --- a/apps/web/src/pages/skill-detail-page.tsx +++ b/apps/web/src/pages/skill-detail-page.tsx @@ -10,7 +10,7 @@ // // A save is never silent, and never blind: // -// * "Save…" opens a review step showing the diff between the published +// * "Review" opens a review step showing the diff between the published // version and what is in the editor; the commit happens only on // confirm. // * The save carries the version the editor was seeded from, so if @@ -314,7 +314,7 @@ export function SkillDetailPage({ setConfirming(true); }} > - Save… + Review ); @@ -400,7 +400,7 @@ export function SkillDetailPage({ /> {edited ? (

- Unsaved changes — “Save…” shows what will change before it is + Unsaved changes — “Review” shows what will change before it is published.

) : null} diff --git a/apps/web/src/shell/context-menu/items.tsx b/apps/web/src/shell/context-menu/items.tsx index 940efe567..8cb515192 100644 --- a/apps/web/src/shell/context-menu/items.tsx +++ b/apps/web/src/shell/context-menu/items.tsx @@ -238,7 +238,7 @@ function shellMenu(actions: ShellContextMenuActions): ContextMenu { entries: [ contextMenuItem({ id: "search", - label: "Search…", + label: "Search", icon: , onSelect: () => openCommandPalette(), }), diff --git a/apps/web/test/skill-detail-page.test.tsx b/apps/web/test/skill-detail-page.test.tsx index c0be8f645..61d0447e7 100644 --- a/apps/web/test/skill-detail-page.test.tsx +++ b/apps/web/test/skill-detail-page.test.tsx @@ -258,24 +258,24 @@ describe("SkillDetailPage", () => { expect(buttonNamed(el, "Make it private to me")).toBeDefined(); }); - test("Save… is offered only once the editor differs from the published version", async () => { + test("Review is offered only once the editor differs from the published version", async () => { const el = await mount(); const bar = el.querySelector('[data-testid="stage-top-bar-actions"]'); if (bar === null) throw new Error("no action slot"); - expect(buttonNamed(bar, "Save…").disabled).toBe(true); + expect(buttonNamed(bar, "Review").disabled).toBe(true); await act(async () => { typeInto("skill-body", `${HEAD_BODY}\nEscalate anything on fire.`); }); - expect(buttonNamed(bar, "Save…").disabled).toBe(false); + expect(buttonNamed(bar, "Review").disabled).toBe(false); }); - test("Save… opens a confirmation showing the diff, and writes nothing yet", async () => { + test("Review opens a confirmation showing the diff, and writes nothing yet", async () => { const el = await mount(); await act(async () => { typeInto("skill-body", "Read the report.\nPick two labels."); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); expect(document.body.textContent).toContain("Review this save"); const diff = document.body.querySelector('[data-testid="diff-view"]'); @@ -289,7 +289,7 @@ describe("SkillDetailPage", () => { await act(async () => { typeInto("skill-body", "Read the report.\nPick two labels."); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); await click(buttonNamed(document.body, "Keep editing")); expect(document.body.textContent).not.toContain("Review this save"); @@ -304,7 +304,7 @@ describe("SkillDetailPage", () => { await act(async () => { typeInto("skill-body", "Read the report.\nPick two labels."); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); await click(buttonNamed(document.body, "Confirm & save")); expect(saves()).toHaveLength(1); @@ -320,7 +320,7 @@ describe("SkillDetailPage", () => { await act(async () => { typeInto("skill-description", " Sorts inbound issues by severity. "); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); const diff = document.body.querySelector('[data-testid="diff-view"]'); expect(diff?.textContent).toContain("Sorts inbound issues by severity."); await click(buttonNamed(document.body, "Confirm & save")); @@ -340,12 +340,12 @@ describe("SkillDetailPage", () => { // Same text, different newline convention: nothing to save. const bar = el.querySelector('[data-testid="stage-top-bar-actions"]'); if (bar === null) throw new Error("no action slot"); - expect(buttonNamed(bar, "Save…").disabled).toBe(true); + expect(buttonNamed(bar, "Review").disabled).toBe(true); await act(async () => { typeInto("skill-body", "Read the report.\r\nPick two labels.\r"); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); await click(buttonNamed(document.body, "Confirm & save")); expect(saves()[0]?.body).toEqual({ description: "Sorts inbound issues.", @@ -385,7 +385,7 @@ describe("SkillDetailPage", () => { await act(async () => { typeInto("skill-body", "Read the report.\nMy new line."); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); await click(buttonNamed(document.body, "Confirm & save")); // The review is still open, saying what happened, now diffing against @@ -509,7 +509,7 @@ describe("SkillDetailPage", () => { await act(async () => { typeInto("skill-body", huge); }); - await click(buttonNamed(el, "Save…")); + await click(buttonNamed(el, "Review")); const summary = document.body.querySelector( '[data-testid="diff-too-large"]',