Add complete keyboard navigation.

This commit is contained in:
2026-08-07 17:00:49 +02:00
parent 87a161058f
commit 5709c80209
38 changed files with 1943 additions and 355 deletions

View File

@@ -342,6 +342,8 @@ surface MetadataDiffSurface {
@guarantee ScanAction
-- Scan/Rescan button at top.
-- Progress bar + message during scan.
-- Control+Option+R (macOS) or Control+Alt+R runs the scan; repair buttons use Tab
-- and are activated with Enter or Space.
@guarantee EntityTabs
-- Tabs: Posts, Media, Scripts, Templates — each with badge count of diffs.
@@ -443,6 +445,8 @@ surface SiteValidationSurface {
@guarantee ApplyAction
-- Apply button disabled when nothing to fix.
-- Control+Option (macOS) or Control+Alt, followed by R, scans and A applies;
-- both remain in Tab order.
-- On apply: renders missing, deletes extra, re-renders updated.
-- Toast: "Validation applied: N rendered, N deleted".
}

View File

@@ -131,6 +131,7 @@ surface PostEditorSurface {
@guarantee MetadataSection
-- Collapsible section. Starts expanded when title is empty.
-- Control+Option+M (macOS) or Control+Alt+M toggles it outside focused text input.
-- Two-column layout.
-- Left column: Title, Tags, Author, Language + detect button,
-- Do Not Translate checkbox, Slug (read-only), Categories,
@@ -156,6 +157,7 @@ surface PostEditorSurface {
@guarantee ExcerptSection
-- Collapsible section with textarea (4 rows).
-- Control+Option+X (macOS) or Control+Alt+X toggles it outside focused text input.
@guarantee EditorBodyToolbar
-- Toolbar: "Content" label, mode toggle (Markdown/Preview),

View File

@@ -219,6 +219,7 @@ surface SettingsViewSurface {
@guarantee CollapsibleSections
-- All 8 sections are collapsible.
-- Section visibility respects search filter.
-- Each visible section exposes a unique Control+Option or Control+Alt access key.
}
-- ─── Settings view actions ──────────────────────────────────

View File

@@ -136,6 +136,8 @@ surface WordPressImportSurface {
-- taxonomy, and discovers WordPress shortcodes. The saved report shows
-- item counts, conflicts, missing uploads, year distribution, macro
-- usage, and importable totals before any project content is changed.
-- Its Conflicts, Posts, Pages, Media, Taxonomy, and Macros sections
-- expose unique Control+Option or Control+Alt access keys for disclosure control.
@guarantee ConflictReview
-- Conflicts default to ignore. The operator can keep ignoring, overwrite

View File

@@ -72,6 +72,26 @@ surface AppShellSurface {
shell.sidebar.width
shell.content_area.panel.visible
shell.assistant_sidebar.visible
@guarantee KeyboardTraversal
-- Tab and Shift+Tab traverse every enabled button, checkbox, picker,
-- and text editor in visual order. Disabled controls are skipped.
-- Enter or Space activates the focused control.
@guarantee KeyboardHints
-- Holding Control+Option on macOS or Control+Alt on Linux/Windows reveals
-- an access-key marker on every enabled control intersecting the viewport.
-- Semantic controls use their direct one-character shortcut. Remaining
-- visible controls receive stable two- or three-letter A-Z codes in
-- widget-tree order, excluding direct letters as generic prefixes.
-- Every marker is a warm-yellow box with black text and border, placed
-- wholly inside its control without obscuring activity-bar icons.
-- Typing a prefix while holding the modifier hides non-matches and shows
-- only each candidate's remaining suffix; a complete code activates its
-- control. Escape or modifier release cancels the access-key mode.
-- Covered layers and off-screen scroll content receive no code. A focused
-- Option/Alt alone always remains available for character input, and a
-- focused text editor retains modified input instead of entering the mode.
}
value ContentArea {
@@ -162,6 +182,7 @@ value ActivityButton {
label_key: String -- i18n key for tooltip
badge: Badge? -- only git has a badge
active: Boolean -- highlighted when this view is showing
access_key: String -- Control+Option (macOS) or Control+Alt + 1..9,0 in displayed order
}
value Badge {
@@ -317,3 +338,9 @@ value TokenUsage {
-- Ctrl/Cmd+B: toggle sidebar
-- Ctrl/Cmd+W: close active tab (see tabs.allium)
-- Tab / Shift+Tab: next / previous enabled control
-- Enter / Space: activate focused control
-- Control+Option (macOS) or Control+Alt + 1..9,0: activate the corresponding activity
-- Post editor Control+Option (macOS) or Control+Alt + M/X: toggle metadata/excerpt
-- Import and Settings sections expose unique Control+Option or Control+Alt access keys
-- Site Validation uses R/A and Metadata Diff uses R with the platform modifier pair