synabun 2.0.10 → 2.2.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/CHANGELOG.md +207 -0
- package/README.md +25 -2
- package/THIRD-PARTY-LICENSES.md +22 -0
- package/bin/synabun.js +71 -24
- package/docs/whatsapp.md +13 -13
- package/hooks/claude-code/pre-websearch.mjs +12 -1
- package/hooks/claude-code/shared.mjs +5 -0
- package/hooks/claude-code/stop.mjs +1 -1
- package/lib/claude-hooks.js +172 -18
- package/lib/client-config-repair.js +30 -17
- package/lib/desktop-app.js +7 -1
- package/lib/external-tools.js +7 -6
- package/lib/first-launch-protection.js +57 -12
- package/lib/mcp-dist.js +176 -0
- package/lib/release-npm-ci.mjs +138 -0
- package/lib/release-publish.mjs +91 -0
- package/lib/release-scan.mjs +50 -0
- package/lib/server-crash-record.js +123 -0
- package/lib/server-exit.js +318 -0
- package/lib/server-supervisor.js +508 -0
- package/lib/start-launcher.js +37 -4
- package/lib/tools-cli.js +45 -0
- package/lib/update-snapshot.js +302 -0
- package/lib/virustotal.mjs +203 -0
- package/lib/windows-crash-event.js +269 -0
- package/mcp-server/dist/http.d.ts +20 -1
- package/mcp-server/dist/http.d.ts.map +1 -1
- package/mcp-server/dist/http.js +59 -12
- package/mcp-server/dist/http.js.map +1 -1
- package/mcp-server/dist/index.d.ts +33 -27
- package/mcp-server/dist/index.d.ts.map +1 -1
- package/mcp-server/dist/index.js +128 -143
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/preload.js +1 -1
- package/mcp-server/dist/preload.js.map +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts.map +1 -1
- package/mcp-server/dist/services/budget-judgments.js +5 -3
- package/mcp-server/dist/services/budget-judgments.js.map +1 -1
- package/mcp-server/dist/services/codex-config-heal.d.ts +6 -2
- package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
- package/mcp-server/dist/services/codex-config-heal.js +81 -28
- package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
- package/mcp-server/dist/services/identity.d.ts +2 -2
- package/mcp-server/dist/services/identity.js +2 -2
- package/mcp-server/dist/services/memory-judge-backfill.d.ts +6 -0
- package/mcp-server/dist/services/memory-judge-backfill.d.ts.map +1 -1
- package/mcp-server/dist/services/memory-judge-backfill.js +7 -1
- package/mcp-server/dist/services/memory-judge-backfill.js.map +1 -1
- package/mcp-server/dist/services/memory-sessions.d.ts +1 -1
- package/mcp-server/dist/services/memory-sessions.d.ts.map +1 -1
- package/mcp-server/dist/services/memory-sessions.js +28 -2
- package/mcp-server/dist/services/memory-sessions.js.map +1 -1
- package/mcp-server/dist/services/neural-interface.d.ts +18 -11
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js +67 -11
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/server-instructions.d.ts +7 -2
- package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
- package/mcp-server/dist/services/server-instructions.js +22 -63
- package/mcp-server/dist/services/server-instructions.js.map +1 -1
- package/mcp-server/dist/services/tool-catalog.d.ts +120 -0
- package/mcp-server/dist/services/tool-catalog.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-catalog.js +339 -0
- package/mcp-server/dist/services/tool-catalog.js.map +1 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts +12 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.js +40 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.js.map +1 -0
- package/mcp-server/dist/services/tool-list.d.ts +108 -0
- package/mcp-server/dist/services/tool-list.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-list.js +334 -0
- package/mcp-server/dist/services/tool-list.js.map +1 -0
- package/mcp-server/dist/services/tool-runtime.d.ts +161 -0
- package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-runtime.js +400 -0
- package/mcp-server/dist/services/tool-runtime.js.map +1 -0
- package/mcp-server/dist/services/typesafe-config.js +1 -1
- package/mcp-server/dist/services/typesafe-config.js.map +1 -1
- package/mcp-server/dist/services/whiteboard-geometry.d.ts +26 -2
- package/mcp-server/dist/services/whiteboard-geometry.d.ts.map +1 -1
- package/mcp-server/dist/services/whiteboard-geometry.js +91 -8
- package/mcp-server/dist/services/whiteboard-geometry.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +14 -14
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +29 -19
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts +3 -3
- package/mcp-server/dist/tools/choice.d.ts +6 -0
- package/mcp-server/dist/tools/choice.d.ts.map +1 -1
- package/mcp-server/dist/tools/choice.js +18 -13
- package/mcp-server/dist/tools/choice.js.map +1 -1
- package/mcp-server/dist/tools/git-tools.js +2 -2
- package/mcp-server/dist/tools/git-tools.js.map +1 -1
- package/mcp-server/dist/tools/image-tools.d.ts +1 -1
- package/mcp-server/dist/tools/image-tools.js +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
- package/mcp-server/dist/tools/morelogin.js +9 -6
- package/mcp-server/dist/tools/morelogin.js.map +1 -1
- package/mcp-server/dist/tools/skill-tools.d.ts +505 -0
- package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/skill-tools.js +642 -0
- package/mcp-server/dist/tools/skill-tools.js.map +1 -0
- package/mcp-server/dist/tools/skill.d.ts +7 -0
- package/mcp-server/dist/tools/skill.d.ts.map +1 -0
- package/mcp-server/dist/tools/skill.js +11 -0
- package/mcp-server/dist/tools/skill.js.map +1 -0
- package/mcp-server/dist/tools/tool-groups.d.ts +68 -0
- package/mcp-server/dist/tools/tool-groups.d.ts.map +1 -0
- package/mcp-server/dist/tools/tool-groups.js +147 -0
- package/mcp-server/dist/tools/tool-groups.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard-format.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-format.js +7 -4
- package/mcp-server/dist/tools/whiteboard-format.js.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +64 -13
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js +30 -5
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/mcp-server/src/http.ts +75 -12
- package/mcp-server/src/index.ts +147 -154
- package/mcp-server/src/preload.ts +12 -12
- package/mcp-server/src/services/budget-judgments.ts +5 -3
- package/mcp-server/src/services/codex-config-heal.ts +80 -29
- package/mcp-server/src/services/identity.ts +2 -2
- package/mcp-server/src/services/memory-judge-backfill.ts +7 -1
- package/mcp-server/src/services/memory-sessions.ts +24 -3
- package/mcp-server/src/services/neural-interface.ts +81 -21
- package/mcp-server/src/services/server-instructions.ts +29 -64
- package/mcp-server/src/services/tool-catalog.ts +403 -0
- package/mcp-server/src/services/tool-list-refresh-barrier.ts +33 -0
- package/mcp-server/src/services/tool-list.ts +410 -0
- package/mcp-server/src/services/tool-runtime.ts +457 -0
- package/mcp-server/src/services/typesafe-config.ts +1 -1
- package/mcp-server/src/services/whiteboard-geometry.ts +94 -9
- package/mcp-server/src/tools/agents.ts +29 -20
- package/mcp-server/src/tools/choice.ts +17 -12
- package/mcp-server/src/tools/git-tools.ts +2 -2
- package/mcp-server/src/tools/image-tools.ts +1 -1
- package/mcp-server/src/tools/morelogin.ts +6 -4
- package/mcp-server/src/tools/skill-tools.ts +592 -0
- package/mcp-server/src/tools/skill.ts +13 -0
- package/mcp-server/src/tools/tool-groups.ts +164 -0
- package/mcp-server/src/tools/whiteboard-format.ts +9 -3
- package/mcp-server/src/tools/whiteboard-tools.ts +39 -5
- package/neural-interface/i18n/en.json +3953 -228
- package/neural-interface/i18n/pt-BR.json +3901 -179
- package/neural-interface/lib/agent-sandbox-elevation.js +6 -0
- package/neural-interface/lib/antigravity/acp-client-host.js +554 -0
- package/neural-interface/lib/antigravity/acp-connection.js +299 -0
- package/neural-interface/lib/antigravity/bypass.js +100 -0
- package/neural-interface/lib/antigravity/catalog.js +273 -0
- package/neural-interface/lib/antigravity/home.js +260 -0
- package/neural-interface/lib/antigravity/migrate-gemini.js +139 -0
- package/neural-interface/lib/antigravity/panel-bridge.js +1058 -0
- package/neural-interface/lib/antigravity/policy-hook.mjs +78 -0
- package/neural-interface/lib/antigravity/policy.js +74 -0
- package/neural-interface/lib/antigravity/tool-call.js +178 -0
- package/neural-interface/lib/antigravity/transcripts.js +252 -0
- package/neural-interface/lib/antigravity/usage.js +43 -0
- package/neural-interface/lib/assistant-api.js +128 -28
- package/neural-interface/lib/assistant-brains/antigravity.js +423 -0
- package/neural-interface/lib/assistant-brains/claude.js +4 -3
- package/neural-interface/lib/assistant-brains/codex-browser-policy-hook.mjs +12 -2
- package/neural-interface/lib/assistant-brains/codex-route-gate-hook.mjs +32 -9
- package/neural-interface/lib/assistant-brains/codex.js +9 -5
- package/neural-interface/lib/assistant-brains/opencode.js +120 -54
- package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +28 -13
- package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +59 -19
- package/neural-interface/lib/assistant-budget-planner.js +7 -3
- package/neural-interface/lib/assistant-budget-split.js +42 -15
- package/neural-interface/lib/assistant-catalog.js +81 -15
- package/neural-interface/lib/assistant-config.js +6 -3
- package/neural-interface/lib/assistant-dispatch.js +1073 -200
- package/neural-interface/lib/assistant-envelope.js +156 -2
- package/neural-interface/lib/assistant-evidence.js +80 -0
- package/neural-interface/lib/assistant-hidden-models.js +7 -5
- package/neural-interface/lib/assistant-persona.js +93 -19
- package/neural-interface/lib/assistant-plan-permissions.js +25 -9
- package/neural-interface/lib/assistant-route-gate-codex.js +3 -0
- package/neural-interface/lib/assistant-route-gate.js +6 -4
- package/neural-interface/lib/assistant-router.js +245 -38
- package/neural-interface/lib/assistant-runtime.js +214 -30
- package/neural-interface/lib/assistant-task-prompt.js +87 -21
- package/neural-interface/lib/assistant-tools.js +51 -0
- package/neural-interface/lib/assistant-usage.js +29 -0
- package/neural-interface/lib/backup-service.js +626 -4
- package/neural-interface/lib/backup-zip-reader.js +10 -5
- package/neural-interface/lib/backup-zip-writer.js +257 -0
- package/neural-interface/lib/browser-execution.js +10 -2
- package/neural-interface/lib/browser-guard-cdp.js +84 -0
- package/neural-interface/lib/browser-network-guard.js +476 -0
- package/neural-interface/lib/browser-policy-roots.js +64 -0
- package/neural-interface/lib/browser-tool-policy.js +198 -38
- package/neural-interface/lib/claude-agent-bridge.js +11 -2
- package/neural-interface/lib/claude-history-cache.js +210 -0
- package/neural-interface/lib/claude-hooks-status.js +103 -0
- package/neural-interface/lib/claude-model-catalog.js +5 -1
- package/neural-interface/lib/claude-temporary.js +5 -11
- package/neural-interface/lib/cli-install-api.js +1 -1
- package/neural-interface/lib/cli-install.js +163 -154
- package/neural-interface/lib/cli-resolver.js +13 -3
- package/neural-interface/lib/cli-update-planner.js +52 -41
- package/neural-interface/lib/cloudflared/tunnel.js +42 -2
- package/neural-interface/lib/codex-mcp-approvals.js +11 -0
- package/neural-interface/lib/codex-rollout-reader.js +52 -0
- package/neural-interface/lib/codex-worker-app-server.js +191 -0
- package/neural-interface/lib/confined-fs.js +30 -3
- package/neural-interface/lib/crash-notice-api.js +98 -0
- package/neural-interface/lib/editor-completion-opencode.js +68 -68
- package/neural-interface/lib/editor-git-api.js +3 -20
- package/neural-interface/lib/exec-loop-command.js +13 -10
- package/neural-interface/lib/file-explorer-api.js +74 -40
- package/neural-interface/lib/file-explorer-watch.js +9 -3
- package/neural-interface/lib/git-bash/install.js +52 -6
- package/neural-interface/lib/git-bash/manager.js +59 -17
- package/neural-interface/lib/git-bash/pins.js +12 -0
- package/neural-interface/lib/git-read.js +2 -2
- package/neural-interface/lib/git-status-runner.js +390 -0
- package/neural-interface/lib/git-status-watchdog.js +40 -0
- package/neural-interface/lib/greeting/budgets.js +1 -0
- package/neural-interface/lib/greeting/engine.js +2 -2
- package/neural-interface/lib/greeting/sources.js +10 -12
- package/neural-interface/lib/greeting/writer.js +1 -1
- package/neural-interface/lib/http-guards.js +8 -2
- package/neural-interface/lib/install-details.js +4 -1
- package/neural-interface/lib/mcp-agent-servers.js +67 -0
- package/neural-interface/lib/mcp-client-config.js +35 -33
- package/neural-interface/lib/mcp-external-servers.js +332 -0
- package/neural-interface/lib/mcp-installer.js +2 -1
- package/neural-interface/lib/{mcp-profile-refresh-coordinator.js → mcp-tools-refresh-coordinator.js} +4 -4
- package/neural-interface/lib/memory-session-capture.js +17 -3
- package/neural-interface/lib/morelogin.js +177 -25
- package/neural-interface/lib/native-loop-providers.js +965 -66
- package/neural-interface/lib/native-loop-runtime.js +290 -42
- package/neural-interface/lib/opencode-config.js +557 -0
- package/neural-interface/lib/opencode-db-schema.js +17 -34
- package/neural-interface/lib/opencode-history.js +48 -218
- package/neural-interface/lib/opencode-mcp-ready.js +108 -0
- package/neural-interface/lib/opencode-native-boundary.js +53 -0
- package/neural-interface/lib/opencode-protocol.js +249 -112
- package/neural-interface/lib/opencode-runtime-config.js +32 -22
- package/neural-interface/lib/opencode-serve-records.js +39 -21
- package/neural-interface/lib/opencode-v2-client.js +48 -153
- package/neural-interface/lib/opencode-v2-ws-requests.js +36 -210
- package/neural-interface/lib/opencode-worker-data.js +27 -0
- package/neural-interface/lib/opencode2-client.js +73 -37
- package/neural-interface/lib/opencode2-proxy.js +23 -63
- package/neural-interface/lib/opencode2-translate.js +51 -2
- package/neural-interface/lib/owner-authority.js +249 -0
- package/neural-interface/lib/page-session.js +275 -0
- package/neural-interface/lib/path-confine.js +12 -9
- package/neural-interface/lib/peer-identity.js +793 -0
- package/neural-interface/lib/pty-host/core.js +28 -1
- package/neural-interface/lib/pty-host/lifetime.js +12 -0
- package/neural-interface/lib/pty-host/manager.js +12 -1
- package/neural-interface/lib/remote-policy.js +1 -1
- package/neural-interface/lib/request-gate.js +20 -2
- package/neural-interface/lib/rulesets/api.js +7 -6
- package/neural-interface/lib/rulesets/fs-safe.js +1 -1
- package/neural-interface/lib/rulesets/installer.js +180 -36
- package/neural-interface/lib/rulesets/json-edit.js +1 -1
- package/neural-interface/lib/rulesets/render.js +1 -1
- package/neural-interface/lib/session-cache-builder.js +81 -31
- package/neural-interface/lib/session-title-generator.js +58 -36
- package/neural-interface/lib/skills/api-v2.js +495 -0
- package/neural-interface/lib/skills/bundle.js +418 -0
- package/neural-interface/lib/skills/catalog.js +298 -0
- package/neural-interface/lib/skills/creation-api.js +191 -0
- package/neural-interface/lib/skills/creation-brief.js +247 -0
- package/neural-interface/lib/skills/creation-sources.js +285 -0
- package/neural-interface/lib/skills/creation.js +843 -0
- package/neural-interface/lib/skills/deploy.js +569 -0
- package/neural-interface/lib/skills/digest.js +119 -0
- package/neural-interface/lib/skills/discover.js +111 -0
- package/neural-interface/lib/skills/draft-confinement.js +216 -0
- package/neural-interface/lib/skills/eval-confinement.js +399 -0
- package/neural-interface/lib/skills/eval-sandbox.js +280 -0
- package/neural-interface/lib/skills/eval-trace.js +135 -0
- package/neural-interface/lib/skills/evals-api.js +212 -0
- package/neural-interface/lib/skills/evals.js +1573 -0
- package/neural-interface/lib/skills/export.js +203 -0
- package/neural-interface/lib/skills/frontmatter.js +64 -0
- package/neural-interface/lib/skills/health.js +75 -0
- package/neural-interface/lib/skills/json-edit.js +165 -0
- package/neural-interface/lib/skills/known-bridge-digests.json +441 -0
- package/neural-interface/lib/skills/known-bridges.js +96 -0
- package/neural-interface/lib/skills/library.js +823 -0
- package/neural-interface/lib/skills/local-store.js +21 -0
- package/neural-interface/lib/skills/migration.js +433 -0
- package/neural-interface/lib/skills/operations.js +45 -0
- package/neural-interface/lib/skills/ownership.js +427 -0
- package/neural-interface/lib/skills/packages.js +88 -0
- package/neural-interface/lib/skills/reviews.js +212 -0
- package/neural-interface/lib/skills/revision.js +80 -0
- package/neural-interface/lib/skills/roots.js +269 -0
- package/neural-interface/lib/skills/runtime-checks.js +358 -0
- package/neural-interface/lib/skills/scan-assets.js +252 -0
- package/neural-interface/lib/skills/scan-context.js +26 -0
- package/neural-interface/lib/skills/scan-shell.js +324 -0
- package/neural-interface/lib/skills/scan.js +364 -0
- package/neural-interface/lib/skills/scanners.js +54 -0
- package/neural-interface/lib/skills/service.js +530 -0
- package/neural-interface/lib/skills/telemetry.js +119 -0
- package/neural-interface/lib/sqlite-integrity-worker.js +22 -0
- package/neural-interface/lib/synabun-version.js +1 -1
- package/neural-interface/lib/system-activity.js +1 -1
- package/neural-interface/lib/tool-lists.js +124 -0
- package/neural-interface/lib/whatsapp/brain.js +7 -3
- package/neural-interface/lib/whatsapp/bridge.js +6 -3
- package/neural-interface/lib/whatsapp/cards.js +22 -9
- package/neural-interface/lib/whatsapp/config.js +1 -1
- package/neural-interface/lib/worker-confinement.js +1268 -0
- package/neural-interface/lib/worker-guard-setting.js +56 -0
- package/neural-interface/lib/worker-mcp-channel.js +175 -0
- package/neural-interface/lib/worker-question.js +74 -0
- package/neural-interface/lib/worker-relay-ports.js +227 -0
- package/neural-interface/lib/worker-resume.js +238 -0
- package/neural-interface/lib/worker-sandbox.js +329 -0
- package/neural-interface/package-lock.json +34 -12
- package/neural-interface/package.json +3 -2
- package/neural-interface/public/index.html +3 -1
- package/neural-interface/public/index2d.html +19 -11
- package/neural-interface/public/onboarding.html +3 -3
- package/neural-interface/public/shared/account-menu.js +8 -5
- package/neural-interface/public/shared/agent-runtime-options.js +125 -31
- package/neural-interface/public/shared/agy/agy-bypass.js +47 -0
- package/neural-interface/public/shared/agy/agy-client.js +266 -0
- package/neural-interface/public/shared/agy/agy-commands.js +120 -0
- package/neural-interface/public/shared/agy/agy-copy.js +326 -0
- package/neural-interface/public/shared/agy/agy-diff.js +161 -0
- package/neural-interface/public/shared/agy/agy-events.js +469 -0
- package/neural-interface/public/shared/agy/agy-greeting.js +26 -0
- package/neural-interface/public/shared/agy/agy-options.js +232 -0
- package/neural-interface/public/shared/agy/agy-panel.js +2543 -0
- package/neural-interface/public/shared/agy/agy-render.js +392 -0
- package/neural-interface/public/shared/agy/agy-setup.js +149 -0
- package/neural-interface/public/shared/agy/agy-styles.js +604 -0
- package/neural-interface/public/shared/agy/agy-tabs-logic.js +181 -0
- package/neural-interface/public/shared/api.js +1527 -1336
- package/neural-interface/public/shared/app-frame.js +192 -0
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +36 -6
- package/neural-interface/public/shared/assistant/asst-api.js +1 -1
- package/neural-interface/public/shared/assistant/asst-ask-styles.js +270 -0
- package/neural-interface/public/shared/assistant/asst-ask-tail.js +118 -0
- package/neural-interface/public/shared/assistant/asst-ask.js +397 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +105 -44
- package/neural-interface/public/shared/assistant/asst-budget.js +5 -4
- package/neural-interface/public/shared/assistant/asst-control.js +205 -26
- package/neural-interface/public/shared/assistant/asst-followups-card.js +383 -0
- package/neural-interface/public/shared/assistant/asst-followups.js +417 -0
- package/neural-interface/public/shared/assistant/asst-hosts.js +16 -7
- package/neural-interface/public/shared/assistant/asst-limit-dock.js +45 -0
- package/neural-interface/public/shared/assistant/asst-limit-wait.js +327 -0
- package/neural-interface/public/shared/assistant/asst-limit.js +168 -0
- package/neural-interface/public/shared/assistant/asst-mascot.js +49 -12
- package/neural-interface/public/shared/assistant/asst-menu.js +7 -6
- package/neural-interface/public/shared/assistant/asst-panel.js +151 -19
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +66 -49
- package/neural-interface/public/shared/assistant/asst-render.js +445 -82
- package/neural-interface/public/shared/assistant/asst-route.js +304 -53
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +9 -8
- package/neural-interface/public/shared/assistant/asst-scenes.js +56 -1
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +117 -10
- package/neural-interface/public/shared/assistant/asst-slash.js +17 -9
- package/neural-interface/public/shared/assistant/asst-state.js +87 -24
- package/neural-interface/public/shared/assistant/asst-stop.js +127 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +93 -21
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +190 -23
- package/neural-interface/public/shared/assistant/asst-usage.js +2 -1
- package/neural-interface/public/shared/automation-context.js +5 -2
- package/neural-interface/public/shared/cc-dropdown.js +89 -19
- package/neural-interface/public/shared/cdx/cdx-context-menu.js +10 -9
- package/neural-interface/public/shared/cdx/cdx-copy.js +16 -0
- package/neural-interface/public/shared/cdx/cdx-output-model.js +22 -1
- package/neural-interface/public/shared/cdx/cdx-output.js +34 -10
- package/neural-interface/public/shared/cdx/cdx-panel.js +59 -151
- package/neural-interface/public/shared/cdx/cdx-preview.js +12 -0
- package/neural-interface/public/shared/cdx/cdx-protocol.js +39 -11
- package/neural-interface/public/shared/cdx/cdx-render.js +57 -38
- package/neural-interface/public/shared/cdx/cdx-requests.js +14 -4
- package/neural-interface/public/shared/cdx/cdx-skill-hints.js +54 -0
- package/neural-interface/public/shared/cdx/cdx-styles.js +15 -3
- package/neural-interface/public/shared/cdx/cdx-tabs.js +127 -44
- package/neural-interface/public/shared/cdx/cdx-ws.js +0 -1
- package/neural-interface/public/shared/cli-install-controller.js +218 -0
- package/neural-interface/public/shared/cli-install-view.js +11 -12
- package/neural-interface/public/shared/cli-status.js +11 -10
- package/neural-interface/public/shared/constants.js +5 -4
- package/neural-interface/public/shared/context-menu-areas.js +34 -0
- package/neural-interface/public/shared/context-menu-logic.js +243 -0
- package/neural-interface/public/shared/context-menu-model.js +367 -0
- package/neural-interface/public/shared/context-menu.js +372 -0
- package/neural-interface/public/shared/cp/cp-context-menu.js +10 -9
- package/neural-interface/public/shared/cp/cp-restore.js +162 -0
- package/neural-interface/public/shared/cp/cp-tool-cards.js +10 -3
- package/neural-interface/public/shared/crash-notice-view.js +168 -0
- package/neural-interface/public/shared/desktop-bridge.js +17 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +12 -0
- package/neural-interface/public/shared/desktop-titlebar.js +13 -4
- package/neural-interface/public/shared/desktop-update-view.js +21 -0
- package/neural-interface/public/shared/editor/editor-panel-logic.js +2 -2
- package/neural-interface/public/shared/explorer/fx-api.js +4 -4
- package/neural-interface/public/shared/explorer/fx-links.js +3 -3
- package/neural-interface/public/shared/explorer/fx-logic.js +1 -1
- package/neural-interface/public/shared/explorer/fx-main.js +48 -16
- package/neural-interface/public/shared/explorer/fx-tree.js +1 -0
- package/neural-interface/public/shared/greeting/greeting-card.js +2 -2
- package/neural-interface/public/shared/greeting/greeting-view.js +1 -0
- package/neural-interface/public/shared/html-shell.js +30 -15
- package/neural-interface/public/shared/i18n.js +2 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-approvals.js +7 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-binding.js +4 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-changes-logic.js +3 -101
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +2 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-compact-button.js +1 -3
- package/neural-interface/public/shared/ocp-v2/ocp-v2-composer-logic.js +2 -6
- package/neural-interface/public/shared/ocp-v2/ocp-v2-context-menu.js +11 -11
- package/neural-interface/public/shared/ocp-v2/ocp-v2-context-model.js +0 -3
- package/neural-interface/public/shared/ocp-v2/ocp-v2-events.js +8 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-manager.js +7 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-outcome-notifications.js +16 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +74 -259
- package/neural-interface/public/shared/ocp-v2/ocp-v2-plan.js +1 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +95 -202
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +13 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +13 -22
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +4 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-session-actions.js +8 -61
- package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +2 -91
- package/neural-interface/public/shared/ocp-v2/ocp-v2-slash-hints.js +16 -15
- package/neural-interface/public/shared/ocp-v2/ocp-v2-state.js +8 -21
- package/neural-interface/public/shared/ocp-v2/ocp-v2-status-logic.js +1 -99
- package/neural-interface/public/shared/ocp-v2/ocp-v2-status.js +5 -35
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +17 -21
- package/neural-interface/public/shared/ocp-v2/{ocp-v2-profile-inheritance.js → ocp-v2-tools-inheritance.js} +16 -16
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +60 -50
- package/neural-interface/public/shared/page-session.js +96 -0
- package/neural-interface/public/shared/provider-icons.js +4 -2
- package/neural-interface/public/shared/registry.js +5 -3
- package/neural-interface/public/shared/retired-2d.js +3 -0
- package/neural-interface/public/shared/schedules-view.js +195 -61
- package/neural-interface/public/shared/settings/settings-claude-hooks.js +135 -0
- package/neural-interface/public/shared/settings/settings-data.js +3 -1
- package/neural-interface/public/shared/settings/settings-ia.js +6 -6
- package/neural-interface/public/shared/settings/settings-opencode.js +89 -0
- package/neural-interface/public/shared/settings/settings-rules.js +2 -2
- package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +265 -0
- package/neural-interface/public/shared/settings/settings-skill-folders.js +130 -0
- package/neural-interface/public/shared/settings/settings-worker-guard.js +72 -0
- package/neural-interface/public/shared/showcase-privacy.js +6 -1
- package/neural-interface/public/shared/sidepanel-session-status.js +3 -3
- package/neural-interface/public/shared/skills/ss-args.js +96 -0
- package/neural-interface/public/shared/skills/ss-creation.js +222 -0
- package/neural-interface/public/shared/skills/ss-dialog.js +133 -0
- package/neural-interface/public/shared/skills/ss-doc.js +173 -0
- package/neural-interface/public/shared/skills/ss-eval-adapters.js +269 -0
- package/neural-interface/public/shared/skills/ss-eval-grade.js +359 -0
- package/neural-interface/public/shared/skills/ss-eval-optimise.js +153 -0
- package/neural-interface/public/shared/skills/ss-eval-plan.js +315 -0
- package/neural-interface/public/shared/skills/ss-evals.js +417 -0
- package/neural-interface/public/shared/skills/ss-form.js +159 -0
- package/neural-interface/public/shared/skills/ss-frontmatter.js +376 -0
- package/neural-interface/public/shared/skills/ss-ids.js +32 -0
- package/neural-interface/public/shared/skills/ss-lint.js +149 -0
- package/neural-interface/public/shared/skills/ss-presets.js +117 -0
- package/neural-interface/public/shared/skills/ss-profiles.js +513 -0
- package/neural-interface/public/shared/skills/ss-resources.js +165 -0
- package/neural-interface/public/shared/skills/ss-review-view.js +190 -0
- package/neural-interface/public/shared/skills/ss-tabs.js +79 -0
- package/neural-interface/public/shared/skills/ss-unicode.js +135 -0
- package/neural-interface/public/shared/skills/studio/sx-actions.js +222 -0
- package/neural-interface/public/shared/skills/studio/sx-cm.js +101 -0
- package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +749 -0
- package/neural-interface/public/shared/skills/studio/sx-create-ai.js +237 -0
- package/neural-interface/public/shared/skills/studio/sx-create-view.js +254 -0
- package/neural-interface/public/shared/skills/studio/sx-create.js +126 -0
- package/neural-interface/public/shared/skills/studio/sx-diff-view.js +43 -0
- package/neural-interface/public/shared/skills/studio/sx-diff.js +133 -0
- package/neural-interface/public/shared/skills/studio/sx-docs.js +480 -0
- package/neural-interface/public/shared/skills/studio/sx-dom.js +230 -0
- package/neural-interface/public/shared/skills/studio/sx-edit-view.js +848 -0
- package/neural-interface/public/shared/skills/studio/sx-editor-model.js +193 -0
- package/neural-interface/public/shared/skills/studio/sx-errors.js +22 -0
- package/neural-interface/public/shared/skills/studio/sx-fixes-view.js +359 -0
- package/neural-interface/public/shared/skills/studio/sx-fixes.js +327 -0
- package/neural-interface/public/shared/skills/studio/sx-geometry.js +82 -0
- package/neural-interface/public/shared/skills/studio/sx-import.js +262 -0
- package/neural-interface/public/shared/skills/studio/sx-inspector.js +308 -0
- package/neural-interface/public/shared/skills/studio/sx-install-flow.js +282 -0
- package/neural-interface/public/shared/skills/studio/sx-install.js +313 -0
- package/neural-interface/public/shared/skills/studio/sx-library-view.js +748 -0
- package/neural-interface/public/shared/skills/studio/sx-library.js +479 -0
- package/neural-interface/public/shared/skills/studio/sx-main.js +690 -0
- package/neural-interface/public/shared/skills/studio/sx-operations-view.js +98 -0
- package/neural-interface/public/shared/skills/studio/sx-operations.js +11 -0
- package/neural-interface/public/shared/skills/studio/sx-plan.js +158 -0
- package/neural-interface/public/shared/skills/studio/sx-publish-view.js +621 -0
- package/neural-interface/public/shared/skills/studio/sx-review-view.js +369 -0
- package/neural-interface/public/shared/skills/studio/sx-review.js +148 -0
- package/neural-interface/public/shared/skills/studio/sx-scan.js +35 -0
- package/neural-interface/public/shared/skills/studio/sx-snippets.js +96 -0
- package/neural-interface/public/shared/skills/studio/sx-subject.js +249 -0
- package/neural-interface/public/shared/skills/studio/sx-test-view.js +994 -0
- package/neural-interface/public/shared/skills/studio/sx-test.js +328 -0
- package/neural-interface/public/shared/skills/studio/sx-versions-view.js +241 -0
- package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +426 -0
- package/neural-interface/public/shared/state.js +1 -1
- package/neural-interface/public/shared/streaming-markdown.js +58 -0
- package/neural-interface/public/shared/styleguide/sg-panel.js +4 -2
- package/neural-interface/public/shared/styles.css +1822 -1756
- package/neural-interface/public/shared/synabun-mascot.js +1115 -9
- package/neural-interface/public/shared/text-cache.js +29 -0
- package/neural-interface/public/shared/tool-list-picker.js +55 -0
- package/neural-interface/public/shared/tool-list-storage.js +24 -0
- package/neural-interface/public/shared/tool-list-view.js +112 -0
- package/neural-interface/public/shared/topright-overflow-logic.js +54 -0
- package/neural-interface/public/shared/tour/tour-actor.js +268 -0
- package/neural-interface/public/shared/tour/tour-beats.js +336 -0
- package/neural-interface/public/shared/tour/tour-engine.js +884 -0
- package/neural-interface/public/shared/tour/tour-ink.js +390 -0
- package/neural-interface/public/shared/tour/tour-stage.js +440 -0
- package/neural-interface/public/shared/tour/tour-state.js +40 -0
- package/neural-interface/public/shared/tour/tour-tips.js +99 -0
- package/neural-interface/public/shared/tour/tour.css +144 -0
- package/neural-interface/public/shared/ui-antigravity-panel.js +19 -0
- package/neural-interface/public/shared/ui-assistant.js +2 -0
- package/neural-interface/public/shared/ui-automation-studio.js +111 -140
- package/neural-interface/public/shared/ui-claude-panel.js +376 -82
- package/neural-interface/public/shared/ui-cli-banner.js +23 -167
- package/neural-interface/public/shared/ui-command-runner.js +6 -3
- package/neural-interface/public/shared/ui-context-menu.js +295 -0
- package/neural-interface/public/shared/ui-cost-widget.js +57 -59
- package/neural-interface/public/shared/ui-crash-notice.js +187 -0
- package/neural-interface/public/shared/ui-detail.js +15 -3
- package/neural-interface/public/shared/ui-file-explorer.js +48 -6
- package/neural-interface/public/shared/ui-file-links.js +2 -2
- package/neural-interface/public/shared/ui-games.js +2 -2
- package/neural-interface/public/shared/ui-image-gallery.js +50 -47
- package/neural-interface/public/shared/ui-judgments.js +1 -1
- package/neural-interface/public/shared/ui-keybinds.js +33 -2
- package/neural-interface/public/shared/ui-link.js +3 -3
- package/neural-interface/public/shared/ui-menubar.js +10 -20
- package/neural-interface/public/shared/ui-native-loop-router-state.js +5 -0
- package/neural-interface/public/shared/ui-native-loop-router.js +11 -1
- package/neural-interface/public/shared/ui-navbar.js +49 -24
- package/neural-interface/public/shared/ui-notifications.js +1 -0
- package/neural-interface/public/shared/ui-panels.js +96 -65
- package/neural-interface/public/shared/ui-resume.js +9 -7
- package/neural-interface/public/shared/ui-schedules-studio.js +546 -431
- package/neural-interface/public/shared/ui-scroll-follow.js +16 -5
- package/neural-interface/public/shared/ui-sessions.js +27 -15
- package/neural-interface/public/shared/ui-settings.js +683 -526
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +9 -2
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +4 -4
- package/neural-interface/public/shared/ui-sidepanel-state.js +23 -12
- package/neural-interface/public/shared/ui-sidepanel-tray.js +48 -7
- package/neural-interface/public/shared/ui-sidepanel-windows.js +18 -13
- package/neural-interface/public/shared/ui-skills.js +33 -2830
- package/neural-interface/public/shared/ui-styleguide.js +5 -2
- package/neural-interface/public/shared/ui-sync.js +15 -5
- package/neural-interface/public/shared/ui-terminal.js +270 -190
- package/neural-interface/public/shared/ui-tool-updates.js +6 -4
- package/neural-interface/public/shared/ui-tooltip.js +81 -51
- package/neural-interface/public/shared/ui-topright-overflow.js +233 -0
- package/neural-interface/public/shared/ui-trash.js +6 -4
- package/neural-interface/public/shared/ui-tutorial-layout.js +3 -117
- package/neural-interface/public/shared/ui-tutorial-preview.js +103 -0
- package/neural-interface/public/shared/ui-tutorial-steps.js +3 -65
- package/neural-interface/public/shared/ui-tutorial.css +47 -100
- package/neural-interface/public/shared/ui-tutorial.js +285 -509
- package/neural-interface/public/shared/ui-update.js +38 -2
- package/neural-interface/public/shared/ui-whiteboard.js +312 -59
- package/neural-interface/public/shared/ui-worker-end.js +5 -1
- package/neural-interface/public/shared/ui-workspaces.js +3 -2
- package/neural-interface/public/shared/view-variant.js +66 -0
- package/neural-interface/public/shared/whatsapp/wa-view.js +3 -3
- package/neural-interface/public/shared/whiteboard-list.js +172 -0
- package/neural-interface/public/shared/worker-end.js +10 -3
- package/neural-interface/public/shared/worker-questions.js +34 -0
- package/neural-interface/public/shared/worker-restart.js +12 -0
- package/neural-interface/public/sidepanel-session.html +2 -2
- package/neural-interface/public/variant/2d/background.js +2 -1
- package/neural-interface/public/variant/2d/context-menu.js +8 -2
- package/neural-interface/public/variant/2d/graph.js +42 -20
- package/neural-interface/public/variant/2d/hulls.js +14 -9
- package/neural-interface/public/variant/2d/lasso.js +11 -7
- package/neural-interface/public/variant/2d/main.js +32 -1
- package/neural-interface/public/variant/2d/minimap.js +11 -13
- package/neural-interface/public/variant/3d/main.js +69 -6
- package/neural-interface/public/variant/3d/map-controls.js +24 -9
- package/neural-interface/public/vendor/caveat/OFL.txt +93 -0
- package/neural-interface/public/vendor/caveat/caveat-latin-400-normal.woff2 +0 -0
- package/neural-interface/public/vendor/caveat/caveat-latin-700-normal.woff2 +0 -0
- package/neural-interface/public/vendor/caveat/caveat.css +17 -0
- package/neural-interface/public/vendor/caveat/manifest.json +12 -0
- package/neural-interface/public/vendor/yaml/LICENSE +13 -0
- package/neural-interface/public/vendor/yaml/manifest.json +4 -0
- package/neural-interface/public/vendor/yaml/yaml-2.9.1.min.js +137 -0
- package/neural-interface/scripts/build-vendor.mjs +32 -0
- package/neural-interface/server.js +4553 -2855
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/neural-interface/templates/rulesets/core.md +1 -1
- package/neural-interface/templates/rulesets/legacy-hashes.json +23 -5
- package/neural-interface/templates/rulesets/manifest.json +8 -8
- package/npm-shrinkwrap.json +34 -12
- package/package.json +17 -3
- package/postinstall.js +9 -4
- package/preuninstall.js +1 -1
- package/setup.js +97 -322
- package/skills/skill-forge/SKILL.md +177 -0
- package/skills/skill-forge/evals/evals.json +54 -0
- package/skills/skill-forge/references/package.md +105 -0
- package/skills/skill-forge/references/review-and-recovery.md +63 -0
- package/skills/skill-forge/references/runtime-profiles.md +20 -0
- package/skills/skill-forge/references/sources-and-capabilities.md +51 -0
- package/skills/synabun/SKILL.md +10 -7
- package/skills/synabun/modules/audit.md +1 -5
- package/skills/synabun/modules/changelog.md +1 -5
- package/skills/synabun/modules/idea.md +1 -1
- package/skills/synabun/modules/memorize.md +6 -9
- package/skills/synabun/modules/schedule.md +6 -6
- package/mcp-server/dist/services/profiles.d.ts +0 -120
- package/mcp-server/dist/services/profiles.d.ts.map +0 -1
- package/mcp-server/dist/services/profiles.js +0 -387
- package/mcp-server/dist/services/profiles.js.map +0 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +0 -97
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +0 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js +0 -228
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +0 -1
- package/mcp-server/dist/tools/leonardo.d.ts +0 -13
- package/mcp-server/dist/tools/leonardo.d.ts.map +0 -1
- package/mcp-server/dist/tools/leonardo.js +0 -21
- package/mcp-server/dist/tools/leonardo.js.map +0 -1
- package/mcp-server/dist/tools/profile.d.ts +0 -17
- package/mcp-server/dist/tools/profile.d.ts.map +0 -1
- package/mcp-server/dist/tools/profile.js +0 -114
- package/mcp-server/dist/tools/profile.js.map +0 -1
- package/mcp-server/src/services/profiles.ts +0 -428
- package/mcp-server/src/tools/leonardo-browser-tools.ts +0 -291
- package/mcp-server/src/tools/leonardo.ts +0 -30
- package/mcp-server/src/tools/profile.ts +0 -122
- package/neural-interface/lib/assistant-brains/opencode-browser-policy.js +0 -47
- package/neural-interface/lib/assistant-brains/opencode-route-gate.js +0 -62
- package/neural-interface/lib/mcp-profile-servers.js +0 -120
- package/neural-interface/public/shared/ui-tutorial-draw.js +0 -311
- package/skills/leonardo/SKILL.md +0 -168
- package/skills/leonardo/icon.svg +0 -1
- package/skills/leonardo/modules/browser-guide.md +0 -378
- package/skills/leonardo/modules/image-prompter.md +0 -283
- package/skills/leonardo/modules/model-advisor.md +0 -100
- package/skills/leonardo/modules/prompt-library.md +0 -110
- package/skills/leonardo/modules/style-guide.md +0 -186
- package/skills/leonardo/modules/video-prompter.md +0 -317
- /package/neural-interface/templates/rulesets/{gemini.md → antigravity.md} +0 -0
|
@@ -18,6 +18,7 @@ let _lassoStart = null;
|
|
|
18
18
|
let _lassoEnd = null;
|
|
19
19
|
let _lassoCanvas = null;
|
|
20
20
|
let _lassoCtx = null;
|
|
21
|
+
let _lassoBox = { left: 0, top: 0 };
|
|
21
22
|
|
|
22
23
|
// ═══════════════════════════════════════════
|
|
23
24
|
// INIT
|
|
@@ -32,8 +33,9 @@ export function initLasso(_graphInstance) {
|
|
|
32
33
|
if (!_lassoCanvas) return;
|
|
33
34
|
_lassoCtx = _lassoCanvas.getContext('2d');
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
_onResize();
|
|
37
|
+
// It fills the app frame like the graph: an explorer opening resizes it without a window resize.
|
|
38
|
+
if (typeof ResizeObserver === 'function') new ResizeObserver(_onResize).observe(_lassoCanvas);
|
|
37
39
|
|
|
38
40
|
document.addEventListener('pointerdown', _onPointerDown);
|
|
39
41
|
document.addEventListener('pointermove', _onPointerMove);
|
|
@@ -50,6 +52,7 @@ function _onPointerDown(e) {
|
|
|
50
52
|
// #wb-root: Shift+drag on the focus-mode whiteboard is its own marquee selection
|
|
51
53
|
if (e.target.closest('#title-bar, #category-sidebar, .detail-card, #minimap, .glass, #wb-root')) return;
|
|
52
54
|
_lassoActive = true;
|
|
55
|
+
_lassoBox = _lassoCanvas.getBoundingClientRect();
|
|
53
56
|
_lassoStart = { x: e.clientX, y: e.clientY };
|
|
54
57
|
_lassoEnd = { x: e.clientX, y: e.clientY };
|
|
55
58
|
e.preventDefault();
|
|
@@ -59,10 +62,10 @@ function _onPointerMove(e) {
|
|
|
59
62
|
if (!_lassoActive) return;
|
|
60
63
|
_lassoEnd = { x: e.clientX, y: e.clientY };
|
|
61
64
|
|
|
62
|
-
// Draw selection rect
|
|
65
|
+
// Draw selection rect (client coordinates → the canvas's own: it sits in the app frame)
|
|
63
66
|
_lassoCtx.clearRect(0, 0, _lassoCanvas.width, _lassoCanvas.height);
|
|
64
|
-
const x = Math.min(_lassoStart.x, _lassoEnd.x);
|
|
65
|
-
const y = Math.min(_lassoStart.y, _lassoEnd.y);
|
|
67
|
+
const x = Math.min(_lassoStart.x, _lassoEnd.x) - _lassoBox.left;
|
|
68
|
+
const y = Math.min(_lassoStart.y, _lassoEnd.y) - _lassoBox.top;
|
|
66
69
|
const w = Math.abs(_lassoEnd.x - _lassoStart.x);
|
|
67
70
|
const h = Math.abs(_lassoEnd.y - _lassoStart.y);
|
|
68
71
|
_lassoCtx.strokeStyle = 'rgba(100, 180, 255, 0.6)';
|
|
@@ -120,8 +123,9 @@ export function clearLasso() {
|
|
|
120
123
|
|
|
121
124
|
function _onResize() {
|
|
122
125
|
if (!_lassoCanvas) return;
|
|
123
|
-
|
|
124
|
-
_lassoCanvas.
|
|
126
|
+
const box = _lassoCanvas.getBoundingClientRect();
|
|
127
|
+
_lassoCanvas.width = Math.round(box.width || window.innerWidth);
|
|
128
|
+
_lassoCanvas.height = Math.round(box.height || window.innerHeight);
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// ═══════════════════════════════════════════
|
|
2
|
+
// DEPRECATED: 2D memory map retained for compatibility; no supported page boots this entry point.
|
|
2
3
|
// SynaBun Neural Interface — 2D Variant Entry Point
|
|
3
4
|
// ═══════════════════════════════════════════
|
|
4
5
|
//
|
|
@@ -24,7 +25,7 @@ import { initPanelSystem, initPinToggle, clampPanelsToViewport } from '../../sha
|
|
|
24
25
|
import { initLoading, showLoadingError, hideLoading, rememberHealth } from '../../shared/ui-loading.js';
|
|
25
26
|
import { initNavbar } from '../../shared/ui-navbar.js';
|
|
26
27
|
import { initMenubar } from '../../shared/ui-menubar.js';
|
|
27
|
-
import { initSearch } from '../../shared/ui-search.js';
|
|
28
|
+
import { initSearch, clearSearch } from '../../shared/ui-search.js';
|
|
28
29
|
import { buildCategorySidebar, initSidebar, loadCategories } from '../../shared/ui-sidebar.js';
|
|
29
30
|
import { openMemoryCard, restoreOpenCards, initDetailPanel, setDetailCallbacks } from '../../shared/ui-detail.js';
|
|
30
31
|
import { initSettings, restoreInterfaceConfig, restoreSkin, loadIfaceConfig } from '../../shared/ui-settings.js';
|
|
@@ -60,6 +61,7 @@ import { initAutomationStudio } from '../../shared/ui-automation-studio.js';
|
|
|
60
61
|
import { initSchedulesStudio } from '../../shared/ui-schedules-studio.js';
|
|
61
62
|
import { initNativeLoopRouter } from '../../shared/ui-native-loop-router.js';
|
|
62
63
|
import { initCommandRunner } from '../../shared/ui-command-runner.js';
|
|
64
|
+
import { initAppContextMenu, registerContextMenuArea } from '../../shared/ui-context-menu.js';
|
|
63
65
|
import { stopBackground } from './background.js';
|
|
64
66
|
import { initMinimap, drawMinimap, toggleMinimap, isMinimapVisible, forceHideMinimap, restoreMinimap } from './minimap.js';
|
|
65
67
|
import { initLasso, clearLasso } from './lasso.js';
|
|
@@ -258,6 +260,34 @@ on('layout:frame', () => {
|
|
|
258
260
|
const g = getGraph();
|
|
259
261
|
if (g) g.zoomToFit(400, 60);
|
|
260
262
|
});
|
|
263
|
+
// The 3D map's Frame whole map key (H by default) fits the graph here: the same function as a double-click on its empty space.
|
|
264
|
+
registerAction('map-frame-all', () => emit('layout:frame'));
|
|
265
|
+
|
|
266
|
+
// The app's right-click menu on the graph's empty space and the minimap (a card keeps its own menu, graph.js):
|
|
267
|
+
// the graph's rows, each through what the page already does (View › Minimap / Region Glow, the navbar's 3D link).
|
|
268
|
+
registerContextMenuArea({
|
|
269
|
+
id: 'graph-2d',
|
|
270
|
+
match(el) {
|
|
271
|
+
if (!el?.closest?.('#canvas-main, #minimap')) return null;
|
|
272
|
+
return {
|
|
273
|
+
kind: 'map',
|
|
274
|
+
map: {
|
|
275
|
+
variant: '2d',
|
|
276
|
+
options: { minimap: isMinimapVisible(), regionGlow: gfx.regionGlowOpacity > 0 },
|
|
277
|
+
searching: !!state.searchResults,
|
|
278
|
+
selected: state.multiSelected.size > 0,
|
|
279
|
+
label: null,
|
|
280
|
+
},
|
|
281
|
+
act: {
|
|
282
|
+
frameAll: () => emit('layout:frame'),
|
|
283
|
+
toggleOption: (key) => document.getElementById(key === 'minimap' ? 'menu-minimap' : 'menu-region-glow')?.click(),
|
|
284
|
+
clearSearch: () => clearSearch(),
|
|
285
|
+
clearSelection: () => clearMultiSelect(),
|
|
286
|
+
switchView: () => document.getElementById('nav-3d-link')?.click(), // keeps the selected memory, as the navbar does
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
},
|
|
290
|
+
});
|
|
261
291
|
|
|
262
292
|
// Stats update
|
|
263
293
|
on('stats-changed', () => {
|
|
@@ -466,6 +496,7 @@ initWhiteboard();
|
|
|
466
496
|
initCostWidget();
|
|
467
497
|
initGames();
|
|
468
498
|
initTutorial();
|
|
499
|
+
initAppContextMenu(); // a graph card keeps its own menu (context-menu.js); everything else gets the app's
|
|
469
500
|
|
|
470
501
|
// View switch handler
|
|
471
502
|
{
|
|
@@ -10,6 +10,7 @@ import { storage } from '../../shared/storage.js';
|
|
|
10
10
|
import { catColor } from '../../shared/colors.js';
|
|
11
11
|
import { getViewport, getAllCards, getGraph } from './graph.js';
|
|
12
12
|
import { CARD_W, CARD_H } from './layout.js';
|
|
13
|
+
import { clampToFrame } from '../../shared/app-frame.js';
|
|
13
14
|
|
|
14
15
|
const $ = (id) => document.getElementById(id);
|
|
15
16
|
|
|
@@ -125,13 +126,15 @@ export function drawMinimap() {
|
|
|
125
126
|
ctx.fill();
|
|
126
127
|
}
|
|
127
128
|
|
|
128
|
-
// Draw viewport rectangle
|
|
129
|
+
// Draw viewport rectangle: the main canvas's buffer (the app frame's size × DPR, the offsets' unit)
|
|
129
130
|
const vp = getViewport();
|
|
130
131
|
const dpr = vp.dpr || 1;
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
const
|
|
132
|
+
const bufW = vp.width || window.innerWidth * dpr;
|
|
133
|
+
const bufH = vp.height || window.innerHeight * dpr;
|
|
134
|
+
const vpWorldCenterX = (bufW / 2 - vp.offsetX) / vp.scale;
|
|
135
|
+
const vpWorldCenterY = (bufH / 2 - vp.offsetY) / vp.scale;
|
|
136
|
+
const vpW = bufW / vp.scale;
|
|
137
|
+
const vpH = bufH / vp.scale;
|
|
135
138
|
const vpX = (vpWorldCenterX - vpW / 2 - minX) * scale + offsetX;
|
|
136
139
|
const vpY = (vpWorldCenterY - vpH / 2 - minY) * scale + offsetY;
|
|
137
140
|
ctx.strokeStyle = 'rgba(255,255,255,0.5)';
|
|
@@ -210,14 +213,10 @@ function _onDragMove(e) {
|
|
|
210
213
|
const newLeft = _dragStartLeft + dx;
|
|
211
214
|
const newTop = _dragStartTop + dy;
|
|
212
215
|
|
|
213
|
-
// Clamp to
|
|
214
|
-
const vw = window.innerWidth;
|
|
215
|
-
const vh = window.innerHeight;
|
|
216
|
+
// Clamp to the app frame
|
|
216
217
|
const mw = _minimapEl.offsetWidth;
|
|
217
218
|
const mh = _minimapEl.offsetHeight;
|
|
218
|
-
|
|
219
|
-
const clampedLeft = Math.max(0, Math.min(newLeft, vw - mw));
|
|
220
|
-
const clampedTop = Math.max(0, Math.min(newTop, vh - mh));
|
|
219
|
+
const { x: clampedLeft, y: clampedTop } = clampToFrame(newLeft, newTop, mw, mh);
|
|
221
220
|
|
|
222
221
|
// Switch from right/bottom positioning to left/top for drag
|
|
223
222
|
_minimapEl.style.right = 'auto';
|
|
@@ -264,8 +263,7 @@ function _restorePosition() {
|
|
|
264
263
|
|
|
265
264
|
const mw = _minimapEl.offsetWidth;
|
|
266
265
|
const mh = _minimapEl.offsetHeight;
|
|
267
|
-
const clampedLeft =
|
|
268
|
-
const clampedTop = Math.max(0, Math.min(top, window.innerHeight - mh));
|
|
266
|
+
const { x: clampedLeft, y: clampedTop } = clampToFrame(left, top, mw, mh);
|
|
269
267
|
|
|
270
268
|
_minimapEl.style.right = 'auto';
|
|
271
269
|
_minimapEl.style.bottom = 'auto';
|
|
@@ -16,6 +16,7 @@ import { registerVariant, registerHelpSection } from '../../shared/registry.js';
|
|
|
16
16
|
import { normalizeNodes } from '../../shared/utils.js';
|
|
17
17
|
import { injectSharedHTML } from '../../shared/html-shell.js';
|
|
18
18
|
import { KEYS } from '../../shared/constants.js';
|
|
19
|
+
import { migrateViewPreferences, normalizeViewUrl } from '../../shared/view-variant.js';
|
|
19
20
|
import { initI18n, t } from '../../shared/i18n.js';
|
|
20
21
|
|
|
21
22
|
// ── Shared UI modules (side-effect: each registers its own event listeners) ──
|
|
@@ -24,7 +25,7 @@ import { initPanelSystem, initPinToggle, clampPanelsToViewport } from '../../sha
|
|
|
24
25
|
import { initLoading, showLoadingError, hideLoading, rememberHealth } from '../../shared/ui-loading.js';
|
|
25
26
|
import { initNavbar } from '../../shared/ui-navbar.js';
|
|
26
27
|
import { initMenubar, closeMenubar } from '../../shared/ui-menubar.js';
|
|
27
|
-
import { initSearch } from '../../shared/ui-search.js';
|
|
28
|
+
import { initSearch, clearSearch } from '../../shared/ui-search.js';
|
|
28
29
|
import { buildCategorySidebar, initSidebar, loadCategories } from '../../shared/ui-sidebar.js';
|
|
29
30
|
import { openMemoryCard, restoreOpenCards, initDetailPanel, setDetailCallbacks } from '../../shared/ui-detail.js';
|
|
30
31
|
import { initSettings, restoreInterfaceConfig, restoreSkin, loadIfaceConfig } from '../../shared/ui-settings.js';
|
|
@@ -55,6 +56,7 @@ import { initAutomationStudio } from '../../shared/ui-automation-studio.js';
|
|
|
55
56
|
import { initSchedulesStudio } from '../../shared/ui-schedules-studio.js';
|
|
56
57
|
import { initNativeLoopRouter } from '../../shared/ui-native-loop-router.js';
|
|
57
58
|
import { initCommandRunner } from '../../shared/ui-command-runner.js';
|
|
59
|
+
import { initAppContextMenu, openAppContextMenu, registerContextMenuArea } from '../../shared/ui-context-menu.js';
|
|
58
60
|
|
|
59
61
|
// ── Memory map (three.js itself loads only when the map is shown) ──
|
|
60
62
|
import { createLabelLayer } from './map-labels.js';
|
|
@@ -67,7 +69,14 @@ import { fetchMap, requestRebuild } from './map-data.js';
|
|
|
67
69
|
// 1. REGISTER VARIANT
|
|
68
70
|
// ═══════════════════════════════════════════
|
|
69
71
|
|
|
70
|
-
|
|
72
|
+
// storage.js has hydrated before this runs. Rewrite legacy choices once, before any UI is built.
|
|
73
|
+
let localPreferences;
|
|
74
|
+
try { if (storage.persists !== false) localPreferences = window.localStorage; } catch {}
|
|
75
|
+
registerVariant({ variant: migrateViewPreferences(storage, localPreferences), capabilities: ['memory-map'] });
|
|
76
|
+
const canonicalUrl = normalizeViewUrl(window.location.href);
|
|
77
|
+
if (canonicalUrl !== window.location.pathname + window.location.search + window.location.hash) {
|
|
78
|
+
window.history.replaceState(window.history.state, '', canonicalUrl);
|
|
79
|
+
}
|
|
71
80
|
|
|
72
81
|
|
|
73
82
|
// ═══════════════════════════════════════════
|
|
@@ -154,7 +163,7 @@ function ensureMap() {
|
|
|
154
163
|
});
|
|
155
164
|
labels.resize(renderer.size.width, renderer.size.height);
|
|
156
165
|
v = createMapView({ renderer, labels, statusEl: statusPill(container), onMissingNodes: (ids) => addMissingMemories(ids) });
|
|
157
|
-
initMapControls({ renderer, view: v, labels });
|
|
166
|
+
initMapControls({ renderer, view: v, labels, onContextMenu: openMapMenu });
|
|
158
167
|
view = v;
|
|
159
168
|
applyRunState();
|
|
160
169
|
syncMapMenuChecks();
|
|
@@ -387,7 +396,60 @@ registerAction('map-frame-all', () => view?.frameAll());
|
|
|
387
396
|
|
|
388
397
|
|
|
389
398
|
// ═══════════════════════════════════════════
|
|
390
|
-
// 8.
|
|
399
|
+
// 8. CONTEXT MENU (shared/ui-context-menu.js)
|
|
400
|
+
// ═══════════════════════════════════════════
|
|
401
|
+
// A right-click (no drag) on the map opens the app's menu with the map's part on top: a memory, a name on the
|
|
402
|
+
// map, or its empty space. The same functions as the map's clicks and Apps › Map.
|
|
403
|
+
|
|
404
|
+
const mapActions = {
|
|
405
|
+
frameAll: () => view?.frameAll(),
|
|
406
|
+
toggleOption: (key) => { if (!view) return; view.setOption(key, !view.options[key]); syncMapMenuChecks(); },
|
|
407
|
+
toggleSelect: (id) => view?.toggleMulti(id),
|
|
408
|
+
flyToIsland: (name) => view?.flyToIsland(name),
|
|
409
|
+
clearSearch: () => clearSearch(),
|
|
410
|
+
clearSelection: () => view?.clearSelection(),
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
/** The map's part of the menu for what a press resolved to (map-controls.js resolve), null before the map exists. */
|
|
414
|
+
function mapMenuArea(hit) {
|
|
415
|
+
if (!view?.map) return null;
|
|
416
|
+
if (hit && hit.i >= 0) {
|
|
417
|
+
const d = view.describe(hit.i);
|
|
418
|
+
if (d) {
|
|
419
|
+
const island = view.map.islands[view.map.islandOf[hit.i]]?.name || d.category;
|
|
420
|
+
return {
|
|
421
|
+
kind: 'memory',
|
|
422
|
+
memory: { id: d.id, onMap: true, island, selected: state.multiSelected.has(d.id) },
|
|
423
|
+
act: { ...mapActions, openMemory: () => view.clickPoint(hit.i) },
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const label = hit?.label && hit.label.type !== 'memory' ? hit.label : null;
|
|
428
|
+
return {
|
|
429
|
+
kind: 'map',
|
|
430
|
+
map: { options: view.options, searching: view.searching, selected: !!view.selectedId, label, variant: '3d' },
|
|
431
|
+
act: { ...mapActions, flyToLabel: () => label && view.clickLabel(label) },
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
function openMapMenu({ clientX, clientY, hit }) {
|
|
436
|
+
openAppContextMenu({ x: clientX, y: clientY, target: renderer?.canvas || null, area: mapMenuArea(hit),
|
|
437
|
+
returnFocus: renderer?.canvas || null });
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// From the keyboard (ContextMenu key, Shift+F10) on the focused map: the selected memory, else the map.
|
|
441
|
+
registerContextMenuArea({
|
|
442
|
+
id: 'memory-map',
|
|
443
|
+
match(el) {
|
|
444
|
+
if (!renderer || el !== renderer.canvas) return null;
|
|
445
|
+
const i = view?.selectedId ? view.map?.indexOf.get(view.selectedId) : undefined;
|
|
446
|
+
return mapMenuArea(i === undefined ? null : { i, label: null });
|
|
447
|
+
},
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
// ═══════════════════════════════════════════
|
|
452
|
+
// 9. BOOT
|
|
391
453
|
// ═══════════════════════════════════════════
|
|
392
454
|
|
|
393
455
|
async function boot() {
|
|
@@ -452,7 +514,7 @@ async function boot() {
|
|
|
452
514
|
emit('data-loaded', data);
|
|
453
515
|
restoreOpenCards();
|
|
454
516
|
|
|
455
|
-
//
|
|
517
|
+
// Recover a selected memory handed over by a legacy 2D tab
|
|
456
518
|
const switchNodeId = sessionStorage.getItem('neural-selected-node-switch');
|
|
457
519
|
if (switchNodeId) {
|
|
458
520
|
sessionStorage.removeItem('neural-selected-node-switch');
|
|
@@ -482,7 +544,7 @@ async function boot() {
|
|
|
482
544
|
|
|
483
545
|
|
|
484
546
|
// ═══════════════════════════════════════════
|
|
485
|
-
//
|
|
547
|
+
// 10. INIT ALL SHARED UI SYSTEMS
|
|
486
548
|
// ═══════════════════════════════════════════
|
|
487
549
|
|
|
488
550
|
initLoading({ onInit: boot });
|
|
@@ -522,6 +584,7 @@ initWhiteboard();
|
|
|
522
584
|
initCostWidget();
|
|
523
585
|
initGames();
|
|
524
586
|
initTutorial();
|
|
587
|
+
initAppContextMenu();
|
|
525
588
|
wireMapMenu();
|
|
526
589
|
|
|
527
590
|
window.addEventListener('resize', () => clampPanelsToViewport());
|
|
@@ -2,17 +2,21 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Hover → tooltip, click → open the memory, ⌘/Ctrl-click → multi-select,
|
|
4
4
|
// click a label → fly to that island, double-click empty space → frame all,
|
|
5
|
-
// Esc → clear the search, then the selection
|
|
5
|
+
// Esc → clear the search, then the selection, right-click (no drag) → the
|
|
6
|
+
// app's context menu for what is under the pointer. Orbit / pan / zoom and the
|
|
6
7
|
// arrow keys belong to OrbitControls (arrows only while the map has focus, so
|
|
7
|
-
// the app's single-key shortcuts keep working everywhere else).
|
|
8
|
+
// the app's single-key shortcuts keep working everywhere else). OrbitControls
|
|
9
|
+
// also cancels the browser's menu on the canvas, so a right-drag only pans:
|
|
10
|
+
// the menu opens when the right button comes up where it went down.
|
|
8
11
|
|
|
9
12
|
import { isGraphPointerActivity } from '../../shared/graph-activity.js';
|
|
10
13
|
import { clearSearch } from '../../shared/ui-search.js';
|
|
11
14
|
import { escapeHtml } from '../../shared/utils.js';
|
|
15
|
+
import { frameRect } from '../../shared/app-frame.js';
|
|
12
16
|
|
|
13
17
|
const CLICK_SLOP = 5; // px a press may move and still count as a click
|
|
14
18
|
|
|
15
|
-
export function initMapControls({ renderer, view, labels }) {
|
|
19
|
+
export function initMapControls({ renderer, view, labels, onContextMenu = null }) {
|
|
16
20
|
const canvas = renderer.canvas;
|
|
17
21
|
const tip = document.getElementById('tooltip');
|
|
18
22
|
const tipCategory = document.getElementById('tooltip-category');
|
|
@@ -58,10 +62,12 @@ export function initMapControls({ renderer, view, labels }) {
|
|
|
58
62
|
}
|
|
59
63
|
const pad = 16;
|
|
60
64
|
const w = tip.offsetWidth || 260, h = tip.offsetHeight || 80;
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// Inside the app frame, where the map is
|
|
66
|
+
const f = frameRect();
|
|
67
|
+
const x = Math.min(e.clientX + pad, f.right - w - 8);
|
|
68
|
+
const y = e.clientY + pad + h > f.bottom - 8 ? e.clientY - h - pad : e.clientY + pad;
|
|
69
|
+
tip.style.left = `${Math.max(f.left + 8, x)}px`;
|
|
70
|
+
tip.style.top = `${Math.max(f.top + 8, y)}px`;
|
|
65
71
|
tip.classList.add('visible');
|
|
66
72
|
}
|
|
67
73
|
|
|
@@ -107,8 +113,17 @@ export function initMapControls({ renderer, view, labels }) {
|
|
|
107
113
|
const wasDown = canvasDown;
|
|
108
114
|
down = null;
|
|
109
115
|
canvasDown = false;
|
|
110
|
-
if (!d || !wasDown
|
|
111
|
-
|
|
116
|
+
if (!d || !wasDown) return;
|
|
117
|
+
const still = Math.hypot(e.clientX - d.x, e.clientY - d.y) <= CLICK_SLOP; // else a drag, not a click
|
|
118
|
+
if (d.button === 2 && e.button === 2) {
|
|
119
|
+
if (still && onContextMenu) {
|
|
120
|
+
const [x, y] = local(e);
|
|
121
|
+
hideTip();
|
|
122
|
+
onContextMenu({ clientX: e.clientX, clientY: e.clientY, hit: resolve(x, y) });
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (d.button !== 0 || e.button !== 0 || !still) return;
|
|
112
127
|
const [x, y] = local(e);
|
|
113
128
|
const { i, label } = resolve(x, y);
|
|
114
129
|
if (i >= 0) view.clickPoint(i, { additive: e.metaKey || e.ctrlKey });
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2014 The Caveat Project Authors (https://github.com/googlefonts/caveat)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* Caveat, the handwriting of the whiteboard and the Workspace tour, served from SynaBun
|
|
2
|
+
itself (no font CDN). Latin subset, weights 400 and 700, from @fontsource/caveat 5.3.0.
|
|
3
|
+
SIL Open Font License 1.1: OFL.txt in this folder. */
|
|
4
|
+
@font-face {
|
|
5
|
+
font-family: 'Caveat';
|
|
6
|
+
font-style: normal;
|
|
7
|
+
font-display: swap;
|
|
8
|
+
font-weight: 400;
|
|
9
|
+
src: url(./caveat-latin-400-normal.woff2) format('woff2');
|
|
10
|
+
}
|
|
11
|
+
@font-face {
|
|
12
|
+
font-family: 'Caveat';
|
|
13
|
+
font-style: normal;
|
|
14
|
+
font-display: swap;
|
|
15
|
+
font-weight: 700;
|
|
16
|
+
src: url(./caveat-latin-700-normal.woff2) format('woff2');
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Caveat",
|
|
3
|
+
"version": "5.3.0",
|
|
4
|
+
"source": "@fontsource/caveat 5.3.0 (npm), files/caveat-latin-400-normal.woff2 and files/caveat-latin-700-normal.woff2",
|
|
5
|
+
"license": "OFL-1.1",
|
|
6
|
+
"licenseFile": "OFL.txt",
|
|
7
|
+
"copyright": "Copyright 2014 The Caveat Project Authors (https://github.com/googlefonts/caveat)",
|
|
8
|
+
"files": {
|
|
9
|
+
"caveat-latin-400-normal.woff2": "d0b7b931b8980049327e8f8f9ac264617c8200b8422d62e886473d3d9527bad3",
|
|
10
|
+
"caveat-latin-700-normal.woff2": "15f9638095ad5ec9816f93d66805ca1a87e71dc5a76b596bfce1c78d4704c405"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright Eemeli Aro <eemeli@gmail.com>
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
4
|
+
with or without fee is hereby granted, provided that the above copyright notice
|
|
5
|
+
and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
8
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
9
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
10
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
11
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
12
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
13
|
+
THIS SOFTWARE.
|