aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-11-09 22:45:10 +0100
committerAgando <roduccomm@gmail.com>2026-11-09 22:45:10 +0100
commitbb210547ea45aabd7b68563921844ba162db67cb (patch)
tree198a950f1aa704f25b2495bd49b9257da474c07b
parent543d85a37fe26cc401a109c021d3ffb9b04af37d (diff)
fix(newos4): take the UI shell off the startup path until the crash reports are explained
Symptom: operator reports newOS4 "started to crash since the last ui update"; a user (Max) reports his browser crashed. Order: roll back, do not re-enable until it is verified in a dev environment. Root cause: not yet established, and the log work rules out the obvious suspect. - 0 requests for modules/ext/ui-*.js in the entire access log: no interface mode has ever mounted in production, so a mode's own chrome cannot be the cause. - all six modes driven on one page in headless Chromium at 390x844: no crash, no page errors, one #terminal-container, heap flat at 10 MB over a 25 s idle. - the six errors.json entries that read like a crash report (SPA is not defined, DOM harness FAILED: N, "...reading 'makeInstance'") exist in no shipped file - grep on the served 1.29 MB bundle returns 0 - so they came from a harness run inside that one browser session. Two real defects were found instead, both planned not bundled here: - /ollama/api/chat inherits nginx's 1 MB default client_max_body_size and refused a 1,063,595-byte agent context with 413 (only 413 in 7 days). - module-aiassist.js:2576 const originalPath = a.path || '' then .replace on a model-supplied non-string: TypeError, 3 events on tool:list_files, 32 sites with the same shape. Fix: the UIShellModule registration in terminal.js is commented out with a dated note and the revert recipe; bundles rebuilt from source; LATEST_VER v4.6.156 -> v4.6.157; main.html's three ?v= refs bumped. The six modes are lazy ext files whose first line is `if (!terminal.uiShell) return;`, so an accidental load is a no-op and no first-run picker appears. Verified: served core-bundle.js?v=v4.6.157 is cmp-identical to disk (1,298,695 B) and the registration exists only as a comment (core-bundle.js:4082). Playwright 390x844: shellPresent false, uiShellModuleRegistered false, uiRoot false, pickerNode false, moduleCount 47, help renders 21,802 chars, pageerrors []. Workaround: none needed - users get classic only. Re-enable = restore the line, rebuild, bump LATEST_VER + main.html, re-run admin/scripts/probe-ui-modes.py. Plan: .hermes/plans/2026-11-09_224409-newos4-ui-rollback-dev-verify.md
-rw-r--r--main.html6
-rw-r--r--modules/core/core-bundle.js10
-rw-r--r--modules/core/module-loader.js2
-rw-r--r--modules/core/terminal.js10
4 files changed, 22 insertions, 6 deletions
diff --git a/main.html b/main.html
index a6e17e9..d73e78d 100644
--- a/main.html
+++ b/main.html
@@ -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.156"></script>
+<script src="modules/core/core-bundle.js?v=v4.6.157"></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.156"></script>
+<script src="modules/core/module-loader.js?v=v4.6.157"></script>
<!-- Critical ext bundle loads AFTER webx11 exists so registerModule calls work -->
-<script src="modules/ext/critical-ext-bundle.js?v=v4.6.156"></script>
+<script src="modules/ext/critical-ext-bundle.js?v=v4.6.157"></script>
<script>
// ═══ ONE TRUE VERSION SOURCE ═══
diff --git a/modules/core/core-bundle.js b/modules/core/core-bundle.js
index c2b52d0..2b95828 100644
--- a/modules/core/core-bundle.js
+++ b/modules/core/core-bundle.js
@@ -4071,7 +4071,15 @@ Only output XML function calls for tool tasks. If no tool is needed, answer norm
this._safeRegister('SmartContextModule', 'smart context');
this._safeRegister('SimpleGUIModule', 'simple GUI builder');
this._safeRegister('DebugSupervisorModule', 'debug supervisor');
- this._safeRegister('UIShellModule', 'UI shell');
+ // 2026-11-09 — UI shell DISABLED from startup (operator order after crash reports).
+ // The six interface modes (v4.6.152–156) are not in extKeys, so with the shell
+ // unregistered no mode can mount, no first-run picker appears, and `ui` does not
+ // exist: newOS4 boots to classic only. The ext ui-*.js files all begin with
+ // `if (!terminal.uiShell) return;`, so an accidental load is a no-op.
+ // Re-enable = restore this line, rebuild the bundle (scripts/rebuild-bundles.py),
+ // bump LATEST_VER + main.html ?v=, re-run admin/scripts/probe-ui-modes.py.
+ // Tracked in .hermes/plans/2026-11-09_*-newos4-ui-rollback.md
+ // this._safeRegister('UIShellModule', 'UI shell');
// v4.5.47: Critical ext modules promoted to boot path
this._safeRegister('EditorModule', 'editor');
this._safeRegister('ShellModule', 'shell');
diff --git a/modules/core/module-loader.js b/modules/core/module-loader.js
index 67be01b..685b5fd 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.156';
+ const LATEST_VER = 'v4.6.157';
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/core/terminal.js b/modules/core/terminal.js
index f0259fc..91bea4c 100644
--- a/modules/core/terminal.js
+++ b/modules/core/terminal.js
@@ -1382,7 +1382,15 @@
this._safeRegister('SmartContextModule', 'smart context');
this._safeRegister('SimpleGUIModule', 'simple GUI builder');
this._safeRegister('DebugSupervisorModule', 'debug supervisor');
- this._safeRegister('UIShellModule', 'UI shell');
+ // 2026-11-09 — UI shell DISABLED from startup (operator order after crash reports).
+ // The six interface modes (v4.6.152–156) are not in extKeys, so with the shell
+ // unregistered no mode can mount, no first-run picker appears, and `ui` does not
+ // exist: newOS4 boots to classic only. The ext ui-*.js files all begin with
+ // `if (!terminal.uiShell) return;`, so an accidental load is a no-op.
+ // Re-enable = restore this line, rebuild the bundle (scripts/rebuild-bundles.py),
+ // bump LATEST_VER + main.html ?v=, re-run admin/scripts/probe-ui-modes.py.
+ // Tracked in .hermes/plans/2026-11-09_*-newos4-ui-rollback.md
+ // this._safeRegister('UIShellModule', 'UI shell');
// v4.5.47: Critical ext modules promoted to boot path
this._safeRegister('EditorModule', 'editor');
this._safeRegister('ShellModule', 'shell');