diff options
| -rw-r--r-- | CHANGELOG.md | 10 | ||||
| -rw-r--r-- | main.html | 6 | ||||
| -rw-r--r-- | modules/core/module-loader.js | 2 |
3 files changed, 13 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fc1839..3d142ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Generated from git history by `scripts/build-changelog.py` — do not edit by ha ## v4.6.152 — 2026-11-07 -_Touches modules (13), README.md (1), help.html (1), main.html (1) · release 1, docs 1, fix 1_ +_Touches modules (18), CHANGELOG.md (2), README.md (1), help.html (1) · docs 2, fix 2, release 1_ - **Six interface modes (easy -> cockpit) over one terminal** `5dafaa4` - Symptom: newOS4 had exactly one layout. A first-time user had no way in that did not require learning commands, and an operator had no surface showing live runtime state; the only way to see heap/VFS/tool-call telemetry was to type cat /sys/... @@ -25,6 +25,14 @@ _Touches modules (13), README.md (1), help.html (1), main.html (1) · release 1, - api.capture() split arguments itself; term._parseArgs does not exist, so every panel showed - 'unavailable: term._parseArgs is not a function' - the classic Let's Get Started modal is suppressed in non-classic modes: it covered easy's cards +- **Rebuild changelog for v4.6.152** `5d9e037` +- **Four-model review — lazy-load race, restore order, a11y, key handling** `fcd58a4` + - Reviewed the shipped change set with kimi-k2.7-code, deepseek-v4-pro, glm-5.3 and minimax-m3. Findings below are the ones that survived verification against file:line; the rest are in .hermes/plans/2026-11-07_163420-newos4-six-ui-modes.review-log.md + - Accepted and fixed: + - apply() had no generation token: a lazy mode load that finished after the user switched to + - another mode force-applied the abandoned one (`apply(want,{force:true})` in the .then). Every apply() now bumps `_loadSeq` and the callback acts only while its token is newest. Same token also removes a double mount: registerMode() already applies the mode as it registers, so the callback was mounting every lazy mode twice (teardown+cleanup twice). + - _restoreStock() used the recorded `nextSibling` as insert anchor. Every real mode moves + - … run `git show <sha>` for the rest ## v4.6.151 — 2026-11-07 @@ -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.152"></script> +<script src="modules/core/core-bundle.js?v=v4.6.153"></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.152"></script> +<script src="modules/core/module-loader.js?v=v4.6.153"></script> <!-- Critical ext bundle loads AFTER webx11 exists so registerModule calls work --> -<script src="modules/ext/critical-ext-bundle.js?v=v4.6.152"></script> +<script src="modules/ext/critical-ext-bundle.js?v=v4.6.153"></script> <script> // ═══ ONE TRUE VERSION SOURCE ═══ diff --git a/modules/core/module-loader.js b/modules/core/module-loader.js index e9d3413..7caa874 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.152'; + const LATEST_VER = 'v4.6.153'; 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). |