diff options
| author | Hermes SysOp <sysop@webx11.duckdns.org> | 2026-11-12 18:21:09 +0100 |
|---|---|---|
| committer | Hermes SysOp <sysop@webx11.duckdns.org> | 2026-11-12 18:21:09 +0100 |
| commit | a14d8ab15130779e4d612f690cd3c806800875c6 (patch) | |
| tree | 86ab867d683521171fe818ce7a95bf899c9b404c | |
| parent | 5d48e3bb52d333f828b50945003864d99488599e (diff) | |
fix(newos4): the three glyph-only switch buttons now say what they do (v4.6.165)
Asked "how do I switch?", I checked all six modes and found the controls were already uniform in
function — every mode calls `api.exec('ui picker')` — but not in labelling:
easy ⇄ Change view
chat ⇄ Style
workspace ⇄ Style
studio ⇄ <- glyph only
commander ⇄ <- glyph only
cockpit ⇄ <- glyph only
An unlabelled ⇄ on a phone is a guess. The three bare ones now carry
title="Change view — pick another interface" and aria-label="Change view", which api.el() forwards
via setAttribute. Verified on the served build: the snapshot reads `button "Change view"` in studio,
and clicking it opens the picker with all seven options (six modes + "Keep the classic terminal").
No behaviour change — same handler, same picker; the control is now discoverable and announced by
screen readers.
| -rw-r--r-- | main.html | 6 | ||||
| -rw-r--r-- | modules/core/module-loader.js | 2 | ||||
| -rw-r--r-- | modules/ext/ui-cockpit.js | 2 | ||||
| -rw-r--r-- | modules/ext/ui-commander.js | 2 | ||||
| -rw-r--r-- | modules/ext/ui-studio.js | 2 |
5 files changed, 7 insertions, 7 deletions
@@ -1350,13 +1350,13 @@ </script> <!-- v4.5.63: A2A scratchpad fixes + agent-register arg fix --> -<script src="modules/core/core-bundle.js?v=v4.6.164"></script> +<script src="modules/core/core-bundle.js?v=v4.6.165"></script> <!-- Async dependency-ordered module loader now only initializes terminal and loads optional ext modules --> -<script src="modules/core/module-loader.js?v=v4.6.164"></script> +<script src="modules/core/module-loader.js?v=v4.6.165"></script> <!-- Critical ext bundle loads AFTER webx11 exists so registerModule calls work --> -<script src="modules/ext/critical-ext-bundle.js?v=v4.6.164"></script> +<script src="modules/ext/critical-ext-bundle.js?v=v4.6.165"></script> <script> // ═══ ONE TRUE VERSION SOURCE ═══ diff --git a/modules/core/module-loader.js b/modules/core/module-loader.js index d87b11f..ccdda90 100644 --- a/modules/core/module-loader.js +++ b/modules/core/module-loader.js @@ -4,7 +4,7 @@ // Core module bundle loaded synchronously in main.html. // This loader only handles version cache-busting, splash, terminal init, and optional ext modules. - const LATEST_VER = 'v4.6.164'; + const LATEST_VER = 'v4.6.165'; const CACHE = '?v=' + LATEST_VER; // Exposed so ext modules can register their own URL with the same cache-busting version // instead of an unversioned path the browser may already have cached (shell.js did). diff --git a/modules/ext/ui-cockpit.js b/modules/ext/ui-cockpit.js index 73fbe9f..b9d33eb 100644 --- a/modules/ext/ui-cockpit.js +++ b/modules/ext/ui-cockpit.js @@ -74,7 +74,7 @@ body[data-ui-mode="cockpit"] #ui-root { display: grid; grid-template-rows: 1fr 1 const bar = api.el('div', { id: 'ck-term-bar' }); bar.appendChild(api.el('span', { class: 'title', text: 'terminal · F1-F8 focus · F5 refresh' })); - const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄' }); + const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄', title: 'Change view — pick another interface', 'aria-label': 'Change view' }); styleBtn.addEventListener('click', () => api.exec('ui picker')); bar.appendChild(styleBtn); const out = api.el('div', { id: 'ck-out' }); diff --git a/modules/ext/ui-commander.js b/modules/ext/ui-commander.js index 873d7cc..d64626a 100644 --- a/modules/ext/ui-commander.js +++ b/modules/ext/ui-commander.js @@ -101,7 +101,7 @@ body[data-ui-mode="commander"] #ui-root { display: grid; grid-template-columns: const bar = api.el('div', { id: 'cm-center-bar' }); bar.appendChild(api.el('span', { class: 'title', text: 'terminal' })); const palBtn = api.el('button', { class: 'wx11-btn', text: '⌘K' }); - const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄' }); + const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄', title: 'Change view — pick another interface', 'aria-label': 'Change view' }); styleBtn.addEventListener('click', () => api.exec('ui picker')); bar.appendChild(palBtn); bar.appendChild(styleBtn); diff --git a/modules/ext/ui-studio.js b/modules/ext/ui-studio.js index e8341f3..ca479da 100644 --- a/modules/ext/ui-studio.js +++ b/modules/ext/ui-studio.js @@ -52,7 +52,7 @@ body[data-ui-mode="studio"] #ui-root { display: grid; grid-template-columns: 1.1 const left = api.el('div', { id: 'st-left' }); const leftBar = api.el('div', { id: 'st-left-bar' }); leftBar.appendChild(api.el('span', { class: 'title', text: 'Chat' })); - const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄' }); + const styleBtn = api.el('button', { class: 'wx11-btn', text: '⇄', title: 'Change view — pick another interface', 'aria-label': 'Change view' }); styleBtn.addEventListener('click', () => api.exec('ui picker')); leftBar.appendChild(styleBtn); const chat = api.el('div', { id: 'st-chat' }); |