aboutsummaryrefslogtreecommitdiff
path: root/modules/core/core-bundle.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/core/core-bundle.js')
-rw-r--r--modules/core/core-bundle.js25
1 files changed, 16 insertions, 9 deletions
diff --git a/modules/core/core-bundle.js b/modules/core/core-bundle.js
index fe86c8f..d52764d 100644
--- a/modules/core/core-bundle.js
+++ b/modules/core/core-bundle.js
@@ -4093,15 +4093,22 @@ 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');
- // 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');
+ // 2026-11-12 — UI shell re-enabled BEHIND AN OPT-IN FLAG (plan Task 9, v4.6.162).
+ // v4.6.157 had disabled it outright after crash reports; the crash itself was never
+ // reproduced (F2) and the two defects the investigation did find (F3 413, F4 arg
+ // coercion) were fixed instead. So the six modes come back, but only for a visitor
+ // who asks for them: `?ui=1` on the URL or localStorage['webx11_ui_experimental']=1.
+ // Without the flag nothing changes: the shell is not registered, no mode can mount
+ // (the ui-*.js files begin with `if (!terminal.uiShell) return;`), no first-run
+ // picker appears, and `ui` does not exist. Guard: admin/scripts/verify-newos4-ui-gate.py
+ // (cron ui-gate-guard) fails if the gate is lost or the bare call returns.
+ const _uiExp = (function () {
+ try {
+ if (new URLSearchParams(location.search).get('ui') === '1') return true;
+ return localStorage.getItem('webx11_ui_experimental') === '1';
+ } catch (e) { return false; }
+ })();
+ if (_uiExp) this._safeRegister('UIShellModule', 'UI shell');
// v4.5.47 used to _safeRegister() seven critical ext classes here (EditorModule,
// ShellModule, AliasModule, FinderModule, FileManagerModule, DiffModule,
// BusyBoxModule). They are declared in modules/ext/critical-ext-bundle.js, which is