Run: 2026-05-06T12-31-16_desktop-mode · 8 charters · 1 verifier · 1 recon
Four systemic patterns emerged independently across multiple charters. These are not isolated one-off findings — they represent design-level gaps.
Three separate charters (activation-and-mode, usability-desktop-mode, breadth-tour-lifecycle) independently surfaced the same pattern: Desktop Mode has no visible on-screen affordance for enabling or disabling itself.
- The portal URL (
/desktop-mode/) is the only activation path. - The admin bar toggle is invisible inside the desktop shell.
- There is no "Exit Desktop Mode" button anywhere in the UI.
Verdict: Systemic discoverability failure, not three separate issues.
Confirmed in: activation-and-mode, usability-desktop-mode, breadth-tour-admin.
Confidence: High.
The session persistence REST endpoint (/wp-json/desktop-mode/v1/session) returns 401 Unauthorized even for authenticated admin users. This is a capability/nonce registration bug — the REST route likely lacks a correct permission_callback.
Confirmed in: breadth-tour-lifecycle (CLI-verified via studio wp).
Confidence: High.
Dock buttons and core UI strings rendered by JavaScript are hardcoded English. The plugin has PHP/POT coverage but the JS build does not call __() / _x() from @wordpress/i18n for these strings. Additionally, "Report a bug" is absent from the POT file entirely.
Confirmed in: i18n-desktop-mode.
Confidence: High.
Two related issues in the window manager share the same missing implementation:
- Escape key does not close focused windows (standard desktop UX contract broken).
- Focus strands on
<body>after a window closes (keyboard user loses their position).
Both belong to the same missing focus-trap / focus-return implementation. Windows are rendered as <div role='dialog'> rather than <dialog> elements, so none of these behaviors are automatic.
Confirmed in: window-manager.
Confidence: High.
| Area | Problems | Notes |
|---|---|---|
| Window manager | 3 (2 major, 1 minor) | Keyboard interaction is the weakest surface — drag/resize work visually but keyboard parity is absent |
| i18n / l10n | 3 (1 major, 2 minor) | JS translation pipeline is the gap; PHP strings are well-covered |
| Discoverability / UX | 2 major | Multiple charters corroborate this as the plugin's biggest usability gap |
| Area | Notes |
|---|---|
| Session persistence | 0 problems. Window state debounce-save and restore work correctly in-browser. Note: the REST endpoint returning 401 is a separate issue from session restore behavior observed via the UI. |
| OS Settings persistence | 0 problems. Wallpaper, accent color, and dock settings persist correctly via the REST endpoint. |
| Activation write path | 0 problems. Core opt-in mechanism (desktop_mode_mode=1 user meta) works correctly. |
- Session endpoint 401: Recon observed the endpoint existed but didn't probe auth. This is the most actionable new finding vs. recon.
<div role='dialog'>vs<dialog>: Implementation diverges from documentation/charter assumption — minor, but notable for accessibility tooling.- Orphaned user meta on deactivation: Not mapped in recon terrain; discovered during breadth lifecycle charter.