diff options
| author | Agando <roduccomm@gmail.com> | 2026-10-18 14:05:18 +0200 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-10-18 14:05:18 +0200 |
| commit | 0d0d936e7b5cd41a31773069540b1ddb8836ef44 (patch) | |
| tree | 273e7ee9a72453655119bf0f63efb9b61e193d7f /modules/core | |
| parent | 526c420f4591f0a58f805b473fa76d3da2981eae (diff) | |
newOS4: interactive AI course (terminal module, portal, atlas, telemetry, daily maintenance+cron) + free store card
Diffstat (limited to 'modules/core')
| -rw-r--r-- | modules/core/core-bundle.js | 12 | ||||
| -rw-r--r-- | modules/core/module-loader.js | 4 | ||||
| -rw-r--r-- | modules/core/terminal.js | 12 |
3 files changed, 22 insertions, 6 deletions
diff --git a/modules/core/core-bundle.js b/modules/core/core-bundle.js index dd86773..2714dd3 100644 --- a/modules/core/core-bundle.js +++ b/modules/core/core-bundle.js @@ -4283,9 +4283,17 @@ Only output XML function calls for tool tasks. If no tool is needed, answer norm for (const modName in this.moduleManager.modules) { const mod = this.moduleManager.modules[modName]; if (mod.commands && mod.commands[cmd]) { + if (cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandStart === 'function') { try { _m.onCommandStart(cmd, args); } catch (_e) {} } + } + } try { await mod.commands[cmd](args); - // Notify tutorial module for quest tracking - if (this.tutorialModule && cmd !== 'tutorial') this.tutorialModule.onCommandExecuted(cmd, args); + if (cmd !== 'tutorial' && cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandExecuted === 'function') { try { _m.onCommandExecuted(cmd, args); } catch (_e) {} } + } + } // Memory graph: record file access for read/file commands if (cmd === 'cat' || cmd === 'view_module' || cmd === 'edit_module') { try { diff --git a/modules/core/module-loader.js b/modules/core/module-loader.js index 5e69094..53efb08 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.26'; + const LATEST_VER = 'v4.6.27'; const CACHE = '?v=' + LATEST_VER; const stored = localStorage.getItem('webx11_cache_ver'); if (stored !== LATEST_VER) { @@ -53,7 +53,7 @@ setSplash('Initializing terminal (3/3)', total, total, ''); // webx11 already created synchronously above — just init ext modules if (typeof webx11._loadExtModules === 'function') { - let extKeys = ['calc', 'voice', 'debug-panel', 'cron', 'theme', 'wpm', 'mindmap', 'webdav', 'skill-pack-core', 'cryptogzip', 'tutorial', 'floating', 'console', 'media', 'three', 'kanban']; + let extKeys = ['calc', 'voice', 'debug-panel', 'cron', 'theme', 'wpm', 'mindmap', 'webdav', 'skill-pack-core', 'cryptogzip', 'tutorial', 'floating', 'console', 'media', 'three', 'kanban', 'course']; const saved = localStorage.getItem('webx11_startup_modules'); let selected = null; try { if (saved) selected = JSON.parse(saved); } catch (e) {} diff --git a/modules/core/terminal.js b/modules/core/terminal.js index 123c224..425c5d6 100644 --- a/modules/core/terminal.js +++ b/modules/core/terminal.js @@ -1857,9 +1857,17 @@ for (const modName in this.moduleManager.modules) { const mod = this.moduleManager.modules[modName]; if (mod.commands && mod.commands[cmd]) { + if (cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandStart === 'function') { try { _m.onCommandStart(cmd, args); } catch (_e) {} } + } + } try { await mod.commands[cmd](args); - // Notify tutorial module for quest tracking - if (this.tutorialModule && cmd !== 'tutorial') this.tutorialModule.onCommandExecuted(cmd, args); + if (cmd !== 'tutorial' && cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandExecuted === 'function') { try { _m.onCommandExecuted(cmd, args); } catch (_e) {} } + } + } // Memory graph: record file access for read/file commands if (cmd === 'cat' || cmd === 'view_module' || cmd === 'edit_module') { try { |