aboutsummaryrefslogtreecommitdiff
path: root/modules/ext/ui-easy.js
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-11-07 19:03:38 +0100
committerAgando <roduccomm@gmail.com>2026-11-07 19:03:38 +0100
commit05d72563637e88825ff852d803621c567de47e34 (patch)
tree9ac21e6a6bcce3983d7df1a8304bb2896f2a9afa /modules/ext/ui-easy.js
parente0b87c7b5a902dea69ac45ffa2e525387edebf42 (diff)
fix(newos4): second review round — identity for every stock node, load dedup, sweep race, a11y
Four models (kimi-k2.7-code, deepseek-v4-pro, minimax-m3, glm-5.3) reviewed the shipped change set. Review log with every accepted and rejected finding: .hermes/plans/2026-11-07_163420-newos4-six-ui-modes.review-log.md - identity guard now covers every snapshot node, not just #terminal-container: terminal.js also binds #output, #command-input, #input-area and #status-bar, so a cloned one leaves the terminal writing into a detached node while the page looks perfect - _restoreStock anchors on the next stock node already home, then on the recorded trailing sibling; a raw child index was measured wrong (terminal,input,status-bar,quick-actions) - _loading map: a double-clicked card or a repeated 'ui easy' loads the mode once - _sweepPending returns while that id is in flight instead of declaring failure at 6 s and overwriting the stored preference - _syncChrome() on every switch (quick-actions was left in the tab order behind the mode root) - picker: role=dialog/aria-modal/labelledby/focus, shown after 600 ms instead of waiting for a registration that never happens with lazy modes, and suppressed when ?ui= already applied - ?ui= must be one of the six; _loadMode only accepts packages['ui-<id>']; hasOwnProperty on modes - VFS names are shell-quoted before reaching api.exec (cat/edit) - refresh generation no longer bumps per tick (slow captures left later panes at '...') - easy: padding shorthand reset the 34 px footer reserve (footer overlapped the composer) - cockpit panes get tabIndex and focus; F1/F12 left to the browser; nothing swallowed in inputs - api.el lost its unused innerHTML sink; the test lost its _parseArgs stub (it hid the regression) - v4.6.155
Diffstat (limited to 'modules/ext/ui-easy.js')
-rw-r--r--modules/ext/ui-easy.js4
1 files changed, 3 insertions, 1 deletions
diff --git a/modules/ext/ui-easy.js b/modules/ext/ui-easy.js
index eddf11d..cd1388a 100644
--- a/modules/ext/ui-easy.js
+++ b/modules/ext/ui-easy.js
@@ -16,7 +16,9 @@ class UIEasyMode {
mount(api) {
api.injectCSS('easy', `
body[data-ui-mode="easy"] { font-family: system-ui, -apple-system, "Segoe UI", sans-serif; }
-body[data-ui-mode="easy"] #ui-root { display: flex; flex-direction: column; padding: 14px 14px 0; gap: 12px; }
+/* padding-bottom 34px, not 0: #ui-foot is absolutely positioned and 34px tall, and the shorthand
+ reset the bottom padding the base sheet reserves, so the footer sat on top of the composer. */
+body[data-ui-mode="easy"] #ui-root { display: flex; flex-direction: column; padding: 14px 14px 34px; gap: 12px; }
#easy-top { flex: 0 0 auto; }
#easy-top h1 { font-size: 1.25em; margin: 0 0 4px; font-weight: 600; }
#easy-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }