synabun 2.0.0 → 2.0.7
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/CHANGELOG.md +97 -0
- package/NOTICE +5 -0
- package/README.md +2 -1
- package/THIRD-PARTY-LICENSES.md +59 -0
- package/benchmarks/fixtures/browser/README.md +1 -1
- package/benchmarks/fixtures/desktop/README.md +1 -1
- package/docs/whatsapp.md +153 -18
- package/hooks/claude-code/pre-compact.mjs +11 -0
- package/hooks/claude-code/prompt-submit.mjs +60 -184
- package/hooks/claude-code/session-start.mjs +73 -16
- package/hooks/claude-code/shared.mjs +26 -3
- package/hooks/claude-code/stop.mjs +5 -5
- package/lib/child-path.js +303 -0
- package/lib/claude-hooks.js +2 -1
- package/lib/data-home-migration.js +2 -0
- package/lib/desktop-app.js +265 -0
- package/lib/external-tools.js +7 -3
- package/lib/log-redact.js +102 -0
- package/lib/packaged-runtime.js +138 -11
- package/lib/start-launcher.js +88 -1
- package/mcp-server/dist/http.d.ts +3 -1
- package/mcp-server/dist/http.d.ts.map +1 -1
- package/mcp-server/dist/http.js +15 -4
- package/mcp-server/dist/http.js.map +1 -1
- package/mcp-server/dist/index.d.ts.map +1 -1
- package/mcp-server/dist/index.js +9 -6
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts +108 -0
- package/mcp-server/dist/services/budget-judgments.d.ts.map +1 -0
- package/mcp-server/dist/services/budget-judgments.js +153 -0
- package/mcp-server/dist/services/budget-judgments.js.map +1 -0
- package/mcp-server/dist/services/codex-config-heal.d.ts +5 -1
- package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
- package/mcp-server/dist/services/codex-config-heal.js +41 -4
- package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
- package/mcp-server/dist/services/identity.d.ts +11 -0
- package/mcp-server/dist/services/identity.d.ts.map +1 -1
- package/mcp-server/dist/services/identity.js +24 -0
- package/mcp-server/dist/services/identity.js.map +1 -1
- package/mcp-server/dist/services/neural-interface.d.ts +13 -0
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js +34 -2
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/typesafe-config.d.ts +1 -1
- package/mcp-server/dist/services/typesafe-config.d.ts.map +1 -1
- package/mcp-server/dist/services/typesafe-config.js +4 -1
- package/mcp-server/dist/services/typesafe-config.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +10 -7
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +34 -13
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts +17 -0
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -0
- package/mcp-server/dist/tools/whatsapp-send-file.js +44 -0
- package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -0
- package/mcp-server/dist/tui.js +2 -1
- package/mcp-server/dist/tui.js.map +1 -1
- package/mcp-server/dist/version.d.ts +5 -0
- package/mcp-server/dist/version.d.ts.map +1 -0
- package/mcp-server/dist/version.js +21 -0
- package/mcp-server/dist/version.js.map +1 -0
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -3
- package/mcp-server/run.mjs +15 -9
- package/mcp-server/src/http.ts +18 -3
- package/mcp-server/src/index.ts +9 -6
- package/mcp-server/src/services/budget-judgments.ts +183 -0
- package/mcp-server/src/services/codex-config-heal.ts +35 -4
- package/mcp-server/src/services/identity.ts +27 -0
- package/mcp-server/src/services/neural-interface.ts +34 -2
- package/mcp-server/src/services/typesafe-config.ts +4 -1
- package/mcp-server/src/tools/agents.ts +33 -14
- package/mcp-server/src/tools/whatsapp-send-file.ts +51 -0
- package/mcp-server/src/tui.ts +2 -1
- package/mcp-server/src/version.ts +22 -0
- package/neural-interface/i18n/en.json +2126 -209
- package/neural-interface/i18n/pt-BR.json +2123 -207
- package/neural-interface/lib/account-usage.js +163 -0
- package/neural-interface/lib/assistant-api.js +316 -57
- package/neural-interface/lib/assistant-brains/claude.js +19 -2
- package/neural-interface/lib/assistant-brains/codex.js +3 -0
- package/neural-interface/lib/assistant-brains/opencode.js +17 -4
- package/neural-interface/lib/assistant-budget-planner.js +390 -0
- package/neural-interface/lib/assistant-budget-split.js +408 -0
- package/neural-interface/lib/assistant-budget.js +94 -95
- package/neural-interface/lib/assistant-catalog.js +179 -27
- package/neural-interface/lib/assistant-config.js +91 -14
- package/neural-interface/lib/assistant-dispatch.js +494 -138
- package/neural-interface/lib/assistant-hidden-models.js +393 -66
- package/neural-interface/lib/assistant-jev.js +26 -3
- package/neural-interface/lib/assistant-memory.js +24 -10
- package/neural-interface/lib/assistant-persona.js +73 -12
- package/neural-interface/lib/assistant-plan-permissions.js +8 -1
- package/neural-interface/lib/assistant-pricing.js +21 -6
- package/neural-interface/lib/assistant-route-accounts.js +14 -0
- package/neural-interface/lib/assistant-route-gate.js +19 -3
- package/neural-interface/lib/assistant-router.js +373 -42
- package/neural-interface/lib/assistant-runtime.js +488 -59
- package/neural-interface/lib/assistant-task-prompt.js +13 -3
- package/neural-interface/lib/assistant-test-density.js +142 -0
- package/neural-interface/lib/assistant-user-context-budgets.js +123 -0
- package/neural-interface/lib/assistant-user-context.js +908 -0
- package/neural-interface/lib/assistant-user-knowledge.js +328 -0
- package/neural-interface/lib/assistant-user-learn.js +404 -0
- package/neural-interface/lib/assistant-user-threads.js +226 -0
- package/neural-interface/lib/assistant-user-writer.js +183 -0
- package/neural-interface/lib/augmented-path.js +317 -53
- package/neural-interface/lib/browser-background-tab.js +134 -0
- package/neural-interface/lib/browser-screenshot.js +678 -61
- package/neural-interface/lib/claude-accounts.js +342 -31
- package/neural-interface/lib/claude-agent-bridge.js +123 -9
- package/neural-interface/lib/claude-executable.js +6 -1
- package/neural-interface/lib/claude-model-catalog.js +33 -5
- package/neural-interface/lib/claude-panel-auth.js +221 -0
- package/neural-interface/lib/claude-profile-api-key.js +62 -0
- package/neural-interface/lib/claude-temporary.js +46 -7
- package/neural-interface/lib/cli-install-api.js +137 -0
- package/neural-interface/lib/cli-install.js +797 -0
- package/neural-interface/lib/cli-path.js +130 -0
- package/neural-interface/lib/cli-resolver.js +744 -0
- package/neural-interface/lib/cli-update-planner.js +143 -7
- package/neural-interface/lib/cloudflared/install.js +533 -0
- package/neural-interface/lib/cloudflared/manager.js +545 -0
- package/neural-interface/lib/cloudflared/pins.js +115 -0
- package/neural-interface/lib/cloudflared/pins.json +63 -0
- package/neural-interface/lib/cloudflared/tunnel.js +265 -0
- package/neural-interface/lib/codex-account-auth.js +178 -0
- package/neural-interface/lib/codex-accounts.js +489 -0
- package/neural-interface/lib/codex-capabilities.js +2 -1
- package/neural-interface/lib/codex-compat-rpc.js +8 -2
- package/neural-interface/lib/codex-mcp-approvals.js +5 -1
- package/neural-interface/lib/codex-panel-auth.js +62 -0
- package/neural-interface/lib/codex-session-settings.js +1 -1
- package/neural-interface/lib/codex-settings-schema.js +120 -0
- package/neural-interface/lib/desktop/config.js +3 -0
- package/neural-interface/lib/editor-completion-endpoint.js +264 -0
- package/neural-interface/lib/editor-completion-opencode.js +436 -0
- package/neural-interface/lib/editor-completion.js +714 -0
- package/neural-interface/lib/editor-config.js +149 -0
- package/neural-interface/lib/editor-files-api.js +268 -0
- package/neural-interface/lib/editor-git-api.js +134 -0
- package/neural-interface/lib/file-explorer-api.js +1039 -0
- package/neural-interface/lib/file-explorer-system.js +355 -0
- package/neural-interface/lib/file-explorer-trash.ps1 +85 -0
- package/neural-interface/lib/file-explorer-watch.js +239 -0
- package/neural-interface/lib/git-bash/bzip2.js +339 -0
- package/neural-interface/lib/git-bash/claude-settings.js +73 -0
- package/neural-interface/lib/git-bash/extract-worker.js +34 -0
- package/neural-interface/lib/git-bash/install.js +529 -0
- package/neural-interface/lib/git-bash/licenses/COPYING +360 -0
- package/neural-interface/lib/git-bash/licenses/LGPL-2.1 +511 -0
- package/neural-interface/lib/git-bash/manager.js +268 -0
- package/neural-interface/lib/git-bash/pins.js +206 -0
- package/neural-interface/lib/git-bash/pins.json +34 -0
- package/neural-interface/lib/git-bash/resolver.js +194 -0
- package/neural-interface/lib/git-diff-api.js +103 -0
- package/neural-interface/lib/git-read.js +234 -0
- package/neural-interface/lib/greeting/api.js +89 -0
- package/neural-interface/lib/greeting/budgets.js +90 -0
- package/neural-interface/lib/greeting/engine.js +461 -0
- package/neural-interface/lib/greeting/facts.js +320 -0
- package/neural-interface/lib/greeting/sources.js +252 -0
- package/neural-interface/lib/greeting/writer.js +139 -0
- package/neural-interface/lib/http-guards.js +189 -13
- package/neural-interface/lib/install-details.js +145 -0
- package/neural-interface/lib/machine-names.js +88 -0
- package/neural-interface/lib/mcp-installer.js +14 -2
- package/neural-interface/lib/memory-api.js +31 -7
- package/neural-interface/lib/native-loop-providers.js +26 -8
- package/neural-interface/lib/native-loop-runtime.js +9 -4
- package/neural-interface/lib/os-path.js +319 -0
- package/neural-interface/lib/plugin-installer.js +4 -2
- package/neural-interface/lib/project-storage.js +5 -7
- package/neural-interface/lib/provider-panel-api-key-auth.js +92 -0
- package/neural-interface/lib/provider-panel-terminal-auth.js +95 -0
- package/neural-interface/lib/pty-host/core.js +2 -1
- package/neural-interface/lib/pty-host/manager.js +27 -2
- package/neural-interface/lib/remote-policy.js +20 -11
- package/neural-interface/lib/request-gate.js +589 -0
- package/neural-interface/lib/session-title-generator.js +4 -3
- package/neural-interface/lib/system-about.js +340 -0
- package/neural-interface/lib/system-activity.js +66 -0
- package/neural-interface/lib/terminal-env.js +11 -3
- package/neural-interface/lib/terminal-path.js +55 -0
- package/neural-interface/lib/ui-blob-api.js +108 -0
- package/neural-interface/lib/ui-blob-store.js +68 -0
- package/neural-interface/lib/virtual-socket.js +12 -1
- package/neural-interface/lib/whatsapp/baileys-adapter.js +165 -45
- package/neural-interface/lib/whatsapp/bridge.js +78 -34
- package/neural-interface/lib/whatsapp/commands.js +13 -14
- package/neural-interface/lib/whatsapp/config.js +134 -20
- package/neural-interface/lib/whatsapp/fake-baileys.js +99 -14
- package/neural-interface/lib/whatsapp/host-core.js +168 -35
- package/neural-interface/lib/whatsapp/inbound.js +5 -3
- package/neural-interface/lib/whatsapp/local-file.js +524 -0
- package/neural-interface/lib/whatsapp/manager.js +92 -32
- package/neural-interface/lib/whatsapp/paths.js +11 -1
- package/neural-interface/lib/whatsapp/protocol.js +65 -5
- package/neural-interface/lib/whatsapp/redact.js +63 -0
- package/neural-interface/lib/whatsapp/service.js +343 -91
- package/neural-interface/lib/whatsapp/transcription.js +463 -0
- package/neural-interface/package-lock.json +701 -2
- package/neural-interface/package.json +13 -2
- package/neural-interface/public/index.html +2 -0
- package/neural-interface/public/index2d.html +2 -0
- package/neural-interface/public/install-app.html +9 -6
- package/neural-interface/public/offline.html +19 -3
- package/neural-interface/public/onboarding.html +107 -2
- package/neural-interface/public/shared/account-i18n.js +7 -0
- package/neural-interface/public/shared/account-menu.js +539 -0
- package/neural-interface/public/shared/account-usage.js +19 -0
- package/neural-interface/public/shared/account-view.js +335 -0
- package/neural-interface/public/shared/agent-runtime-options.js +50 -14
- package/neural-interface/public/shared/assistant/asst-accounts.js +182 -184
- package/neural-interface/public/shared/assistant/asst-api.js +32 -2
- package/neural-interface/public/shared/assistant/asst-automation.js +286 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +430 -81
- package/neural-interface/public/shared/assistant/asst-budget.js +259 -303
- package/neural-interface/public/shared/assistant/asst-composer.js +11 -1
- package/neural-interface/public/shared/assistant/asst-mascot.js +140 -61
- package/neural-interface/public/shared/assistant/asst-menu.js +27 -11
- package/neural-interface/public/shared/assistant/asst-panel.js +198 -42
- package/neural-interface/public/shared/assistant/asst-render.js +197 -23
- package/neural-interface/public/shared/assistant/asst-route-models.js +108 -0
- package/neural-interface/public/shared/assistant/asst-route.js +95 -343
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +534 -0
- package/neural-interface/public/shared/assistant/asst-sanitize.js +8 -1
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +31 -9
- package/neural-interface/public/shared/assistant/asst-slash.js +1 -1
- package/neural-interface/public/shared/assistant/asst-state.js +186 -2
- package/neural-interface/public/shared/assistant/asst-styles.js +247 -11
- package/neural-interface/public/shared/blob-store.js +111 -22
- package/neural-interface/public/shared/cdx/cdx-commands.js +4 -1
- package/neural-interface/public/shared/cdx/cdx-features.js +22 -14
- package/neural-interface/public/shared/cdx/cdx-icons.js +2 -0
- package/neural-interface/public/shared/cdx/cdx-panel.js +80 -118
- package/neural-interface/public/shared/cdx/cdx-render.js +25 -89
- package/neural-interface/public/shared/cdx/cdx-settings.js +231 -0
- package/neural-interface/public/shared/cdx/cdx-styles.js +164 -107
- package/neural-interface/public/shared/cdx/cdx-tabs.js +348 -668
- package/neural-interface/public/shared/cdx/cdx-ws.js +2 -0
- package/neural-interface/public/shared/claude-account-view.js +3 -0
- package/neural-interface/public/shared/cli-install-view.js +392 -0
- package/neural-interface/public/shared/cli-status.js +282 -22
- package/neural-interface/public/shared/constants.js +6 -1
- package/neural-interface/public/shared/cp/cp-events.js +2 -1
- package/neural-interface/public/shared/cp/cp-rehydrate.js +2 -1
- package/neural-interface/public/shared/cp/cp-styles.js +61 -0
- package/neural-interface/public/shared/desktop-bridge.js +39 -0
- package/neural-interface/public/shared/desktop-titlebar-page.js +59 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +122 -0
- package/neural-interface/public/shared/desktop-titlebar.js +153 -0
- package/neural-interface/public/shared/desktop-update-view.js +462 -0
- package/neural-interface/public/shared/editor/editor-ai-logic.js +409 -0
- package/neural-interface/public/shared/editor/editor-ai.js +619 -0
- package/neural-interface/public/shared/editor/editor-commands.js +212 -0
- package/neural-interface/public/shared/editor/editor-compare.js +103 -0
- package/neural-interface/public/shared/editor/editor-completion-list.js +172 -0
- package/neural-interface/public/shared/editor/editor-doc.js +257 -0
- package/neural-interface/public/shared/editor/editor-git-logic.js +131 -0
- package/neural-interface/public/shared/editor/editor-git.js +95 -0
- package/neural-interface/public/shared/editor/editor-languages.js +156 -0
- package/neural-interface/public/shared/editor/editor-lint.js +229 -0
- package/neural-interface/public/shared/editor/editor-loader.js +51 -0
- package/neural-interface/public/shared/editor/editor-markdown.js +90 -0
- package/neural-interface/public/shared/editor/editor-menu.js +233 -0
- package/neural-interface/public/shared/editor/editor-minimap.js +371 -0
- package/neural-interface/public/shared/editor/editor-palette-logic.js +192 -0
- package/neural-interface/public/shared/editor/editor-palette.js +125 -0
- package/neural-interface/public/shared/editor/editor-panel-logic.js +288 -0
- package/neural-interface/public/shared/editor/editor-panel.js +2099 -0
- package/neural-interface/public/shared/editor/editor-prefs.js +224 -0
- package/neural-interface/public/shared/editor/editor-safety.js +500 -0
- package/neural-interface/public/shared/editor/editor-search.js +352 -0
- package/neural-interface/public/shared/editor/editor-statusbar.js +144 -0
- package/neural-interface/public/shared/editor/editor-tabs-logic.js +331 -0
- package/neural-interface/public/shared/editor/editor-tabs.js +233 -0
- package/neural-interface/public/shared/editor/editor-theme.js +244 -0
- package/neural-interface/public/shared/editor/editor-view.js +332 -0
- package/neural-interface/public/shared/explorer/fx-api.js +216 -0
- package/neural-interface/public/shared/explorer/fx-links.js +204 -0
- package/neural-interface/public/shared/explorer/fx-logic.js +537 -0
- package/neural-interface/public/shared/explorer/fx-main.js +865 -0
- package/neural-interface/public/shared/explorer/fx-names.js +87 -0
- package/neural-interface/public/shared/explorer/fx-ops.js +370 -0
- package/neural-interface/public/shared/explorer/fx-popups.js +490 -0
- package/neural-interface/public/shared/explorer/fx-tree.js +790 -0
- package/neural-interface/public/shared/file-links.js +339 -0
- package/neural-interface/public/shared/git-bash-view.js +145 -0
- package/neural-interface/public/shared/greeting/greeting-card.js +178 -0
- package/neural-interface/public/shared/greeting/greeting-view.js +148 -0
- package/neural-interface/public/shared/html-shell.js +161 -165
- package/neural-interface/public/shared/i18n.js +19 -1
- package/neural-interface/public/shared/install-details-view.js +86 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-greeting.js +47 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +131 -17
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +22 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +158 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +3 -2
- package/neural-interface/public/shared/pwa-install-page.js +32 -2
- package/neural-interface/public/shared/pwa-install.css +3 -3
- package/neural-interface/public/shared/pwa-install.js +100 -1
- package/neural-interface/public/shared/settings/settings-about-pane.js +271 -0
- package/neural-interface/public/shared/settings/settings-about.js +254 -0
- package/neural-interface/public/shared/settings/settings-code-editor-pane.js +412 -0
- package/neural-interface/public/shared/settings/settings-code-editor.js +328 -0
- package/neural-interface/public/shared/settings/settings-greeting.js +133 -0
- package/neural-interface/public/shared/settings/settings-ia.js +33 -4
- package/neural-interface/public/shared/settings/settings-user-context.js +154 -0
- package/neural-interface/public/shared/showcase-privacy.js +489 -0
- package/neural-interface/public/shared/start-bridge.js +238 -19
- package/neural-interface/public/shared/storage.js +30 -3
- package/neural-interface/public/shared/styles.css +1710 -770
- package/neural-interface/public/shared/synabun-mascot.js +68 -58
- package/neural-interface/public/shared/tunnel-view.js +167 -0
- package/neural-interface/public/shared/ui-claude-panel.js +369 -229
- package/neural-interface/public/shared/ui-cli-banner.js +355 -0
- package/neural-interface/public/shared/ui-detail.js +15 -0
- package/neural-interface/public/shared/ui-explorer.js +22 -0
- package/neural-interface/public/shared/ui-file-explorer.js +481 -2496
- package/neural-interface/public/shared/ui-file-links.js +103 -0
- package/neural-interface/public/shared/ui-git-bash.js +124 -0
- package/neural-interface/public/shared/ui-help.js +26 -0
- package/neural-interface/public/shared/ui-invite.js +126 -116
- package/neural-interface/public/shared/ui-judgments.js +10 -1
- package/neural-interface/public/shared/ui-keybinds.js +4 -0
- package/neural-interface/public/shared/ui-loading.js +187 -19
- package/neural-interface/public/shared/ui-menubar.js +25 -33
- package/neural-interface/public/shared/ui-native-loop-router-state.js +11 -0
- package/neural-interface/public/shared/ui-native-loop-router.js +15 -2
- package/neural-interface/public/shared/ui-navbar.js +48 -22
- package/neural-interface/public/shared/ui-provider-auth.js +104 -0
- package/neural-interface/public/shared/ui-provider-terminal-auth.js +223 -0
- package/neural-interface/public/shared/ui-sessions.js +9 -3
- package/neural-interface/public/shared/ui-settings.js +509 -490
- package/neural-interface/public/shared/ui-sidepanel-runtime.js +2 -1
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -1
- package/neural-interface/public/shared/ui-sync.js +22 -0
- package/neural-interface/public/shared/ui-terminal.js +40 -5
- package/neural-interface/public/shared/ui-tool-updates.js +5 -0
- package/neural-interface/public/shared/ui-tunnel.js +130 -0
- package/neural-interface/public/shared/ui-tutorial-steps.js +6 -2
- package/neural-interface/public/shared/ui-update.js +594 -5
- package/neural-interface/public/shared/ui-whatsapp.js +21 -6
- package/neural-interface/public/shared/ui-whiteboard.js +12 -0
- package/neural-interface/public/shared/ui-worker-end.js +245 -0
- package/neural-interface/public/shared/ui-workspaces.js +41 -27
- package/neural-interface/public/shared/whatsapp/wa-view.js +51 -8
- package/neural-interface/public/shared/worker-end.js +253 -0
- package/neural-interface/public/sw.js +2 -2
- package/neural-interface/public/variant/2d/main.js +10 -1
- package/neural-interface/public/variant/3d/main.js +10 -1
- package/neural-interface/public/vendor/codemirror/chunks/apl-CSDKT72Z.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asciiarmor-JYYPU5BM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asn1-NRWCZDA6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asterisk-5OU6D4ZQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/brainfuck-ID4N4SYC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-4RZWGCS2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-ACTJM3JR.js +11 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-S6BMAXLK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-TO2RDOHQ.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-US2GMZZQ.js +13 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-WYYO5ZAJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-XALZTDJC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-YRNUTRDV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-Z3QOKH62.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/clike-OWQBSOGL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/clojure-KV75UQWC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cmake-GTEP5Y3C.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cobol-WCZ7QEGJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/coffeescript-TGLBOT6B.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/commonlisp-WVVI432V.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/crystal-S6R6HLKQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/css-PDA2RINP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cypher-HL5QPL4C.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/d-HHJH2HAJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/diff-MN3A35BY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-25SQLBVS.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-27ZGGJJS.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-4E52OJIF.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-6FT73XDC.js +2 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-BE6YGRMW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CJSGKW2O.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CRPH2WLI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CTG7JEQN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-I3FEVELX.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-IM5BBSWZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-KERUKTIF.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-LXTMWZAM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MABASSET.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MJVBUZLL.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MNB3WZVU.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-QYWXOE3U.js +7 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-TEBOFWLZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-UNXFROM3.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-XL2SLQO6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-XO42Y3AP.js +6 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-Y2WWDWJK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-YFEZKWMU.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-ZY7SWQO6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dockerfile-3Y4R4NCH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dtd-5343GJ4P.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dylan-FI2CXSW2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ebnf-GNQ77YWA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ecl-MRPUAE2L.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/eiffel-DZROES27.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/elm-4KICRFKQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/erlang-3IHYC263.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/factor-C6D3E5UK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/fcl-VYTWUJMI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/forth-ZBO2EH5M.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/fortran-5NDCRWIK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/gas-SKRMOXFP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/gherkin-L45YXZLW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/groovy-GLPTLN44.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/haskell-E7NF7P4Y.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/haxe-K2NVDOB6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/http-Q6DRQIJB.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/idl-MZYNJVLN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/javascript-6YRYK2HR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/julia-HXEL2T5G.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/livescript-MV7CI2JZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/lua-E36NHOOD.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mathematica-3XOZZCMC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mbox-ODYGFKS7.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mirc-WB43AWF5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mllike-ZT6ET7ZH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/modelica-LLMZPFGA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mscgen-2OPNNYFH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mumps-6P3HWJH6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/nginx-TCGKQTRW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/nsis-ATIGIXTJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ntriples-5PLBI5OV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/octave-QF2S3NL6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/oz-JFIVFFH2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pascal-JG6SW76V.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/perl-4B3IWVVO.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pig-ABEBH4MI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/powershell-H32XE7TL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/properties-NN644MMA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/protobuf-YKWQK2J3.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pug-RIYXEKFW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/puppet-JZQ5WPEV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/python-EBCGGHAC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/q-5UMH2YQY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/r-7XMGG453.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/rpm-IEV7TSLR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ruby-T4SPFPNM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sas-GEDX67ET.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/scheme-FTLOWKPC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/shell-HUFRKFSJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sieve-P5QUDVYO.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/smalltalk-2SORJNQI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/solr-M22TGAR5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sparql-4M3KL752.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/spreadsheet-3K23LA4N.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sql-VHRFMUBI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/stex-QZDAQUY2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/stylus-7ZDKAKBD.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/swift-WCLCLGMR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tcl-JLMU6WOK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/textile-4CHDKZ4T.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tiddlywiki-DKMCZZQ4.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tiki-F4JIG36Q.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/toml-BHMHTIM2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/troff-YQ2KV5NT.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ttcn-ZHRCVFJY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ttcn-cfg-KJOVTY4X.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/turtle-535P5N6I.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vb-76UMQHOT.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vbscript-CGNDTK6Z.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/velocity-VSJDO5T5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/verilog-4T6ETXIP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vhdl-T7FNAXUN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/webidl-P6MJSJ6J.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/xquery-UOVILRGN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/yacas-CV2APROL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/z80-3KFNVM4M.js +1 -0
- package/neural-interface/public/vendor/codemirror/codemirror-6.43.14-75f05e67.min.js +2 -0
- package/neural-interface/public/vendor/codemirror/manifest.json +60 -0
- package/neural-interface/scripts/build-vendor.mjs +78 -2
- package/neural-interface/scripts/vendor-codemirror-entry.js +121 -0
- package/neural-interface/server.js +2085 -1629
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/package.json +5 -8
- package/setup.js +53 -15
- package/benchmarks/browser-live-results.json +0 -79
- package/benchmarks/browser-v2-results.json +0 -258
- package/neural-interface/lib/codex-capabilities.d.ts +0 -41
- package/neural-interface/public/category-logos/claude.svg +0 -1
- package/neural-interface/public/category-logos/gemini-color.svg +0 -1
- package/neural-interface/public/category-logos/openai.svg +0 -1
- package/neural-interface/public/category-logos/synabun.png +0 -0
- package/neural-interface/public/claude.svg +0 -1
- package/neural-interface/public/gallery.svg +0 -6
- package/neural-interface/public/leonardoai.svg +0 -1
- package/neural-interface/public/mcp.svg +0 -4
- package/neural-interface/public/opencode-logo-dark-square.svg +0 -1
- package/neural-interface/public/pin-svgrepo-com.svg +0 -25
- package/neural-interface/public/sessionicon.svg +0 -8
- package/neural-interface/public/toolbar-album.svg +0 -8
- package/neural-interface/public/toolbar-question.svg +0 -6
- package/neural-interface/public/toolbar-sessions.svg +0 -6
- package/neural-interface/scripts/codex-protocol-fixture.mjs +0 -83
- package/skills/synabun/synabunicon.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neural-memory-interface",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.7",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Private local SynaBun interface for memory visualization and multi-agent workflows",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"start": "node server.js",
|
|
19
19
|
"dev": "node --watch server.js",
|
|
20
|
-
"test": "node --test tests/*.test.mjs",
|
|
21
20
|
"build:vendor": "node scripts/build-vendor.mjs",
|
|
22
21
|
"postinstall": "node scripts/rebuild-pty.js && node scripts/build-vendor.mjs"
|
|
23
22
|
},
|
|
@@ -52,6 +51,18 @@
|
|
|
52
51
|
"tar": "^7.5.19"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
54
|
+
"@codemirror/autocomplete": "6.20.3",
|
|
55
|
+
"@codemirror/commands": "6.11.1",
|
|
56
|
+
"@codemirror/language": "6.13.1",
|
|
57
|
+
"@codemirror/language-data": "6.5.2",
|
|
58
|
+
"@codemirror/legacy-modes": "6.5.5",
|
|
59
|
+
"@codemirror/lint": "6.9.7",
|
|
60
|
+
"@codemirror/merge": "6.12.2",
|
|
61
|
+
"@codemirror/search": "6.7.2",
|
|
62
|
+
"@codemirror/state": "6.7.6",
|
|
63
|
+
"@codemirror/view": "6.43.14",
|
|
64
|
+
"@lezer/highlight": "1.2.5",
|
|
65
|
+
"@replit/codemirror-indentation-markers": "6.5.3",
|
|
55
66
|
"esbuild": "^0.28.1",
|
|
56
67
|
"three": "0.169.0"
|
|
57
68
|
}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
6
6
|
<title>SynApp</title>
|
|
7
7
|
<meta name="theme-color" content="#0e0e10">
|
|
8
|
+
<!-- Inside the SynaBun desktop app the navbar is the window's title bar (shared/desktop-titlebar.js). -->
|
|
9
|
+
<meta name="synabun-titlebar" content="navbar">
|
|
8
10
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
9
11
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
10
12
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
6
6
|
<title>SynApp</title>
|
|
7
7
|
<meta name="theme-color" content="#0e0e10">
|
|
8
|
+
<!-- Inside the SynaBun desktop app the navbar is the window's title bar (shared/desktop-titlebar.js). -->
|
|
9
|
+
<meta name="synabun-titlebar" content="navbar">
|
|
8
10
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
9
11
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
10
12
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
@@ -11,21 +11,24 @@
|
|
|
11
11
|
<link rel="stylesheet" href="/shared/pwa-install.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body id="pwa-install">
|
|
14
|
-
|
|
14
|
+
<!-- Hidden until pwa-install-page.js knows what this browser gets: the wizard or the main UI (Chrome or Edge
|
|
15
|
+
sent here by the launcher), one button (asked for from the Apps menu), or one plain instruction. -->
|
|
16
|
+
<main aria-labelledby="install-title" hidden>
|
|
15
17
|
<img src="/icon-192.png" width="48" height="48" alt="SynaBun">
|
|
16
18
|
<h1 id="install-title">Install SynaBun as an app</h1>
|
|
17
19
|
<p id="install-intro">The server is running in the background. Confirm installation once in your browser to give SynaBun its own app window.</p>
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
</ol>
|
|
20
|
+
<p id="install-chromium" hidden>Chrome or Edge: choose Install as App below, or the browser's Install app menu.</p>
|
|
21
|
+
<p id="install-safari" hidden>Safari on macOS: choose File → Add to Dock. Keep the name SynaBun.</p>
|
|
22
|
+
<p id="install-other" hidden>SynaBun installs as an app from Chrome, Edge, or Safari on macOS. Open it in one of them to install.</p>
|
|
22
23
|
<p id="install-later">After installation, reopen the native SynaBun launcher. It starts or reuses the server and opens your installed PWA. Closing the app window leaves the server running. Use Apps → Stop Server to stop it.</p>
|
|
23
24
|
<div class="actions">
|
|
24
|
-
<button id="install-button" type="button">Install as App</button>
|
|
25
|
+
<button id="install-button" type="button" hidden>Install as App</button>
|
|
25
26
|
<a id="install-continue" href="/">Continue to SynaBun</a>
|
|
26
27
|
</div>
|
|
27
28
|
<p id="install-status" role="status" aria-live="polite"></p>
|
|
28
29
|
</main>
|
|
30
|
+
<!-- Should the script never answer, the page and its way on still show. -->
|
|
31
|
+
<script>setTimeout(() => { document.querySelector('main').hidden = false; }, 4000);</script>
|
|
29
32
|
<script type="module" src="/shared/pwa-install-page.js"></script>
|
|
30
33
|
</body>
|
|
31
34
|
</html>
|
|
@@ -511,6 +511,12 @@
|
|
|
511
511
|
const hasBridge = typeof createStartBridge === 'function';
|
|
512
512
|
const windows = hasBridge ? isWindowsPlatform(navigator) : /Win/.test(navigator.platform);
|
|
513
513
|
const mac = hasBridge ? isMacPlatform(navigator) : /Mac/.test(navigator.platform);
|
|
514
|
+
// Inside the SynaBun desktop app (its preload puts window.synabunDesktop on every page of its server) the app
|
|
515
|
+
// starts and restarts the server itself: no Start button and no command to type, one sentence instead, and the
|
|
516
|
+
// page reconnects when the server is back. The sentence is DESKTOP_COPY.offline.hint of
|
|
517
|
+
// shared/desktop-update-view.js, written out here because this page can load nothing.
|
|
518
|
+
const desktopApp = !!(window.synabunDesktop && window.synabunDesktop.updates);
|
|
519
|
+
const DESKTOP_HINT = 'The SynaBun app restarts its server by itself. If it stays offline, quit SynaBun and open it again.';
|
|
514
520
|
|
|
515
521
|
// --- Commands to type instead ---
|
|
516
522
|
const commands = hasBridge
|
|
@@ -578,7 +584,16 @@
|
|
|
578
584
|
setTimeout(() => location.reload(), delay);
|
|
579
585
|
}
|
|
580
586
|
|
|
581
|
-
if (
|
|
587
|
+
if (desktopApp) {
|
|
588
|
+
$('start').hidden = true;
|
|
589
|
+
$('manual').hidden = true;
|
|
590
|
+
$('subtext').textContent = DESKTOP_HINT;
|
|
591
|
+
const interval = setInterval(async () => {
|
|
592
|
+
if (!(await serverAnswers())) return;
|
|
593
|
+
clearInterval(interval);
|
|
594
|
+
reconnect(150);
|
|
595
|
+
}, 3000);
|
|
596
|
+
} else if (!hasBridge) {
|
|
582
597
|
// An older server served this page without the bridge: commands and reconnect only.
|
|
583
598
|
const interval = setInterval(async () => {
|
|
584
599
|
if (!(await serverAnswers())) return;
|
|
@@ -614,7 +629,8 @@
|
|
|
614
629
|
function render(snap) {
|
|
615
630
|
const view = startStatusView(snap, { platform });
|
|
616
631
|
$('mascot').setAttribute('data-state', view.mascot);
|
|
617
|
-
|
|
632
|
+
// A restart read from the supervisor's report names itself (view.heading).
|
|
633
|
+
$('heading').textContent = view.heading ? START_COPY[view.heading] : headings[view.mascot][0];
|
|
618
634
|
$('subtext').textContent = headings[view.mascot][1];
|
|
619
635
|
startBtn.disabled = view.busy || view.state === 'online';
|
|
620
636
|
startLabel.textContent = labels[view.button];
|
|
@@ -622,7 +638,7 @@
|
|
|
622
638
|
const line = say(view.headline);
|
|
623
639
|
if (startStatus.textContent !== line) startStatus.textContent = line;
|
|
624
640
|
$('startElapsed').textContent = view.elapsed;
|
|
625
|
-
$('startElapsed').setAttribute('aria-label', view.elapsed ? START_COPY.elapsedLabel + ': ' + view.elapsed : '');
|
|
641
|
+
$('startElapsed').setAttribute('aria-label', view.elapsed ? START_COPY[view.elapsedLabel] + ': ' + view.elapsed : '');
|
|
626
642
|
$('startHint').textContent = say(view.hint);
|
|
627
643
|
$('startTrail').replaceChildren(...view.trail.map((row) => {
|
|
628
644
|
const item = document.createElement('li');
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<!-- Inside the SynaBun desktop app this page lays out its own top (shared/desktop-titlebar-page.js). -->
|
|
7
|
+
<meta name="synabun-titlebar" content="page">
|
|
6
8
|
<title>Setup - SynaBun</title>
|
|
7
9
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
8
10
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
9
11
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
12
|
+
<link rel="manifest" href="/manifest.json">
|
|
10
13
|
<style>
|
|
11
14
|
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
12
15
|
|
|
@@ -51,6 +54,15 @@
|
|
|
51
54
|
justify-content: center;
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
/* ── Inside the SynaBun desktop app (shared/desktop-titlebar-page.js): the window has no native title bar, and a
|
|
58
|
+
strip along the top drags it. The logo keeps its click, and on macOS clears the traffic lights. ── */
|
|
59
|
+
.ob-logo { -webkit-app-region: no-drag; }
|
|
60
|
+
html.desktop-titlebar--darwin .ob-logo { left: calc(env(titlebar-area-x, 86px) + 12px) !important; }
|
|
61
|
+
/* The Details areas (desktop app): what the wizard checked and what this copy has, in the build output's box. */
|
|
62
|
+
.ob-details { margin-top: 12px; }
|
|
63
|
+
.ob-details .mcp-other-header:focus-visible { outline: 1px solid var(--accent-border); outline-offset: -1px; }
|
|
64
|
+
.ob-details .terminal { margin: 0; max-height: 200px; word-break: break-word; user-select: text; }
|
|
65
|
+
|
|
54
66
|
/* Background canvas */
|
|
55
67
|
#bgCanvas {
|
|
56
68
|
position: fixed;
|
|
@@ -1067,7 +1079,7 @@
|
|
|
1067
1079
|
|
|
1068
1080
|
<canvas id="bgCanvas"></canvas>
|
|
1069
1081
|
|
|
1070
|
-
<a href="https://synabun.ai" target="_blank" rel="noopener" style="position:fixed;top:24px;left:28px;z-index:10;opacity:0.4;transition:opacity 0.2s;" onmouseenter="this.style.opacity='0.7'" onmouseleave="this.style.opacity='0.4'">
|
|
1082
|
+
<a href="https://synabun.ai" target="_blank" rel="noopener" class="ob-logo" style="position:fixed;top:24px;left:28px;z-index:10;opacity:0.4;transition:opacity 0.2s;" onmouseenter="this.style.opacity='0.7'" onmouseleave="this.style.opacity='0.4'">
|
|
1071
1083
|
<img src="synabun.png?v=2" alt="SynaBun" style="height:34px;width:auto;">
|
|
1072
1084
|
</a>
|
|
1073
1085
|
|
|
@@ -1136,6 +1148,16 @@
|
|
|
1136
1148
|
<h2>Environment Check</h2>
|
|
1137
1149
|
<p class="subtitle">Verifying your system has everything SynaBun needs.</p>
|
|
1138
1150
|
<ul class="dep-list" id="depList"></ul>
|
|
1151
|
+
<!-- Desktop app: the commands the check ran and what they answered (shared/install-details-view.js). -->
|
|
1152
|
+
<div class="mcp-other-section ob-details" id="envDetails" hidden>
|
|
1153
|
+
<div class="mcp-other-header" id="envDetailsHeader" role="button" tabindex="0" aria-expanded="false" aria-controls="envDetailsBody">
|
|
1154
|
+
<span>Details</span>
|
|
1155
|
+
<svg class="mcp-other-chevron" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><polyline points="6 9 12 15 18 9" fill="none" stroke="currentColor" stroke-width="2"/></svg>
|
|
1156
|
+
</div>
|
|
1157
|
+
<div class="mcp-other-body" id="envDetailsBody" style="display:none;">
|
|
1158
|
+
<div class="terminal" id="envDetailsLog" role="log"></div>
|
|
1159
|
+
</div>
|
|
1160
|
+
</div>
|
|
1139
1161
|
</div>
|
|
1140
1162
|
|
|
1141
1163
|
<!-- Step 2: Memory Name & Location -->
|
|
@@ -1191,6 +1213,16 @@
|
|
|
1191
1213
|
</div>
|
|
1192
1214
|
<div class="terminal" id="buildOutput" style="display:none"></div>
|
|
1193
1215
|
<button class="action-btn" id="buildBtn">Install & Build</button>
|
|
1216
|
+
<!-- Desktop app: what this copy came with, every dependency with its version (shared/install-details-view.js). -->
|
|
1217
|
+
<div class="mcp-other-section ob-details" id="installDetails" hidden>
|
|
1218
|
+
<div class="mcp-other-header" id="installDetailsHeader" role="button" tabindex="0" aria-expanded="false" aria-controls="installDetailsBody">
|
|
1219
|
+
<span>Details</span>
|
|
1220
|
+
<svg class="mcp-other-chevron" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><polyline points="6 9 12 15 18 9" fill="none" stroke="currentColor" stroke-width="2"/></svg>
|
|
1221
|
+
</div>
|
|
1222
|
+
<div class="mcp-other-body" id="installDetailsBody" style="display:none;">
|
|
1223
|
+
<div class="terminal" id="installDetailsLog" role="log"></div>
|
|
1224
|
+
</div>
|
|
1225
|
+
</div>
|
|
1194
1226
|
</div>
|
|
1195
1227
|
|
|
1196
1228
|
<!-- Step 4: Add Projects -->
|
|
@@ -1412,6 +1444,21 @@ import { fetchRulesStatus, fetchRulesTextWithFallback, installRules, installAllR
|
|
|
1412
1444
|
import {
|
|
1413
1445
|
describeRulesHost, describeRulesInstall, describeRulesInstallAll, describeRulesInPlace, rulesInstallPlan, catalogueTranslator,
|
|
1414
1446
|
} from './shared/settings/settings-rules.js';
|
|
1447
|
+
// Install as an app: the wizard has no step for it. The browser's own dialog opens once, from a click that
|
|
1448
|
+
// moves the wizard on anyway (the welcome choices, Next), and the wizard never reads the answer. Also import-free.
|
|
1449
|
+
import { initPwaInstall, isStandalone, offerPwaInstallOnce } from './shared/pwa-install.js';
|
|
1450
|
+
import { isDesktopApp } from './shared/desktop-bridge.js';
|
|
1451
|
+
// The desktop app: no native title bar (a strip along the top drags the window), and Details areas under the
|
|
1452
|
+
// environment check and the install step. Both import-free; neither does anything in a browser.
|
|
1453
|
+
import { initDesktopPageTitleBar } from './shared/desktop-titlebar-page.js';
|
|
1454
|
+
import { environmentLines, installLines } from './shared/install-details-view.js';
|
|
1455
|
+
|
|
1456
|
+
initDesktopPageTitleBar();
|
|
1457
|
+
|
|
1458
|
+
// Chrome and Edge hand the page their install event when it can be installed; Safari and Firefox have none.
|
|
1459
|
+
// The SynaBun desktop app is its own window: it never asks for the event, so offerPwaInstallOnce() has none
|
|
1460
|
+
// to open there.
|
|
1461
|
+
if (!isStandalone() && !isDesktopApp()) initPwaInstall();
|
|
1415
1462
|
|
|
1416
1463
|
// ═══════════════════════════════════════════
|
|
1417
1464
|
// STATE
|
|
@@ -1538,6 +1585,7 @@ function updateNav() {
|
|
|
1538
1585
|
$prevBtn.addEventListener('click', () => goToStep(currentStep - 1));
|
|
1539
1586
|
$nextBtn.addEventListener('click', () => {
|
|
1540
1587
|
if (validateStep(currentStep)) {
|
|
1588
|
+
offerPwaInstallOnce(); // first, while the click still counts as the user's: see pwa-install.js
|
|
1541
1589
|
goToStep(currentStep + 1);
|
|
1542
1590
|
}
|
|
1543
1591
|
});
|
|
@@ -1821,11 +1869,14 @@ function renderHappyBun() {}
|
|
|
1821
1869
|
|
|
1822
1870
|
// Fresh Install → proceed to step 1
|
|
1823
1871
|
document.getElementById('choiceFreshInstall').addEventListener('click', () => {
|
|
1872
|
+
offerPwaInstallOnce();
|
|
1824
1873
|
goToStep(1);
|
|
1825
1874
|
});
|
|
1826
1875
|
|
|
1827
|
-
// Restore → show restore panel
|
|
1876
|
+
// Restore → show restore panel. A restore never passes Next, so this is its click for the browser's
|
|
1877
|
+
// install dialog; the file picker opens on a later click of its own.
|
|
1828
1878
|
document.getElementById('choiceRestore').addEventListener('click', () => {
|
|
1879
|
+
offerPwaInstallOnce();
|
|
1829
1880
|
$choices.style.display = 'none';
|
|
1830
1881
|
$restorePanel.style.display = 'block';
|
|
1831
1882
|
requestAnimationFrame(() => {
|
|
@@ -2141,10 +2192,63 @@ async function onDepsStep() {
|
|
|
2141
2192
|
detail.innerHTML = `${dep.detail} — <a href="${dep.url}" target="_blank" rel="noopener">Download \u2197</a>`;
|
|
2142
2193
|
}
|
|
2143
2194
|
}
|
|
2195
|
+
showDetails('envDetails', environmentLines, 1);
|
|
2144
2196
|
}
|
|
2145
2197
|
|
|
2146
2198
|
function wait(ms) { return new Promise(r => setTimeout(r, ms)); }
|
|
2147
2199
|
|
|
2200
|
+
// ═══════════════════════════════════════════
|
|
2201
|
+
// DETAILS (desktop app): what the wizard checked and what this copy has
|
|
2202
|
+
// ═══════════════════════════════════════════
|
|
2203
|
+
// GET /api/setup/install-details, read once; open by default, collapsible. An npm or Git install shows none.
|
|
2204
|
+
|
|
2205
|
+
const SHOW_DETAILS = isDesktopApp();
|
|
2206
|
+
let installDetailsRequest = null;
|
|
2207
|
+
function loadInstallDetails() {
|
|
2208
|
+
if (!installDetailsRequest) {
|
|
2209
|
+
installDetailsRequest = fetch('/api/setup/install-details')
|
|
2210
|
+
.then(res => (res.ok ? res.json() : Promise.reject(new Error(`the server answered ${res.status}`))))
|
|
2211
|
+
.catch((error) => { installDetailsRequest = null; throw error; });
|
|
2212
|
+
}
|
|
2213
|
+
return installDetailsRequest;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
function openDetails(prefix, stepIndex, open) {
|
|
2217
|
+
const section = document.getElementById(prefix);
|
|
2218
|
+
section.classList.toggle('open', open);
|
|
2219
|
+
document.getElementById(`${prefix}Body`).style.display = open ? '' : 'none';
|
|
2220
|
+
document.getElementById(`${prefix}Header`).setAttribute('aria-expanded', String(open));
|
|
2221
|
+
requestAnimationFrame(() => resizeViewport(stepIndex));
|
|
2222
|
+
}
|
|
2223
|
+
|
|
2224
|
+
function wireDetails(prefix, stepIndex) {
|
|
2225
|
+
const header = document.getElementById(`${prefix}Header`);
|
|
2226
|
+
const toggle = () => openDetails(prefix, stepIndex, !document.getElementById(prefix).classList.contains('open'));
|
|
2227
|
+
header.addEventListener('click', toggle);
|
|
2228
|
+
header.addEventListener('keydown', (event) => {
|
|
2229
|
+
if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); toggle(); }
|
|
2230
|
+
});
|
|
2231
|
+
}
|
|
2232
|
+
wireDetails('envDetails', 1);
|
|
2233
|
+
wireDetails('installDetails', 3);
|
|
2234
|
+
|
|
2235
|
+
async function showDetails(prefix, linesOf, stepIndex) {
|
|
2236
|
+
if (!SHOW_DETAILS) return;
|
|
2237
|
+
const section = document.getElementById(prefix);
|
|
2238
|
+
const log = document.getElementById(`${prefix}Log`);
|
|
2239
|
+
const first = section.hidden;
|
|
2240
|
+
section.hidden = false;
|
|
2241
|
+
if (first) openDetails(prefix, stepIndex, true);
|
|
2242
|
+
log.textContent = 'Reading what this copy has\u2026';
|
|
2243
|
+
try {
|
|
2244
|
+
const lines = linesOf(await loadInstallDetails());
|
|
2245
|
+
log.textContent = lines.length ? lines.join('\n') : 'Nothing to show.';
|
|
2246
|
+
} catch (err) {
|
|
2247
|
+
log.textContent = `Could not read the details: ${err.message}`;
|
|
2248
|
+
}
|
|
2249
|
+
resizeViewport(stepIndex);
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2148
2252
|
// ═══════════════════════════════════════════
|
|
2149
2253
|
// STEP 3: Install & Build
|
|
2150
2254
|
// ═══════════════════════════════════════════
|
|
@@ -2214,6 +2318,7 @@ async function onBuildStep() {
|
|
|
2214
2318
|
$btn.textContent = 'Already Done';
|
|
2215
2319
|
$btn.classList.add('success');
|
|
2216
2320
|
$btn.disabled = true;
|
|
2321
|
+
showDetails('installDetails', installLines, 3);
|
|
2217
2322
|
return;
|
|
2218
2323
|
}
|
|
2219
2324
|
} catch {}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Hands the page's translator to account-view.js (`accounts.*` in i18n/*.json).
|
|
2
|
+
// Browser-only: i18n.js reads the page's storage, so node tests load
|
|
3
|
+
// account-view.js without it and get the English.
|
|
4
|
+
import { t } from './i18n.js';
|
|
5
|
+
import { setAccountTranslator } from './account-view.js';
|
|
6
|
+
|
|
7
|
+
setAccountTranslator((key, params) => t(`accounts.${key}`, params));
|