Skip to content

Commit 98ef920

Browse files
khoinguyenpham04emdashbot[bot]ascorbic
authored
fix(admin): refine publishing and scheduling controls (#2891)
* fix(admin): make publishing times local and explicit * refine(admin): group publish and schedule actions * refine(admin): distinguish live and draft versions * refine(admin): frame publishing state and dates * refine(admin): clarify publishing actions * refine(admin): unify publishing date dialogs * docs: align publishing panel specification * refine(admin): tighten publication date alignment * test(admin): cover publishing menu keyboard flow * refine(admin): align publishing summary actions * refine(admin): simplify publishing date controls * refine(admin): match publishing menu motion * refine(admin): compact publishing menu actions * refine(admin): align timestamp metadata * refine(admin): animate timestamp disclosure * fix(admin): preserve editor state across schedule changes * fix(admin): keep publishing dialog within viewport * docs: align publishing panel base * Delete docs/technical-specs/content-editor-publishing-panel.md * style: format * fix(admin): recover schedule revision tokens * fix(admin): keep publishing rows aligned * fix(admin): simplify publishing menu interactions * fix(admin): center publishing trigger label * style: format * fix(admin): cap publishing time option trays * style: format * fix(admin): anchor compact publishing time trays * fix(admin): align publishing summary actions * fix(admin): widen publishing row hover targets * feat(admin): add keyboard-first publishing time inputs * fix(admin): refine publishing dialog padding * fix(admin): increase publishing dialog inset * fix(admin): balance publishing dialog padding * test(e2e): follow publishing action menu * ci: accept visual baselines (requested by @khoinguyenpham04) * fix(admin): simplify publishing metadata UI * fix(admin): polish publishing metadata controls * fix(admin): use Kumo segmented time input * fix(admin): align publishing metadata controls * fix(admin): refine byline sidebar controls * ci: accept visual baselines (requested by @khoinguyenpham04) * Stabilize Astro consumer smoke installs * fix(admin): compact collapsed editor actions * test(core): retry transient injected route timeouts * fix(admin): accept localized publishing times --------- Co-authored-by: emdashbot[bot] <emdashbot[bot]@users.noreply.github.com> Co-authored-by: Matt Kane <mkane@cloudflare.com>
1 parent 6030629 commit 98ef920

30 files changed

Lines changed: 3162 additions & 410 deletions

.changeset/soft-days-publish.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
"@emdash-cms/admin": patch
3+
"emdash": patch
4+
---
5+
6+
Updates the content editor's Publish section so authors can distinguish the live version from draft changes and choose immediate or scheduled publishing from one contextual action menu.
7+
8+
Publishing dates and schedules display in the browser's local time zone while stored timestamp values remain unchanged.
9+
10+
Schedule and unschedule responses now return the current revision token so subsequent editor saves retain optimistic-concurrency protection.

e2e/tests/accessibility.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,33 @@ test.describe("Accessibility Audit", () => {
195195
expect(results.violations).toEqual([]);
196196
});
197197

198+
test("content publishing overlays should have no WCAG 2.x AA violations", async ({
199+
admin,
200+
serverInfo,
201+
}) => {
202+
const analyze = () =>
203+
new AxeBuilder({ page: admin.page })
204+
.withTags(["wcag2a", "wcag2aa", "wcag21aa"])
205+
.exclude(".ProseMirror")
206+
// Base UI uses hidden tab-focus sentinels to contain focus in Kumo overlays.
207+
.exclude("[data-base-ui-focus-guard]")
208+
.disableRules(KNOWN_A11Y_EXCLUSIONS)
209+
.analyze();
210+
211+
await admin.goToEditContent("posts", serverInfo.contentIds.posts[0]!);
212+
await admin.waitForLoading();
213+
await admin.page.getByRole("button", { name: /Change publication date:/ }).click();
214+
expect((await analyze()).violations).toEqual([]);
215+
await admin.page.getByRole("button", { name: "Cancel", exact: true }).click();
216+
217+
await admin.goToEditContent("posts", serverInfo.contentIds.posts[2]!);
218+
await admin.waitForLoading();
219+
await admin.page.getByRole("button", { name: "Publish", exact: true }).click();
220+
expect((await analyze()).violations).toEqual([]);
221+
await admin.page.getByRole("menuitem", { name: /Schedule publication/ }).click();
222+
expect((await analyze()).violations).toEqual([]);
223+
});
224+
198225
test("media library should have no WCAG 2.x AA violations", async ({ admin }) => {
199226
await admin.goToMedia();
200227
await admin.waitForLoading();

0 commit comments

Comments
 (0)