@akiojin/gwt 9.16.0 → 9.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -269,7 +269,20 @@ Contrast) では system colors にフォールバックします。
269
269
  | `⌘G` | Git (Branches) サーフェスを focus |
270
270
  | `⌘L` | Logs サーフェスを focus |
271
271
  | `⌘?` | Hotkey Overlay (cheat sheet) を toggle |
272
- | `Esc` | 開いている Palette / Overlay / Drawer を閉じる |
272
+ | `⌘\` | Sidebar Layers を折り畳み / 復帰 |
273
+ | `Esc` | 開いている Palette / Overlay / Drawer / Dropdown を閉じる |
274
+
275
+ ### アクセシビリティ
276
+
277
+ すべてのモーダルダイアログ (Command Palette / Hotkey Overlay / Branch
278
+ Cleanup / Worktree Migration / Launch Wizard / Add Window) は WAI-ARIA
279
+ dialog convention に従います。`role="dialog"` + accessible name、
280
+ `aria-modal`、open 時にフォーカスがダイアログ内へ移動し close 時に
281
+ トリガーへ戻る、Tab がダイアログ内で循環 (キーボードトラップなしの
282
+ escape)、Esc で dismiss。非同期ロード段階は `aria-busy="true"` で
283
+ スクリーンリーダーに進捗を伝えます。エラー領域は `role="alert"` で
284
+ 即座に読み上げられます。WCAG 2.1 AA コントラストは両テーマの全
285
+ text/surface 組合せでテストレイヤーに pin されています。
273
286
 
274
287
  ## SPEC と runtime クイックリファレンス
275
288
 
package/README.md CHANGED
@@ -273,7 +273,20 @@ falls back to system colors so accessibility is preserved.
273
273
  | `⌘G` | Focus the Git (Branches) surface |
274
274
  | `⌘L` | Focus the Logs surface |
275
275
  | `⌘?` | Toggle the Hotkey Overlay (cheat sheet) |
276
- | `Esc` | Close any open palette / overlay / drawer |
276
+ | `⌘\` | Collapse / expand the Sidebar Layers |
277
+ | `Esc` | Close any open palette / overlay / drawer / dropdown |
278
+
279
+ ### Accessibility
280
+
281
+ Every modal dialog (Command Palette, Hotkey Overlay, branch cleanup,
282
+ worktree migration, launch wizard, Add Window) follows the WAI-ARIA
283
+ dialog convention: `role="dialog"` with an accessible name, `aria-modal`,
284
+ focus moves into the dialog on open and returns to the trigger on close,
285
+ Tab cycles within the dialog (no keyboard trap escape), and Escape
286
+ dismisses. Async loading stages signal `aria-busy="true"` so screen
287
+ readers track progress. Error regions use `role="alert"` for immediate
288
+ announcement. WCAG 2.1 AA contrast is asserted across every text /
289
+ surface combination in both themes.
277
290
 
278
291
  ## SPEC and Runtime Quick Reference
279
292
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akiojin/gwt",
3
- "version": "9.16.0",
3
+ "version": "9.18.0",
4
4
  "description": "Desktop GUI for Git worktree management and coding agent launch",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,9 +12,9 @@
12
12
  "dev": "cargo run -p gwt --bin gwt",
13
13
  "build": "cargo build --release -p gwt --bin gwt --bin gwtd",
14
14
  "test": "cargo test -p gwt-core -p gwt --all-features",
15
- "test:frontend-bundle": "node --check crates/gwt/web/app.js && node --check crates/gwt/web/branch-cleanup-modal.js && node --check crates/gwt/web/migration-modal.js && node --check crates/gwt/web/theme-manager.js && node --check crates/gwt/web/hotkey.js && node --check crates/gwt/web/operator-shell.js",
15
+ "test:frontend-bundle": "node --check crates/gwt/web/app.js && node --check crates/gwt/web/branch-cleanup-modal.js && node --check crates/gwt/web/migration-modal.js && node --check crates/gwt/web/theme-manager.js && node --check crates/gwt/web/hotkey.js && node --check crates/gwt/web/operator-shell.js && node --check crates/gwt/web/focus-trap.js",
16
16
  "test:frontend-smoke": "node --test crates/gwt/web/__tests__/branch-cleanup.smoke.test.mjs crates/gwt/web/__tests__/migration-modal.smoke.test.mjs",
17
- "test:frontend-unit": "node --test crates/gwt/web/__tests__/contrast.test.mjs crates/gwt/web/__tests__/theme-manager.test.mjs crates/gwt/web/__tests__/hotkey.test.mjs crates/gwt/web/__tests__/operator-chrome-structure.test.mjs crates/gwt/web/__tests__/board-surface.test.mjs",
17
+ "test:frontend-unit": "node --test crates/gwt/web/__tests__/contrast.test.mjs crates/gwt/web/__tests__/theme-manager.test.mjs crates/gwt/web/__tests__/hotkey.test.mjs crates/gwt/web/__tests__/operator-chrome-structure.test.mjs crates/gwt/web/__tests__/board-surface.test.mjs crates/gwt/web/__tests__/focus-trap.test.mjs crates/gwt/web/__tests__/kanban-structure.test.mjs crates/gwt/web/__tests__/kanban-dnd.test.mjs crates/gwt/web/__tests__/kanban-drawer.test.mjs",
18
18
  "test:visual": "playwright test --config crates/gwt/playwright/playwright.config.ts",
19
19
  "test:release-assets": "node scripts/test_release_assets.cjs",
20
20
  "test:release-flow": "bash scripts/check-release-flow.sh",
@@ -101,6 +101,7 @@ run("package scripts keep the GUI front door and release contract explicit", ()
101
101
  "node --check crates/gwt/web/theme-manager.js",
102
102
  "node --check crates/gwt/web/hotkey.js",
103
103
  "node --check crates/gwt/web/operator-shell.js",
104
+ "node --check crates/gwt/web/focus-trap.js",
104
105
  ]) {
105
106
  assert.ok(
106
107
  pkg.scripts["test:frontend-bundle"].includes(required),