@creezio/electron-shell 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +351 -0
- package/dist/.creezio-src-hash.json +4 -0
- package/dist/admin-window.d.ts +18 -0
- package/dist/admin-window.d.ts.map +1 -0
- package/dist/admin-window.js +75 -0
- package/dist/admin-window.js.map +1 -0
- package/dist/boot.d.ts +36 -0
- package/dist/boot.d.ts.map +1 -0
- package/dist/boot.js +99 -0
- package/dist/boot.js.map +1 -0
- package/dist/desktop/assistant-chrome.d.ts +42 -0
- package/dist/desktop/assistant-chrome.d.ts.map +1 -0
- package/dist/desktop/assistant-chrome.js +178 -0
- package/dist/desktop/assistant-chrome.js.map +1 -0
- package/dist/desktop/brand-desktop-runtime.d.ts +72 -0
- package/dist/desktop/brand-desktop-runtime.d.ts.map +1 -0
- package/dist/desktop/brand-desktop-runtime.js +3926 -0
- package/dist/desktop/brand-desktop-runtime.js.map +1 -0
- package/dist/desktop/desktop-session.d.ts +85 -0
- package/dist/desktop/desktop-session.d.ts.map +1 -0
- package/dist/desktop/desktop-session.js +163 -0
- package/dist/desktop/desktop-session.js.map +1 -0
- package/dist/desktop/error-page-html.d.ts +16 -0
- package/dist/desktop/error-page-html.d.ts.map +1 -0
- package/dist/desktop/error-page-html.js +88 -0
- package/dist/desktop/error-page-html.js.map +1 -0
- package/dist/desktop/legacy-brand-compat.d.ts +45 -0
- package/dist/desktop/legacy-brand-compat.d.ts.map +1 -0
- package/dist/desktop/legacy-brand-compat.js +49 -0
- package/dist/desktop/legacy-brand-compat.js.map +1 -0
- package/dist/desktop/oauth-loopback.d.ts +28 -0
- package/dist/desktop/oauth-loopback.d.ts.map +1 -0
- package/dist/desktop/oauth-loopback.js +137 -0
- package/dist/desktop/oauth-loopback.js.map +1 -0
- package/dist/desktop/profile-picker-html.d.ts +27 -0
- package/dist/desktop/profile-picker-html.d.ts.map +1 -0
- package/dist/desktop/profile-picker-html.js +213 -0
- package/dist/desktop/profile-picker-html.js.map +1 -0
- package/dist/desktop/remote-offline-html.d.ts +14 -0
- package/dist/desktop/remote-offline-html.d.ts.map +1 -0
- package/dist/desktop/remote-offline-html.js +88 -0
- package/dist/desktop/remote-offline-html.js.map +1 -0
- package/dist/factory-reset-runtime.d.ts +11 -0
- package/dist/factory-reset-runtime.d.ts.map +1 -0
- package/dist/factory-reset-runtime.js +77 -0
- package/dist/factory-reset-runtime.js.map +1 -0
- package/dist/host/ai-workspace/actions.d.ts +12 -0
- package/dist/host/ai-workspace/actions.d.ts.map +1 -0
- package/dist/host/ai-workspace/actions.js +243 -0
- package/dist/host/ai-workspace/actions.js.map +1 -0
- package/dist/host/ai-workspace/bindings.d.ts +51 -0
- package/dist/host/ai-workspace/bindings.d.ts.map +1 -0
- package/dist/host/ai-workspace/bindings.js +40 -0
- package/dist/host/ai-workspace/bindings.js.map +1 -0
- package/dist/host/ai-workspace/index.d.ts +11 -0
- package/dist/host/ai-workspace/index.d.ts.map +1 -0
- package/dist/host/ai-workspace/index.js +6 -0
- package/dist/host/ai-workspace/index.js.map +1 -0
- package/dist/host/ai-workspace/manager.d.ts +128 -0
- package/dist/host/ai-workspace/manager.d.ts.map +1 -0
- package/dist/host/ai-workspace/manager.js +519 -0
- package/dist/host/ai-workspace/manager.js.map +1 -0
- package/dist/host/ai-workspace/profile-window.d.ts +37 -0
- package/dist/host/ai-workspace/profile-window.d.ts.map +1 -0
- package/dist/host/ai-workspace/profile-window.js +121 -0
- package/dist/host/ai-workspace/profile-window.js.map +1 -0
- package/dist/host/ai-workspace/screencast.d.ts +56 -0
- package/dist/host/ai-workspace/screencast.d.ts.map +1 -0
- package/dist/host/ai-workspace/screencast.js +245 -0
- package/dist/host/ai-workspace/screencast.js.map +1 -0
- package/dist/host/ai-workspace/types.d.ts +40 -0
- package/dist/host/ai-workspace/types.d.ts.map +1 -0
- package/dist/host/ai-workspace/types.js +6 -0
- package/dist/host/ai-workspace/types.js.map +1 -0
- package/dist/host/brand-host-runtime.d.ts +107 -0
- package/dist/host/brand-host-runtime.d.ts.map +1 -0
- package/dist/host/brand-host-runtime.js +274 -0
- package/dist/host/brand-host-runtime.js.map +1 -0
- package/dist/host/brand-host-stack.d.ts +117 -0
- package/dist/host/brand-host-stack.d.ts.map +1 -0
- package/dist/host/brand-host-stack.js +253 -0
- package/dist/host/brand-host-stack.js.map +1 -0
- package/dist/host/brand-kernel-http.d.ts +34 -0
- package/dist/host/brand-kernel-http.d.ts.map +1 -0
- package/dist/host/brand-kernel-http.js +95 -0
- package/dist/host/brand-kernel-http.js.map +1 -0
- package/dist/host/brand-meili-boot.d.ts +67 -0
- package/dist/host/brand-meili-boot.d.ts.map +1 -0
- package/dist/host/brand-meili-boot.js +100 -0
- package/dist/host/brand-meili-boot.js.map +1 -0
- package/dist/host/bridge-client.d.ts +54 -0
- package/dist/host/bridge-client.d.ts.map +1 -0
- package/dist/host/bridge-client.js +187 -0
- package/dist/host/bridge-client.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-driver.d.ts +45 -0
- package/dist/host/browser-tabs/browser-tab-driver.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-driver.js +154 -0
- package/dist/host/browser-tabs/browser-tab-driver.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-manager.d.ts +208 -0
- package/dist/host/browser-tabs/browser-tab-manager.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-manager.js +758 -0
- package/dist/host/browser-tabs/browser-tab-manager.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.d.ts +2 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.js +29 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload.d.ts +11 -0
- package/dist/host/browser-tabs/browser-tab-preload.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload.js +11 -0
- package/dist/host/browser-tabs/browser-tab-preload.js.map +1 -0
- package/dist/host/browser-tabs/chrome-ua.d.ts +19 -0
- package/dist/host/browser-tabs/chrome-ua.d.ts.map +1 -0
- package/dist/host/browser-tabs/chrome-ua.js +37 -0
- package/dist/host/browser-tabs/chrome-ua.js.map +1 -0
- package/dist/host/browser-tabs/fake-cursor-inject.d.ts +7 -0
- package/dist/host/browser-tabs/fake-cursor-inject.d.ts.map +1 -0
- package/dist/host/browser-tabs/fake-cursor-inject.js +7 -0
- package/dist/host/browser-tabs/fake-cursor-inject.js.map +1 -0
- package/dist/host/browser-tabs/index.d.ts +13 -0
- package/dist/host/browser-tabs/index.d.ts.map +1 -0
- package/dist/host/browser-tabs/index.js +13 -0
- package/dist/host/browser-tabs/index.js.map +1 -0
- package/dist/host/browser-tabs/tab-load-state.d.ts +56 -0
- package/dist/host/browser-tabs/tab-load-state.d.ts.map +1 -0
- package/dist/host/browser-tabs/tab-load-state.js +56 -0
- package/dist/host/browser-tabs/tab-load-state.js.map +1 -0
- package/dist/host/browser-tabs/tab-url.d.ts +10 -0
- package/dist/host/browser-tabs/tab-url.d.ts.map +1 -0
- package/dist/host/browser-tabs/tab-url.js +57 -0
- package/dist/host/browser-tabs/tab-url.js.map +1 -0
- package/dist/host/context.d.ts +70 -0
- package/dist/host/context.d.ts.map +1 -0
- package/dist/host/context.js +16 -0
- package/dist/host/context.js.map +1 -0
- package/dist/host/contracts.d.ts +39 -0
- package/dist/host/contracts.d.ts.map +1 -0
- package/dist/host/contracts.js +26 -0
- package/dist/host/contracts.js.map +1 -0
- package/dist/host/crash-reporter.d.ts +65 -0
- package/dist/host/crash-reporter.d.ts.map +1 -0
- package/dist/host/crash-reporter.js +371 -0
- package/dist/host/crash-reporter.js.map +1 -0
- package/dist/host/ensure-kit-binaries.d.ts +17 -0
- package/dist/host/ensure-kit-binaries.d.ts.map +1 -0
- package/dist/host/ensure-kit-binaries.js +205 -0
- package/dist/host/ensure-kit-binaries.js.map +1 -0
- package/dist/host/feature-off-host.d.ts +130 -0
- package/dist/host/feature-off-host.d.ts.map +1 -0
- package/dist/host/feature-off-host.js +138 -0
- package/dist/host/feature-off-host.js.map +1 -0
- package/dist/host/hermes/crm-key.d.ts +49 -0
- package/dist/host/hermes/crm-key.d.ts.map +1 -0
- package/dist/host/hermes/crm-key.js +126 -0
- package/dist/host/hermes/crm-key.js.map +1 -0
- package/dist/host/hermes/ensure-crm-key-db.d.ts +7 -0
- package/dist/host/hermes/ensure-crm-key-db.d.ts.map +1 -0
- package/dist/host/hermes/ensure-crm-key-db.js +84 -0
- package/dist/host/hermes/ensure-crm-key-db.js.map +1 -0
- package/dist/host/hermes/launcher.d.ts +98 -0
- package/dist/host/hermes/launcher.d.ts.map +1 -0
- package/dist/host/hermes/launcher.js +972 -0
- package/dist/host/hermes/launcher.js.map +1 -0
- package/dist/host/hermes/runtime-bootstrap.d.ts +172 -0
- package/dist/host/hermes/runtime-bootstrap.d.ts.map +1 -0
- package/dist/host/hermes/runtime-bootstrap.js +789 -0
- package/dist/host/hermes/runtime-bootstrap.js.map +1 -0
- package/dist/host/hermes/skills-seed.d.ts +40 -0
- package/dist/host/hermes/skills-seed.d.ts.map +1 -0
- package/dist/host/hermes/skills-seed.js +100 -0
- package/dist/host/hermes/skills-seed.js.map +1 -0
- package/dist/host/host-stack.d.ts +35 -0
- package/dist/host/host-stack.d.ts.map +1 -0
- package/dist/host/host-stack.js +38 -0
- package/dist/host/host-stack.js.map +1 -0
- package/dist/host/kit-os-resources.d.ts +6 -0
- package/dist/host/kit-os-resources.d.ts.map +1 -0
- package/dist/host/kit-os-resources.js +88 -0
- package/dist/host/kit-os-resources.js.map +1 -0
- package/dist/host/load-electron.d.ts +2 -0
- package/dist/host/load-electron.d.ts.map +1 -0
- package/dist/host/load-electron.js +44 -0
- package/dist/host/load-electron.js.map +1 -0
- package/dist/host/local-config.d.ts +120 -0
- package/dist/host/local-config.d.ts.map +1 -0
- package/dist/host/local-config.js +633 -0
- package/dist/host/local-config.js.map +1 -0
- package/dist/host/meili/browse.d.ts +58 -0
- package/dist/host/meili/browse.d.ts.map +1 -0
- package/dist/host/meili/browse.js +98 -0
- package/dist/host/meili/browse.js.map +1 -0
- package/dist/host/meili/coherence-db.d.ts +35 -0
- package/dist/host/meili/coherence-db.d.ts.map +1 -0
- package/dist/host/meili/coherence-db.js +129 -0
- package/dist/host/meili/coherence-db.js.map +1 -0
- package/dist/host/meili/coherence-query.d.ts +10 -0
- package/dist/host/meili/coherence-query.d.ts.map +1 -0
- package/dist/host/meili/coherence-query.js +23 -0
- package/dist/host/meili/coherence-query.js.map +1 -0
- package/dist/host/meili/coherence.d.ts +53 -0
- package/dist/host/meili/coherence.d.ts.map +1 -0
- package/dist/host/meili/coherence.js +148 -0
- package/dist/host/meili/coherence.js.map +1 -0
- package/dist/host/meili/feed.d.ts +82 -0
- package/dist/host/meili/feed.d.ts.map +1 -0
- package/dist/host/meili/feed.js +100 -0
- package/dist/host/meili/feed.js.map +1 -0
- package/dist/host/meili/generic-indexer.d.ts +34 -0
- package/dist/host/meili/generic-indexer.d.ts.map +1 -0
- package/dist/host/meili/generic-indexer.js +333 -0
- package/dist/host/meili/generic-indexer.js.map +1 -0
- package/dist/host/meili/index-schema.d.ts +64 -0
- package/dist/host/meili/index-schema.d.ts.map +1 -0
- package/dist/host/meili/index-schema.js +70 -0
- package/dist/host/meili/index-schema.js.map +1 -0
- package/dist/host/meili/index.d.ts +13 -0
- package/dist/host/meili/index.d.ts.map +1 -0
- package/dist/host/meili/index.js +8 -0
- package/dist/host/meili/index.js.map +1 -0
- package/dist/host/meili/indexer.d.ts +31 -0
- package/dist/host/meili/indexer.d.ts.map +1 -0
- package/dist/host/meili/indexer.js +49 -0
- package/dist/host/meili/indexer.js.map +1 -0
- package/dist/host/meili-launcher.d.ts +30 -0
- package/dist/host/meili-launcher.d.ts.map +1 -0
- package/dist/host/meili-launcher.js +115 -0
- package/dist/host/meili-launcher.js.map +1 -0
- package/dist/host/n8n/agent-isolation.d.ts +55 -0
- package/dist/host/n8n/agent-isolation.d.ts.map +1 -0
- package/dist/host/n8n/agent-isolation.js +158 -0
- package/dist/host/n8n/agent-isolation.js.map +1 -0
- package/dist/host/n8n/api-key.d.ts +67 -0
- package/dist/host/n8n/api-key.d.ts.map +1 -0
- package/dist/host/n8n/api-key.js +297 -0
- package/dist/host/n8n/api-key.js.map +1 -0
- package/dist/host/n8n/launcher.d.ts +126 -0
- package/dist/host/n8n/launcher.d.ts.map +1 -0
- package/dist/host/n8n/launcher.js +1170 -0
- package/dist/host/n8n/launcher.js.map +1 -0
- package/dist/host/n8n/runtime-bootstrap.d.ts +44 -0
- package/dist/host/n8n/runtime-bootstrap.d.ts.map +1 -0
- package/dist/host/n8n/runtime-bootstrap.js +230 -0
- package/dist/host/n8n/runtime-bootstrap.js.map +1 -0
- package/dist/host/node-runtime.d.ts +52 -0
- package/dist/host/node-runtime.d.ts.map +1 -0
- package/dist/host/node-runtime.js +257 -0
- package/dist/host/node-runtime.js.map +1 -0
- package/dist/host/npm-cli.d.ts +43 -0
- package/dist/host/npm-cli.d.ts.map +1 -0
- package/dist/host/npm-cli.js +213 -0
- package/dist/host/npm-cli.js.map +1 -0
- package/dist/host/plugins/accept-check.d.ts +19 -0
- package/dist/host/plugins/accept-check.d.ts.map +1 -0
- package/dist/host/plugins/accept-check.js +172 -0
- package/dist/host/plugins/accept-check.js.map +1 -0
- package/dist/host/plugins/brand-bindings.d.ts +103 -0
- package/dist/host/plugins/brand-bindings.d.ts.map +1 -0
- package/dist/host/plugins/brand-bindings.js +65 -0
- package/dist/host/plugins/brand-bindings.js.map +1 -0
- package/dist/host/plugins/control-adapters.d.ts +11 -0
- package/dist/host/plugins/control-adapters.d.ts.map +1 -0
- package/dist/host/plugins/control-adapters.js +83 -0
- package/dist/host/plugins/control-adapters.js.map +1 -0
- package/dist/host/plugins/control-extras.d.ts +61 -0
- package/dist/host/plugins/control-extras.d.ts.map +1 -0
- package/dist/host/plugins/control-extras.js +382 -0
- package/dist/host/plugins/control-extras.js.map +1 -0
- package/dist/host/plugins/control-plane.d.ts +42 -0
- package/dist/host/plugins/control-plane.d.ts.map +1 -0
- package/dist/host/plugins/control-plane.js +124 -0
- package/dist/host/plugins/control-plane.js.map +1 -0
- package/dist/host/plugins/control-token.d.ts +24 -0
- package/dist/host/plugins/control-token.d.ts.map +1 -0
- package/dist/host/plugins/control-token.js +77 -0
- package/dist/host/plugins/control-token.js.map +1 -0
- package/dist/host/plugins/crm-key.d.ts +25 -0
- package/dist/host/plugins/crm-key.d.ts.map +1 -0
- package/dist/host/plugins/crm-key.js +126 -0
- package/dist/host/plugins/crm-key.js.map +1 -0
- package/dist/host/plugins/data.d.ts +21 -0
- package/dist/host/plugins/data.d.ts.map +1 -0
- package/dist/host/plugins/data.js +100 -0
- package/dist/host/plugins/data.js.map +1 -0
- package/dist/host/plugins/events.d.ts +6 -0
- package/dist/host/plugins/events.d.ts.map +1 -0
- package/dist/host/plugins/events.js +6 -0
- package/dist/host/plugins/events.js.map +1 -0
- package/dist/host/plugins/execution-grant.d.ts +6 -0
- package/dist/host/plugins/execution-grant.d.ts.map +1 -0
- package/dist/host/plugins/execution-grant.js +6 -0
- package/dist/host/plugins/execution-grant.js.map +1 -0
- package/dist/host/plugins/git.d.ts +56 -0
- package/dist/host/plugins/git.d.ts.map +1 -0
- package/dist/host/plugins/git.js +357 -0
- package/dist/host/plugins/git.js.map +1 -0
- package/dist/host/plugins/host.d.ts +68 -0
- package/dist/host/plugins/host.d.ts.map +1 -0
- package/dist/host/plugins/host.js +276 -0
- package/dist/host/plugins/host.js.map +1 -0
- package/dist/host/plugins/launcher.d.ts +146 -0
- package/dist/host/plugins/launcher.d.ts.map +1 -0
- package/dist/host/plugins/launcher.js +489 -0
- package/dist/host/plugins/launcher.js.map +1 -0
- package/dist/host/plugins/runtime.d.ts +28 -0
- package/dist/host/plugins/runtime.d.ts.map +1 -0
- package/dist/host/plugins/runtime.js +430 -0
- package/dist/host/plugins/runtime.js.map +1 -0
- package/dist/host/plugins/test-runner.d.ts +15 -0
- package/dist/host/plugins/test-runner.d.ts.map +1 -0
- package/dist/host/plugins/test-runner.js +106 -0
- package/dist/host/plugins/test-runner.js.map +1 -0
- package/dist/host/safe-storage.d.ts +21 -0
- package/dist/host/safe-storage.d.ts.map +1 -0
- package/dist/host/safe-storage.js +55 -0
- package/dist/host/safe-storage.js.map +1 -0
- package/dist/host/sandbox/embed-sandbox.d.ts +133 -0
- package/dist/host/sandbox/embed-sandbox.d.ts.map +1 -0
- package/dist/host/sandbox/embed-sandbox.js +378 -0
- package/dist/host/sandbox/embed-sandbox.js.map +1 -0
- package/dist/host/sandbox/os-sandbox.d.ts +41 -0
- package/dist/host/sandbox/os-sandbox.d.ts.map +1 -0
- package/dist/host/sandbox/os-sandbox.js +98 -0
- package/dist/host/sandbox/os-sandbox.js.map +1 -0
- package/dist/host/server-env.d.ts +50 -0
- package/dist/host/server-env.d.ts.map +1 -0
- package/dist/host/server-env.js +64 -0
- package/dist/host/server-env.js.map +1 -0
- package/dist/host/server-launcher.d.ts +49 -0
- package/dist/host/server-launcher.d.ts.map +1 -0
- package/dist/host/server-launcher.js +43 -0
- package/dist/host/server-launcher.js.map +1 -0
- package/dist/host/tunnel/cloudflared-respawn.d.ts +58 -0
- package/dist/host/tunnel/cloudflared-respawn.d.ts.map +1 -0
- package/dist/host/tunnel/cloudflared-respawn.js +73 -0
- package/dist/host/tunnel/cloudflared-respawn.js.map +1 -0
- package/dist/host/tunnel/tunnel.d.ts +72 -0
- package/dist/host/tunnel/tunnel.d.ts.map +1 -0
- package/dist/host/tunnel/tunnel.js +462 -0
- package/dist/host/tunnel/tunnel.js.map +1 -0
- package/dist/host/web-telemetry.d.ts +16 -0
- package/dist/host/web-telemetry.d.ts.map +1 -0
- package/dist/host/web-telemetry.js +97 -0
- package/dist/host/web-telemetry.js.map +1 -0
- package/dist/index.d.ts +198 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +44 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +252 -0
- package/dist/logger.js.map +1 -0
- package/dist/main-facade.d.ts +51 -0
- package/dist/main-facade.d.ts.map +1 -0
- package/dist/main-facade.js +96 -0
- package/dist/main-facade.js.map +1 -0
- package/dist/meili.d.ts +19 -0
- package/dist/meili.d.ts.map +1 -0
- package/dist/meili.js +14 -0
- package/dist/meili.js.map +1 -0
- package/dist/splash-ui.d.ts +69 -0
- package/dist/splash-ui.d.ts.map +1 -0
- package/dist/splash-ui.js +431 -0
- package/dist/splash-ui.js.map +1 -0
- package/dist/tray.d.ts +44 -0
- package/dist/tray.d.ts.map +1 -0
- package/dist/tray.js +173 -0
- package/dist/tray.js.map +1 -0
- package/dist/updater.d.ts +36 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +257 -0
- package/dist/updater.js.map +1 -0
- package/dist/window-chrome.d.ts +12 -0
- package/dist/window-chrome.d.ts.map +1 -0
- package/dist/window-chrome.js +93 -0
- package/dist/window-chrome.js.map +1 -0
- package/dist-cjs/admin-window.js +116 -0
- package/dist-cjs/admin-window.js.map +1 -0
- package/dist-cjs/boot.js +139 -0
- package/dist-cjs/boot.js.map +1 -0
- package/dist-cjs/desktop/assistant-chrome.js +184 -0
- package/dist-cjs/desktop/assistant-chrome.js.map +1 -0
- package/dist-cjs/desktop/brand-desktop-runtime.js +3932 -0
- package/dist-cjs/desktop/brand-desktop-runtime.js.map +1 -0
- package/dist-cjs/desktop/desktop-session.js +171 -0
- package/dist-cjs/desktop/desktop-session.js.map +1 -0
- package/dist-cjs/desktop/error-page-html.js +92 -0
- package/dist-cjs/desktop/error-page-html.js.map +1 -0
- package/dist-cjs/desktop/legacy-brand-compat.js +56 -0
- package/dist-cjs/desktop/legacy-brand-compat.js.map +1 -0
- package/dist-cjs/desktop/oauth-loopback.js +144 -0
- package/dist-cjs/desktop/oauth-loopback.js.map +1 -0
- package/dist-cjs/desktop/profile-picker-html.js +216 -0
- package/dist-cjs/desktop/profile-picker-html.js.map +1 -0
- package/dist-cjs/desktop/remote-offline-html.js +91 -0
- package/dist-cjs/desktop/remote-offline-html.js.map +1 -0
- package/dist-cjs/factory-reset-runtime.js +117 -0
- package/dist-cjs/factory-reset-runtime.js.map +1 -0
- package/dist-cjs/host/ai-workspace/actions.js +247 -0
- package/dist-cjs/host/ai-workspace/actions.js.map +1 -0
- package/dist-cjs/host/ai-workspace/bindings.js +49 -0
- package/dist-cjs/host/ai-workspace/bindings.js.map +1 -0
- package/dist-cjs/host/ai-workspace/index.js +21 -0
- package/dist-cjs/host/ai-workspace/index.js.map +1 -0
- package/dist-cjs/host/ai-workspace/manager.js +528 -0
- package/dist-cjs/host/ai-workspace/manager.js.map +1 -0
- package/dist-cjs/host/ai-workspace/profile-window.js +125 -0
- package/dist-cjs/host/ai-workspace/profile-window.js.map +1 -0
- package/dist-cjs/host/ai-workspace/screencast.js +249 -0
- package/dist-cjs/host/ai-workspace/screencast.js.map +1 -0
- package/dist-cjs/host/ai-workspace/types.js +7 -0
- package/dist-cjs/host/ai-workspace/types.js.map +1 -0
- package/dist-cjs/host/brand-host-runtime.js +286 -0
- package/dist-cjs/host/brand-host-runtime.js.map +1 -0
- package/dist-cjs/host/brand-host-stack.js +259 -0
- package/dist-cjs/host/brand-host-stack.js.map +1 -0
- package/dist-cjs/host/brand-kernel-http.js +101 -0
- package/dist-cjs/host/brand-kernel-http.js.map +1 -0
- package/dist-cjs/host/brand-meili-boot.js +106 -0
- package/dist-cjs/host/brand-meili-boot.js.map +1 -0
- package/dist-cjs/host/bridge-client.js +191 -0
- package/dist-cjs/host/bridge-client.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-driver.js +158 -0
- package/dist-cjs/host/browser-tabs/browser-tab-driver.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-manager.js +766 -0
- package/dist-cjs/host/browser-tabs/browser-tab-manager.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload-path.js +35 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload-path.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload.js +12 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload.js.map +1 -0
- package/dist-cjs/host/browser-tabs/chrome-ua.js +41 -0
- package/dist-cjs/host/browser-tabs/chrome-ua.js.map +1 -0
- package/dist-cjs/host/browser-tabs/fake-cursor-inject.js +11 -0
- package/dist-cjs/host/browser-tabs/fake-cursor-inject.js.map +1 -0
- package/dist-cjs/host/browser-tabs/index.js +29 -0
- package/dist-cjs/host/browser-tabs/index.js.map +1 -0
- package/dist-cjs/host/browser-tabs/tab-load-state.js +59 -0
- package/dist-cjs/host/browser-tabs/tab-load-state.js.map +1 -0
- package/dist-cjs/host/browser-tabs/tab-url.js +62 -0
- package/dist-cjs/host/browser-tabs/tab-url.js.map +1 -0
- package/dist-cjs/host/context.js +20 -0
- package/dist-cjs/host/context.js.map +1 -0
- package/dist-cjs/host/contracts.js +32 -0
- package/dist-cjs/host/contracts.js.map +1 -0
- package/dist-cjs/host/crash-reporter.js +422 -0
- package/dist-cjs/host/crash-reporter.js.map +1 -0
- package/dist-cjs/host/ensure-kit-binaries.js +212 -0
- package/dist-cjs/host/ensure-kit-binaries.js.map +1 -0
- package/dist-cjs/host/feature-off-host.js +144 -0
- package/dist-cjs/host/feature-off-host.js.map +1 -0
- package/dist-cjs/host/hermes/crm-key.js +137 -0
- package/dist-cjs/host/hermes/crm-key.js.map +1 -0
- package/dist-cjs/host/hermes/ensure-crm-key-db.js +89 -0
- package/dist-cjs/host/hermes/ensure-crm-key-db.js.map +1 -0
- package/dist-cjs/host/hermes/launcher.js +981 -0
- package/dist-cjs/host/hermes/launcher.js.map +1 -0
- package/dist-cjs/host/hermes/runtime-bootstrap.js +853 -0
- package/dist-cjs/host/hermes/runtime-bootstrap.js.map +1 -0
- package/dist-cjs/host/hermes/skills-seed.js +110 -0
- package/dist-cjs/host/hermes/skills-seed.js.map +1 -0
- package/dist-cjs/host/host-stack.js +42 -0
- package/dist-cjs/host/host-stack.js.map +1 -0
- package/dist-cjs/host/kit-os-resources.js +96 -0
- package/dist-cjs/host/kit-os-resources.js.map +1 -0
- package/dist-cjs/host/load-electron.js +47 -0
- package/dist-cjs/host/load-electron.js.map +1 -0
- package/dist-cjs/host/local-config.js +640 -0
- package/dist-cjs/host/local-config.js.map +1 -0
- package/dist-cjs/host/meili/browse.js +103 -0
- package/dist-cjs/host/meili/browse.js.map +1 -0
- package/dist-cjs/host/meili/coherence-db.js +139 -0
- package/dist-cjs/host/meili/coherence-db.js.map +1 -0
- package/dist-cjs/host/meili/coherence-query.js +25 -0
- package/dist-cjs/host/meili/coherence-query.js.map +1 -0
- package/dist-cjs/host/meili/coherence.js +158 -0
- package/dist-cjs/host/meili/coherence.js.map +1 -0
- package/dist-cjs/host/meili/feed.js +108 -0
- package/dist-cjs/host/meili/feed.js.map +1 -0
- package/dist-cjs/host/meili/generic-indexer.js +340 -0
- package/dist-cjs/host/meili/generic-indexer.js.map +1 -0
- package/dist-cjs/host/meili/index-schema.js +79 -0
- package/dist-cjs/host/meili/index-schema.js.map +1 -0
- package/dist-cjs/host/meili/index.js +45 -0
- package/dist-cjs/host/meili/index.js.map +1 -0
- package/dist-cjs/host/meili/indexer.js +85 -0
- package/dist-cjs/host/meili/indexer.js.map +1 -0
- package/dist-cjs/host/meili-launcher.js +121 -0
- package/dist-cjs/host/meili-launcher.js.map +1 -0
- package/dist-cjs/host/n8n/agent-isolation.js +173 -0
- package/dist-cjs/host/n8n/agent-isolation.js.map +1 -0
- package/dist-cjs/host/n8n/api-key.js +314 -0
- package/dist-cjs/host/n8n/api-key.js.map +1 -0
- package/dist-cjs/host/n8n/launcher.js +1209 -0
- package/dist-cjs/host/n8n/launcher.js.map +1 -0
- package/dist-cjs/host/n8n/runtime-bootstrap.js +244 -0
- package/dist-cjs/host/n8n/runtime-bootstrap.js.map +1 -0
- package/dist-cjs/host/node-runtime.js +274 -0
- package/dist-cjs/host/node-runtime.js.map +1 -0
- package/dist-cjs/host/npm-cli.js +224 -0
- package/dist-cjs/host/npm-cli.js.map +1 -0
- package/dist-cjs/host/plugins/accept-check.js +176 -0
- package/dist-cjs/host/plugins/accept-check.js.map +1 -0
- package/dist-cjs/host/plugins/brand-bindings.js +78 -0
- package/dist-cjs/host/plugins/brand-bindings.js.map +1 -0
- package/dist-cjs/host/plugins/control-adapters.js +89 -0
- package/dist-cjs/host/plugins/control-adapters.js.map +1 -0
- package/dist-cjs/host/plugins/control-extras.js +397 -0
- package/dist-cjs/host/plugins/control-extras.js.map +1 -0
- package/dist-cjs/host/plugins/control-plane.js +130 -0
- package/dist-cjs/host/plugins/control-plane.js.map +1 -0
- package/dist-cjs/host/plugins/control-token.js +90 -0
- package/dist-cjs/host/plugins/control-token.js.map +1 -0
- package/dist-cjs/host/plugins/crm-key.js +135 -0
- package/dist-cjs/host/plugins/crm-key.js.map +1 -0
- package/dist-cjs/host/plugins/data.js +107 -0
- package/dist-cjs/host/plugins/data.js.map +1 -0
- package/dist-cjs/host/plugins/events.js +19 -0
- package/dist-cjs/host/plugins/events.js.map +1 -0
- package/dist-cjs/host/plugins/execution-grant.js +11 -0
- package/dist-cjs/host/plugins/execution-grant.js.map +1 -0
- package/dist-cjs/host/plugins/git.js +371 -0
- package/dist-cjs/host/plugins/git.js.map +1 -0
- package/dist-cjs/host/plugins/host.js +283 -0
- package/dist-cjs/host/plugins/host.js.map +1 -0
- package/dist-cjs/host/plugins/launcher.js +514 -0
- package/dist-cjs/host/plugins/launcher.js.map +1 -0
- package/dist-cjs/host/plugins/runtime.js +446 -0
- package/dist-cjs/host/plugins/runtime.js.map +1 -0
- package/dist-cjs/host/plugins/test-runner.js +112 -0
- package/dist-cjs/host/plugins/test-runner.js.map +1 -0
- package/dist-cjs/host/safe-storage.js +95 -0
- package/dist-cjs/host/safe-storage.js.map +1 -0
- package/dist-cjs/host/sandbox/embed-sandbox.js +396 -0
- package/dist-cjs/host/sandbox/embed-sandbox.js.map +1 -0
- package/dist-cjs/host/sandbox/os-sandbox.js +106 -0
- package/dist-cjs/host/sandbox/os-sandbox.js.map +1 -0
- package/dist-cjs/host/server-env.js +69 -0
- package/dist-cjs/host/server-env.js.map +1 -0
- package/dist-cjs/host/server-launcher.js +52 -0
- package/dist-cjs/host/server-launcher.js.map +1 -0
- package/dist-cjs/host/tunnel/cloudflared-respawn.js +80 -0
- package/dist-cjs/host/tunnel/cloudflared-respawn.js.map +1 -0
- package/dist-cjs/host/tunnel/tunnel.js +470 -0
- package/dist-cjs/host/tunnel/tunnel.js.map +1 -0
- package/dist-cjs/host/web-telemetry.js +100 -0
- package/dist-cjs/host/web-telemetry.js.map +1 -0
- package/dist-cjs/index.js +496 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/logger.js +269 -0
- package/dist-cjs/logger.js.map +1 -0
- package/dist-cjs/main-facade.js +139 -0
- package/dist-cjs/main-facade.js.map +1 -0
- package/dist-cjs/meili.js +51 -0
- package/dist-cjs/meili.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/splash-ui.js +447 -0
- package/dist-cjs/splash-ui.js.map +1 -0
- package/dist-cjs/tray.js +182 -0
- package/dist-cjs/tray.js.map +1 -0
- package/dist-cjs/updater.js +304 -0
- package/dist-cjs/updater.js.map +1 -0
- package/dist-cjs/window-chrome.js +98 -0
- package/dist-cjs/window-chrome.js.map +1 -0
- package/package.json +87 -0
- package/scripts/ensure-kit-binaries.mjs +73 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splash de démarrage — modèle + HTML riche (aucun import Electron).
|
|
3
|
+
* Port brand-agnostic de electron/splash-ui.ts (TF2) — productName / bridgeName / cssPrefix.
|
|
4
|
+
*/
|
|
5
|
+
import { windowChromeBarHtml, windowChromeCss, windowChromeJs, } from "./window-chrome.js";
|
|
6
|
+
export const SPLASH_STEP_WEIGHTS = {
|
|
7
|
+
catalog: 12,
|
|
8
|
+
migrations: 5,
|
|
9
|
+
runtime: 3,
|
|
10
|
+
meili: 5,
|
|
11
|
+
index: 12,
|
|
12
|
+
node: 10,
|
|
13
|
+
hermes: 20,
|
|
14
|
+
n8n: 22,
|
|
15
|
+
next: 4,
|
|
16
|
+
tunnel: 4,
|
|
17
|
+
login: 3,
|
|
18
|
+
remote: 100,
|
|
19
|
+
};
|
|
20
|
+
export function formatElapsedMs(ms) {
|
|
21
|
+
const s = Math.max(0, Math.floor(ms / 1000));
|
|
22
|
+
const m = Math.floor(s / 60);
|
|
23
|
+
const r = s % 60;
|
|
24
|
+
return m > 0 ? `${m}:${String(r).padStart(2, "0")}` : `${r}s`;
|
|
25
|
+
}
|
|
26
|
+
export function sanitizeSplashDetail(line) {
|
|
27
|
+
return String(line || "")
|
|
28
|
+
.replace(/\u001b\[[0-9;]*m/g, "")
|
|
29
|
+
.replace(/\r/g, "")
|
|
30
|
+
.replace(/[ \t]+/g, " ")
|
|
31
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
32
|
+
.trim();
|
|
33
|
+
}
|
|
34
|
+
export function estimateEmbedPercent(detail) {
|
|
35
|
+
const s = detail.toLowerCase();
|
|
36
|
+
if (!s || s === "…" || s === "démarrage")
|
|
37
|
+
return 8;
|
|
38
|
+
if (/erreur|error|fail/.test(s))
|
|
39
|
+
return 100;
|
|
40
|
+
if (/\bok\b|prêt|ready|ui prêt|session owner/.test(s))
|
|
41
|
+
return 100;
|
|
42
|
+
if (/réutilise|déjà prêt|warm/.test(s))
|
|
43
|
+
return 90;
|
|
44
|
+
if (/health|attente|wait|lent/.test(s))
|
|
45
|
+
return 82;
|
|
46
|
+
if (/attente n8n|charge encore ses modules/.test(s))
|
|
47
|
+
return 82;
|
|
48
|
+
if (/première initialisation|migrations|listening/.test(s))
|
|
49
|
+
return 70;
|
|
50
|
+
if (/redémarrage n8n|données déjà présentes|spawn warm|spawn cold|signal prêt|editor is now/i.test(s))
|
|
51
|
+
return 88;
|
|
52
|
+
if (/owner:|local_trusted|jwt=ok|cli hermes/.test(s))
|
|
53
|
+
return 55;
|
|
54
|
+
if (/npm install|pip install|download|télécharg|checksum|bootstrap/.test(s))
|
|
55
|
+
return 35;
|
|
56
|
+
if (/runtime (déjà|manquant)|installation runtime|node /.test(s))
|
|
57
|
+
return 20;
|
|
58
|
+
return 40;
|
|
59
|
+
}
|
|
60
|
+
export function stepProgressRatio(step) {
|
|
61
|
+
if (step.status === "done" || step.status === "skip")
|
|
62
|
+
return 1;
|
|
63
|
+
if (step.status === "error")
|
|
64
|
+
return 1;
|
|
65
|
+
if (step.status === "pending")
|
|
66
|
+
return 0;
|
|
67
|
+
if (typeof step.percent === "number" && Number.isFinite(step.percent)) {
|
|
68
|
+
return Math.max(0, Math.min(100, step.percent)) / 100;
|
|
69
|
+
}
|
|
70
|
+
return 0.35;
|
|
71
|
+
}
|
|
72
|
+
export function computeOverallPercent(steps) {
|
|
73
|
+
let wSum = 0;
|
|
74
|
+
let pSum = 0;
|
|
75
|
+
for (const step of steps) {
|
|
76
|
+
if (step.status === "skip")
|
|
77
|
+
continue;
|
|
78
|
+
const w = SPLASH_STEP_WEIGHTS[step.id] ?? 5;
|
|
79
|
+
wSum += w;
|
|
80
|
+
pSum += w * stepProgressRatio(step);
|
|
81
|
+
}
|
|
82
|
+
if (wSum <= 0)
|
|
83
|
+
return 0;
|
|
84
|
+
return Math.max(0, Math.min(100, (pSum / wSum) * 100));
|
|
85
|
+
}
|
|
86
|
+
export function createLocalSplashSteps(opts) {
|
|
87
|
+
const mk = (id, label, status = "pending") => ({
|
|
88
|
+
id,
|
|
89
|
+
label,
|
|
90
|
+
status,
|
|
91
|
+
detail: "",
|
|
92
|
+
percent: null,
|
|
93
|
+
startedAt: null,
|
|
94
|
+
endedAt: null,
|
|
95
|
+
});
|
|
96
|
+
const steps = [
|
|
97
|
+
mk("catalog", opts.catalogLabel ?? "Données initiales"),
|
|
98
|
+
mk("migrations", "Base de données"),
|
|
99
|
+
];
|
|
100
|
+
if (opts.includeRuntime) {
|
|
101
|
+
steps.push(mk("runtime", opts.runtimeLabel ?? "Runtime plateforme"));
|
|
102
|
+
}
|
|
103
|
+
steps.push(mk("meili", "Moteur de recherche"), mk("index", "Indexation", opts.needIndex ? "pending" : "skip"), mk("node", opts.nodeLabel ?? "Runtime Node", opts.needNode ? "pending" : "skip"), mk("hermes", "Hermes (agents)", opts.needHermes ? "pending" : "skip"), mk("n8n", "n8n (automatisations)", opts.needN8n ? "pending" : "skip"), mk("next", "Serveur local CRM"), mk("tunnel", "Tunnel d’accès distant", opts.needTunnel ? "pending" : "skip"), mk("login", "Ouverture de l’interface"));
|
|
104
|
+
return steps;
|
|
105
|
+
}
|
|
106
|
+
export function createRemoteSplashSteps() {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
id: "remote",
|
|
110
|
+
label: "Connexion au serveur",
|
|
111
|
+
status: "pending",
|
|
112
|
+
detail: "",
|
|
113
|
+
percent: null,
|
|
114
|
+
startedAt: null,
|
|
115
|
+
endedAt: null,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: "login",
|
|
119
|
+
label: "Ouverture de l’interface",
|
|
120
|
+
status: "pending",
|
|
121
|
+
detail: "",
|
|
122
|
+
percent: null,
|
|
123
|
+
startedAt: null,
|
|
124
|
+
endedAt: null,
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
export function createSplashModel(steps, headline = "Démarrage…") {
|
|
129
|
+
const now = Date.now();
|
|
130
|
+
return {
|
|
131
|
+
headline,
|
|
132
|
+
bootStartedAt: now,
|
|
133
|
+
overallPercent: computeOverallPercent(steps),
|
|
134
|
+
steps,
|
|
135
|
+
footer: "Hermes et n8n démarrent en parallèle — le temps total ≈ le plus lent des deux.",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function activateSplashStep(model, id, opts) {
|
|
139
|
+
const now = Date.now();
|
|
140
|
+
const steps = model.steps.map((s) => {
|
|
141
|
+
if (s.id === id) {
|
|
142
|
+
if (s.status === "skip")
|
|
143
|
+
return s;
|
|
144
|
+
return {
|
|
145
|
+
...s,
|
|
146
|
+
status: "running",
|
|
147
|
+
detail: opts?.detail !== undefined
|
|
148
|
+
? sanitizeSplashDetail(opts.detail)
|
|
149
|
+
: s.detail,
|
|
150
|
+
percent: opts?.percent !== undefined ? opts.percent : s.percent,
|
|
151
|
+
startedAt: s.startedAt ?? now,
|
|
152
|
+
endedAt: null,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (!opts?.parallel && s.status === "running" && s.id !== id) {
|
|
156
|
+
return {
|
|
157
|
+
...s,
|
|
158
|
+
status: "done",
|
|
159
|
+
percent: 100,
|
|
160
|
+
endedAt: s.endedAt ?? now,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return s;
|
|
164
|
+
});
|
|
165
|
+
const next = {
|
|
166
|
+
...model,
|
|
167
|
+
headline: opts?.headline ?? model.headline,
|
|
168
|
+
steps,
|
|
169
|
+
};
|
|
170
|
+
next.overallPercent = computeOverallPercent(steps);
|
|
171
|
+
return next;
|
|
172
|
+
}
|
|
173
|
+
export function updateSplashStep(model, id, patch) {
|
|
174
|
+
const now = Date.now();
|
|
175
|
+
const steps = model.steps.map((s) => {
|
|
176
|
+
if (s.id !== id)
|
|
177
|
+
return s;
|
|
178
|
+
const status = patch.status ?? s.status;
|
|
179
|
+
const endedAt = status === "done" || status === "error"
|
|
180
|
+
? (s.endedAt ?? now)
|
|
181
|
+
: status === "running"
|
|
182
|
+
? null
|
|
183
|
+
: s.endedAt;
|
|
184
|
+
return {
|
|
185
|
+
...s,
|
|
186
|
+
status,
|
|
187
|
+
detail: patch.detail !== undefined
|
|
188
|
+
? sanitizeSplashDetail(patch.detail)
|
|
189
|
+
: s.detail,
|
|
190
|
+
percent: patch.percent !== undefined ? patch.percent : s.percent,
|
|
191
|
+
startedAt: status === "running" ? (s.startedAt ?? now) : s.startedAt,
|
|
192
|
+
endedAt,
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
const next = {
|
|
196
|
+
...model,
|
|
197
|
+
headline: patch.headline ?? model.headline,
|
|
198
|
+
steps,
|
|
199
|
+
};
|
|
200
|
+
next.overallPercent = computeOverallPercent(steps);
|
|
201
|
+
return next;
|
|
202
|
+
}
|
|
203
|
+
export function completeSplashStep(model, id, detail = "Terminé") {
|
|
204
|
+
return updateSplashStep(model, id, {
|
|
205
|
+
status: "done",
|
|
206
|
+
detail,
|
|
207
|
+
percent: 100,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/** HTML splash riche (barres + chronos) — data URL construite par le caller. */
|
|
211
|
+
export function splashHtmlDocument(opts) {
|
|
212
|
+
const chrome = Boolean(opts.windowChrome);
|
|
213
|
+
const accent = opts.accentColor ?? "#f0701d";
|
|
214
|
+
const cssPrefix = opts.cssPrefix ?? "cz";
|
|
215
|
+
const chromeBar = chrome ? windowChromeBarHtml(cssPrefix) : "";
|
|
216
|
+
const chromeCss = chrome
|
|
217
|
+
? windowChromeCss({ dark: true, cssPrefix })
|
|
218
|
+
: "";
|
|
219
|
+
const chromeJs = chrome
|
|
220
|
+
? windowChromeJs(opts.bridgeName, cssPrefix)
|
|
221
|
+
: "";
|
|
222
|
+
const bodyAttrs = chrome
|
|
223
|
+
? ` class="${cssPrefix}-chrome" data-${cssPrefix}-chrome-force="1"`
|
|
224
|
+
: "";
|
|
225
|
+
const title = opts.productName.replace(/</g, "");
|
|
226
|
+
const updClass = `${cssPrefix}-upd`;
|
|
227
|
+
return `<!doctype html>
|
|
228
|
+
<html lang="fr"><head><meta charset="utf-8"><title>${title}</title>
|
|
229
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
230
|
+
<style>
|
|
231
|
+
*{box-sizing:border-box}
|
|
232
|
+
body{
|
|
233
|
+
margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;
|
|
234
|
+
background:#14182f;color:#fff;
|
|
235
|
+
font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
|
|
236
|
+
}
|
|
237
|
+
.wrap{width:min(640px,92vw);padding:28px 22px 32px}
|
|
238
|
+
.brand{font-size:28px;font-weight:700;color:${accent};letter-spacing:-.02em}
|
|
239
|
+
.headline{margin-top:10px;font-size:15px;line-height:1.4;opacity:.92;word-break:break-word}
|
|
240
|
+
.meta{margin-top:14px;display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:13px;opacity:.75}
|
|
241
|
+
.meta b{color:#fff;opacity:1;font-variant-numeric:tabular-nums}
|
|
242
|
+
.obar{
|
|
243
|
+
margin-top:8px;height:10px;border-radius:6px;background:rgba(255,255,255,.12);overflow:hidden;
|
|
244
|
+
}
|
|
245
|
+
.obar > i{
|
|
246
|
+
display:block;height:100%;width:0%;border-radius:6px;background:${accent};
|
|
247
|
+
transition:width .3s ease;
|
|
248
|
+
}
|
|
249
|
+
.steps{margin-top:18px;display:flex;flex-direction:column;gap:8px;max-height:min(58vh,520px);overflow:auto;padding-right:2px}
|
|
250
|
+
.step{
|
|
251
|
+
border:1px solid rgba(255,255,255,.1);border-radius:10px;
|
|
252
|
+
background:rgba(255,255,255,.03);padding:10px 12px;
|
|
253
|
+
}
|
|
254
|
+
.step.skip{display:none}
|
|
255
|
+
.step.pending{opacity:.45}
|
|
256
|
+
.step.running{border-color:${accent}88;background:${accent}14}
|
|
257
|
+
.step.done{opacity:.85}
|
|
258
|
+
.step.error{border-color:rgba(255,120,120,.55);background:rgba(255,80,80,.08)}
|
|
259
|
+
.row{display:flex;align-items:flex-start;gap:10px}
|
|
260
|
+
.mark{
|
|
261
|
+
flex:0 0 22px;width:22px;height:22px;border-radius:50%;
|
|
262
|
+
display:grid;place-items:center;font-size:12px;margin-top:1px;
|
|
263
|
+
background:rgba(255,255,255,.1);color:rgba(255,255,255,.7);
|
|
264
|
+
}
|
|
265
|
+
.step.running .mark{background:${accent}40;color:${accent}}
|
|
266
|
+
.step.done .mark{background:rgba(80,200,120,.2);color:#8dffb0}
|
|
267
|
+
.step.error .mark{background:rgba(255,100,100,.2);color:#ff8f8f}
|
|
268
|
+
.body{flex:1;min-width:0}
|
|
269
|
+
.topline{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
|
|
270
|
+
.label{font-size:14px;font-weight:600}
|
|
271
|
+
.timer{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums;white-space:nowrap}
|
|
272
|
+
.sbar{
|
|
273
|
+
margin-top:7px;height:5px;border-radius:4px;background:rgba(255,255,255,.1);overflow:hidden;
|
|
274
|
+
}
|
|
275
|
+
.sbar > i{display:block;height:100%;width:0%;border-radius:4px;background:${accent};transition:width .25s ease}
|
|
276
|
+
.sbar.indet > i{
|
|
277
|
+
width:36%!important;animation:indet 1.1s ease-in-out infinite;
|
|
278
|
+
}
|
|
279
|
+
@keyframes indet{
|
|
280
|
+
0%{transform:translateX(-120%)}
|
|
281
|
+
100%{transform:translateX(320%)}
|
|
282
|
+
}
|
|
283
|
+
.detail{
|
|
284
|
+
margin-top:7px;font-size:12px;line-height:1.45;opacity:.78;
|
|
285
|
+
white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;
|
|
286
|
+
}
|
|
287
|
+
.pct{font-size:11px;opacity:.55;margin-left:6px;font-variant-numeric:tabular-nums}
|
|
288
|
+
.footer{margin-top:14px;font-size:12px;line-height:1.45;opacity:.55;word-break:break-word}
|
|
289
|
+
.${updClass}{margin-top:12px;font-size:12.5px;line-height:1.4;color:#ffd08a;opacity:.95;word-break:break-word}
|
|
290
|
+
${chromeCss}
|
|
291
|
+
</style>
|
|
292
|
+
</head>
|
|
293
|
+
<body${bodyAttrs}>
|
|
294
|
+
${chromeBar}
|
|
295
|
+
<div class="wrap">
|
|
296
|
+
<div class="brand">${title}</div>
|
|
297
|
+
<div class="headline" id="headline">Démarrage…</div>
|
|
298
|
+
<div class="${updClass}" id="${updClass}" hidden></div>
|
|
299
|
+
<div class="meta">
|
|
300
|
+
<span>Temps écoulé <b id="elapsed">0s</b></span>
|
|
301
|
+
<span><b id="opct">0</b>%</span>
|
|
302
|
+
</div>
|
|
303
|
+
<div class="obar"><i id="obar"></i></div>
|
|
304
|
+
<div class="steps" id="steps"></div>
|
|
305
|
+
<div class="footer" id="footer"></div>
|
|
306
|
+
</div>
|
|
307
|
+
<script>
|
|
308
|
+
(function () {
|
|
309
|
+
var state = null;
|
|
310
|
+
var MARK = { pending: "○", running: "●", done: "✓", error: "!", skip: "–" };
|
|
311
|
+
|
|
312
|
+
function fmt(ms) {
|
|
313
|
+
var s = Math.max(0, Math.floor(ms / 1000));
|
|
314
|
+
var m = Math.floor(s / 60);
|
|
315
|
+
var r = s % 60;
|
|
316
|
+
return m > 0 ? (m + ":" + String(r).padStart(2, "0")) : (r + "s");
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function stepTimer(st, now) {
|
|
320
|
+
if (!st.startedAt) return "";
|
|
321
|
+
if (st.endedAt) return fmt(st.endedAt - st.startedAt);
|
|
322
|
+
if (st.status === "running") return fmt(now - st.startedAt);
|
|
323
|
+
if (st.status === "done" || st.status === "error") {
|
|
324
|
+
return st.endedAt ? fmt(st.endedAt - st.startedAt) : "";
|
|
325
|
+
}
|
|
326
|
+
return "";
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function render() {
|
|
330
|
+
if (!state) return;
|
|
331
|
+
var now = Date.now();
|
|
332
|
+
document.getElementById("headline").textContent = state.headline || "Démarrage…";
|
|
333
|
+
document.getElementById("elapsed").textContent = fmt(now - (state.bootStartedAt || now));
|
|
334
|
+
var op = Math.max(0, Math.min(100, Number(state.overallPercent) || 0));
|
|
335
|
+
document.getElementById("opct").textContent = String(Math.round(op));
|
|
336
|
+
document.getElementById("obar").style.width = op.toFixed(1) + "%";
|
|
337
|
+
document.getElementById("footer").textContent = state.footer || "";
|
|
338
|
+
|
|
339
|
+
var root = document.getElementById("steps");
|
|
340
|
+
var html = "";
|
|
341
|
+
(state.steps || []).forEach(function (st) {
|
|
342
|
+
var cls = "step " + (st.status || "pending");
|
|
343
|
+
var pct = st.percent;
|
|
344
|
+
var showBar = st.status === "running" || (typeof pct === "number" && st.status !== "pending");
|
|
345
|
+
var indet = st.status === "running" && (pct == null || !isFinite(pct));
|
|
346
|
+
var barW = indet ? 36 : Math.max(0, Math.min(100, Number(pct) || (st.status === "done" ? 100 : 0)));
|
|
347
|
+
var pctLabel = (!indet && typeof pct === "number" && st.status === "running")
|
|
348
|
+
? ('<span class="pct">' + Math.round(pct) + "%</span>")
|
|
349
|
+
: "";
|
|
350
|
+
var detail = st.detail ? String(st.detail) : "";
|
|
351
|
+
html += '<div class="' + cls + '" data-id="' + st.id + '">'
|
|
352
|
+
+ '<div class="row">'
|
|
353
|
+
+ '<div class="mark">' + (MARK[st.status] || "○") + "</div>"
|
|
354
|
+
+ '<div class="body">'
|
|
355
|
+
+ '<div class="topline"><span class="label">' + escapeHtml(st.label) + pctLabel + "</span>"
|
|
356
|
+
+ '<span class="timer" data-started="' + (st.startedAt || "") + '" data-ended="' + (st.endedAt || "") + '" data-status="' + st.status + '">'
|
|
357
|
+
+ escapeHtml(stepTimer(st, now)) + "</span></div>"
|
|
358
|
+
+ (showBar
|
|
359
|
+
? ('<div class="sbar' + (indet ? " indet" : "") + '"><i style="width:' + barW + '%"></i></div>')
|
|
360
|
+
: "")
|
|
361
|
+
+ (detail ? ('<div class="detail">' + escapeHtml(detail) + "</div>") : "")
|
|
362
|
+
+ "</div></div></div>";
|
|
363
|
+
});
|
|
364
|
+
root.innerHTML = html;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
function escapeHtml(s) {
|
|
368
|
+
return String(s)
|
|
369
|
+
.replace(/&/g, "&")
|
|
370
|
+
.replace(/</g, "<")
|
|
371
|
+
.replace(/>/g, ">")
|
|
372
|
+
.replace(/"/g, """);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
function tickTimers() {
|
|
376
|
+
if (!state) return;
|
|
377
|
+
var now = Date.now();
|
|
378
|
+
document.getElementById("elapsed").textContent = fmt(now - (state.bootStartedAt || now));
|
|
379
|
+
var timers = document.querySelectorAll(".timer");
|
|
380
|
+
for (var i = 0; i < timers.length; i++) {
|
|
381
|
+
var el = timers[i];
|
|
382
|
+
var started = Number(el.getAttribute("data-started") || 0);
|
|
383
|
+
var ended = Number(el.getAttribute("data-ended") || 0);
|
|
384
|
+
var status = el.getAttribute("data-status") || "";
|
|
385
|
+
if (!started) { el.textContent = ""; continue; }
|
|
386
|
+
if (ended) el.textContent = fmt(ended - started);
|
|
387
|
+
else if (status === "running") el.textContent = fmt(now - started);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
window.__setBoot = function (m) {
|
|
392
|
+
state = m || null;
|
|
393
|
+
render();
|
|
394
|
+
};
|
|
395
|
+
window.__setStatus = function (t) {
|
|
396
|
+
if (!state) {
|
|
397
|
+
state = {
|
|
398
|
+
headline: String(t || "Démarrage…"),
|
|
399
|
+
bootStartedAt: Date.now(),
|
|
400
|
+
overallPercent: 0,
|
|
401
|
+
steps: [],
|
|
402
|
+
footer: "",
|
|
403
|
+
};
|
|
404
|
+
} else {
|
|
405
|
+
state.headline = String(t || state.headline);
|
|
406
|
+
}
|
|
407
|
+
render();
|
|
408
|
+
};
|
|
409
|
+
window.__setProgress = function (p) {
|
|
410
|
+
if (!state) return;
|
|
411
|
+
if (p && typeof p.percent === "number") {
|
|
412
|
+
state.overallPercent = p.percent;
|
|
413
|
+
var cat = (state.steps || []).find(function (s) { return s.id === "catalog"; });
|
|
414
|
+
if (cat && cat.status === "running") {
|
|
415
|
+
cat.percent = p.percent;
|
|
416
|
+
if (p.detail) cat.detail = String(p.detail);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
render();
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
setInterval(tickTimers, 250);
|
|
423
|
+
})();
|
|
424
|
+
${chromeJs}
|
|
425
|
+
</script>
|
|
426
|
+
</body></html>`;
|
|
427
|
+
}
|
|
428
|
+
export function splashDataUrl(opts) {
|
|
429
|
+
return `data:text/html;charset=utf-8,${encodeURIComponent(splashHtmlDocument(opts))}`;
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=splash-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splash-ui.js","sourceRoot":"","sources":["../src/splash-ui.ts"],"names":[],"mappings":"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"}
|
package/dist/tray.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icône Tray générique — labels depuis AppManifest.productName.
|
|
3
|
+
* Port de electron/tray.ts (TF2) — setup/refresh sync (require electron).
|
|
4
|
+
*/
|
|
5
|
+
export type TrayAiWorkspaceEntry = {
|
|
6
|
+
userId: string;
|
|
7
|
+
label: string;
|
|
8
|
+
visible: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type TrayControllerOptions = {
|
|
11
|
+
productName: string;
|
|
12
|
+
/** Chemin icône tray (PNG) — optionnel. */
|
|
13
|
+
iconPath?: string;
|
|
14
|
+
resourcesRoot?: string;
|
|
15
|
+
isPackaged?: boolean;
|
|
16
|
+
showWindow: () => void;
|
|
17
|
+
quit: () => void;
|
|
18
|
+
listAiWorkspaces?: () => TrayAiWorkspaceEntry[];
|
|
19
|
+
openAiWorkspace?: (userId: string) => void;
|
|
20
|
+
closeAiWorkspace?: (userId: string) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare class TrayController {
|
|
23
|
+
private readonly opts;
|
|
24
|
+
private tray;
|
|
25
|
+
constructor(opts: TrayControllerOptions);
|
|
26
|
+
get active(): boolean;
|
|
27
|
+
private resolveIconPath;
|
|
28
|
+
private loadTrayIcon;
|
|
29
|
+
private buildMenu;
|
|
30
|
+
refresh(): void;
|
|
31
|
+
/** true si le tray est opérationnel (close → hide possible). */
|
|
32
|
+
setup(): boolean;
|
|
33
|
+
destroy(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare function installCloseToTray(win: InstanceType<typeof import("electron").BaseWindow>, opts: {
|
|
36
|
+
trayActive: () => boolean;
|
|
37
|
+
isQuitting: () => boolean;
|
|
38
|
+
closeToTrayEnabled: () => boolean;
|
|
39
|
+
productName?: string;
|
|
40
|
+
/** Si true (ex. boot raté), X / Alt+F4 quitte vraiment au lieu de masquer. */
|
|
41
|
+
forceQuitOnClose?: () => boolean;
|
|
42
|
+
}): void;
|
|
43
|
+
export declare function applyLaunchAtStartup(enabled: boolean): void;
|
|
44
|
+
//# sourceMappingURL=tray.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,oBAAoB,EAAE,CAAC;IAChD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,IAAI,CAA6D;gBAE5C,IAAI,EAAE,qBAAqB;IAExD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;IA2CjB,OAAO,IAAI,IAAI;IAQf,gEAAgE;IAChE,KAAK,IAAI,OAAO;IAsBhB,OAAO,IAAI,IAAI;CAQhB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,YAAY,CAAC,cAAc,UAAU,EAAE,UAAU,CAAC,EACvD,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;CAClC,GACA,IAAI,CAkCN;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW3D"}
|
package/dist/tray.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icône Tray générique — labels depuis AppManifest.productName.
|
|
3
|
+
* Port de electron/tray.ts (TF2) — setup/refresh sync (require electron).
|
|
4
|
+
*/
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { log, logError } from "@creezio/host-runtime";
|
|
8
|
+
import { loadElectron } from "@creezio/host-runtime";
|
|
9
|
+
const TRAY_ICON_FALLBACK_B64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACAklEQVR42u2X2U7CQBSGeZwCgkvdtUAv+gx9g8IENC5xiUsUA/SKt5qkEMAoRmtcohKBtO/QHHMSLswMygytd/7Jd9P2XxISOo3F/iUhxfIMxfLqiuVRxfJ8xfKCEf7oGt4zIi+O54cknh+68fwQBMFnSejiRGGgJgoDmigMYErQq05VniR9M0n6QZL0ISSYYUqVzxQ/zZniJ0SM2IhUqaemSr0gVepBxGDm5J8jvfVB01sf8EfQ38u330l6+x2+E1ZsHnb8OGB2582d3XmD74QVm4cdY8vndl+Nud1XYAmrcZnYxQ2Y33upz++9AEtYjcvELm7Awv4zXdh/BlFYyXixixugHjz56sETiMJKxotd3IDFw8dg8fARRGEl48UubsDSkRssHbkgCisZL3ZxA5aPH/zl4wcQhZWMF7u4ASsn93Tl5B5EYSXjxS5uwOrpXX319A5EYSXjxS5uwNpZ11g764IorGS82DX233D9/NZdP78FEViJ+rDjx3fBxsUN2bi4ARFYifqw49c34ublNd28vIZJsBLxYPbE84BW7qhauRNo5Q5EDGaKnQ+1q7apXbUhYuTOhZlKy8xUWkGm0oLQYIY51ck4W22qWWqTZqtNmBL0qqG/D3K1BsnVGm6u1gBB8FkS+ReSbjuGbjt13Xaobju+bjvBCH90De8ZsX9J6AvaetnzgauSsgAAAABJRU5ErkJggg==";
|
|
10
|
+
export class TrayController {
|
|
11
|
+
opts;
|
|
12
|
+
tray = null;
|
|
13
|
+
constructor(opts) {
|
|
14
|
+
this.opts = opts;
|
|
15
|
+
}
|
|
16
|
+
get active() {
|
|
17
|
+
return this.tray !== null;
|
|
18
|
+
}
|
|
19
|
+
resolveIconPath() {
|
|
20
|
+
if (this.opts.iconPath)
|
|
21
|
+
return this.opts.iconPath;
|
|
22
|
+
const root = this.opts.resourcesRoot;
|
|
23
|
+
if (!root)
|
|
24
|
+
return null;
|
|
25
|
+
if (this.opts.isPackaged) {
|
|
26
|
+
return path.join(process.resourcesPath, "tray-icon.png");
|
|
27
|
+
}
|
|
28
|
+
return path.join(root, "resources", "tray-icon.png");
|
|
29
|
+
}
|
|
30
|
+
loadTrayIcon() {
|
|
31
|
+
const { nativeImage } = loadElectron();
|
|
32
|
+
try {
|
|
33
|
+
const p = this.resolveIconPath();
|
|
34
|
+
if (p && fs.existsSync(p)) {
|
|
35
|
+
const img = nativeImage.createFromPath(p);
|
|
36
|
+
if (!img.isEmpty())
|
|
37
|
+
return img;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
logError("tray", e);
|
|
42
|
+
}
|
|
43
|
+
return nativeImage.createFromDataURL(`data:image/png;base64,${TRAY_ICON_FALLBACK_B64}`);
|
|
44
|
+
}
|
|
45
|
+
buildMenu() {
|
|
46
|
+
const { Menu } = loadElectron();
|
|
47
|
+
const name = this.opts.productName;
|
|
48
|
+
const aiEntries = (() => {
|
|
49
|
+
try {
|
|
50
|
+
return this.opts.listAiWorkspaces?.() ?? [];
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
logError("tray", e);
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
})();
|
|
57
|
+
const aiSubmenu = aiEntries.map((entry) => ({
|
|
58
|
+
label: `${entry.label}${entry.visible ? "" : " (masqué)"}`,
|
|
59
|
+
submenu: [
|
|
60
|
+
{
|
|
61
|
+
label: "Ouvrir",
|
|
62
|
+
click: () => this.opts.openAiWorkspace?.(entry.userId),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
label: "Fermer réellement",
|
|
66
|
+
click: () => this.opts.closeAiWorkspace?.(entry.userId),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
}));
|
|
70
|
+
return Menu.buildFromTemplate([
|
|
71
|
+
{
|
|
72
|
+
label: `Ouvrir ${name}`,
|
|
73
|
+
click: () => this.opts.showWindow(),
|
|
74
|
+
},
|
|
75
|
+
...(aiSubmenu.length
|
|
76
|
+
? [
|
|
77
|
+
{ type: "separator" },
|
|
78
|
+
{ label: "Workspaces IA", submenu: aiSubmenu },
|
|
79
|
+
]
|
|
80
|
+
: []),
|
|
81
|
+
{ type: "separator" },
|
|
82
|
+
{
|
|
83
|
+
label: `Quitter ${name}`,
|
|
84
|
+
click: () => this.opts.quit(),
|
|
85
|
+
},
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
refresh() {
|
|
89
|
+
try {
|
|
90
|
+
this.tray?.setContextMenu(this.buildMenu());
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
logError("tray", e);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** true si le tray est opérationnel (close → hide possible). */
|
|
97
|
+
setup() {
|
|
98
|
+
if (this.tray)
|
|
99
|
+
return true;
|
|
100
|
+
try {
|
|
101
|
+
const { Tray } = loadElectron();
|
|
102
|
+
const tray = new Tray(this.loadTrayIcon());
|
|
103
|
+
tray.setToolTip(`${this.opts.productName} — actif en arrière-plan`);
|
|
104
|
+
tray.setContextMenu(this.buildMenu());
|
|
105
|
+
tray.on("click", () => this.opts.showWindow());
|
|
106
|
+
this.tray = tray;
|
|
107
|
+
log("tray", "icône tray active (fermer la fenêtre = arrière-plan)");
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
logError("tray", e);
|
|
112
|
+
log("tray", "création du tray impossible — fermer la fenêtre quittera l'app");
|
|
113
|
+
this.tray = null;
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
destroy() {
|
|
118
|
+
try {
|
|
119
|
+
this.tray?.destroy();
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
/* ignore */
|
|
123
|
+
}
|
|
124
|
+
this.tray = null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export function installCloseToTray(win, opts) {
|
|
128
|
+
// 2ᵉ fermeture (fenêtre déjà masquée, ou double Alt+F4 < 2s) → quit réel.
|
|
129
|
+
// Évite les zombies XFCE/RDP quand le tray est peu visible et le boot a planté.
|
|
130
|
+
let lastHideAt = 0;
|
|
131
|
+
win.on("close", ((e) => {
|
|
132
|
+
if (opts.isQuitting())
|
|
133
|
+
return;
|
|
134
|
+
if (!opts.trayActive())
|
|
135
|
+
return;
|
|
136
|
+
if (!opts.closeToTrayEnabled())
|
|
137
|
+
return;
|
|
138
|
+
if (opts.forceQuitOnClose?.()) {
|
|
139
|
+
log("tray", "fermeture forcée (boot/état non prêt) — quit");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
let alreadyHidden = false;
|
|
143
|
+
try {
|
|
144
|
+
alreadyHidden = !win.isVisible();
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
alreadyHidden = false;
|
|
148
|
+
}
|
|
149
|
+
const now = Date.now();
|
|
150
|
+
if (alreadyHidden || (lastHideAt > 0 && now - lastHideAt < 2000)) {
|
|
151
|
+
log("tray", `2ᵉ fermeture — quit réel (${opts.productName ?? "app"})`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
win.hide();
|
|
156
|
+
lastHideAt = now;
|
|
157
|
+
log("tray", `fenêtre masquée — ${opts.productName ?? "app"} reste actif en arrière-plan (re-fermer = quitter)`);
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
export function applyLaunchAtStartup(enabled) {
|
|
161
|
+
try {
|
|
162
|
+
const { app } = loadElectron();
|
|
163
|
+
app.setLoginItemSettings({
|
|
164
|
+
openAtLogin: enabled,
|
|
165
|
+
args: [],
|
|
166
|
+
});
|
|
167
|
+
log("tray", `launchAtStartup → ${enabled ? "activé" : "désactivé"}`);
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
logError("tray", e);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=tray.js.map
|
package/dist/tray.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"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"}
|