diff options
Diffstat (limited to 'modules/core/terminal.js')
| -rw-r--r-- | modules/core/terminal.js | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/modules/core/terminal.js b/modules/core/terminal.js index 9750c24..cd7f5ae 100644 --- a/modules/core/terminal.js +++ b/modules/core/terminal.js @@ -1387,15 +1387,22 @@ 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 |