synabun 2.1.0 → 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 +121 -0
- package/README.md +1 -1
- package/docs/whatsapp.md +11 -11
- package/lib/client-config-repair.js +13 -9
- package/lib/external-tools.js +6 -5
- package/lib/update-snapshot.js +77 -3
- package/lib/virustotal.mjs +12 -1
- package/mcp-server/dist/index.js +1 -1
- package/mcp-server/dist/index.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/identity.d.ts +2 -2
- package/mcp-server/dist/services/identity.js +2 -2
- 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 +2 -1
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
- package/mcp-server/dist/services/server-instructions.js +2 -1
- package/mcp-server/dist/services/server-instructions.js.map +1 -1
- package/mcp-server/dist/services/tool-catalog.js +1 -1
- package/mcp-server/dist/services/tool-catalog.js.map +1 -1
- package/mcp-server/dist/services/tool-list.d.ts +1 -1
- package/mcp-server/dist/services/tool-list.d.ts.map +1 -1
- package/mcp-server/dist/services/tool-runtime.d.ts +2 -2
- package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -1
- package/mcp-server/dist/services/tool-runtime.js +1 -1
- package/mcp-server/dist/services/tool-runtime.js.map +1 -1
- 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/tools/agents.d.ts +8 -8
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +10 -9
- package/mcp-server/dist/tools/agents.js.map +1 -1
- 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/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 +8 -8
- package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/skill-tools.js +11 -8
- package/mcp-server/dist/tools/skill-tools.js.map +1 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/mcp-server/src/index.ts +1 -1
- package/mcp-server/src/services/budget-judgments.ts +5 -3
- package/mcp-server/src/services/identity.ts +2 -2
- package/mcp-server/src/services/memory-sessions.ts +24 -3
- package/mcp-server/src/services/neural-interface.ts +2 -1
- package/mcp-server/src/services/server-instructions.ts +2 -1
- package/mcp-server/src/services/tool-catalog.ts +1 -1
- package/mcp-server/src/services/tool-list.ts +1 -1
- package/mcp-server/src/services/tool-runtime.ts +2 -2
- package/mcp-server/src/services/typesafe-config.ts +1 -1
- package/mcp-server/src/tools/agents.ts +10 -9
- package/mcp-server/src/tools/choice.ts +17 -12
- package/mcp-server/src/tools/git-tools.ts +2 -2
- package/mcp-server/src/tools/morelogin.ts +6 -4
- package/mcp-server/src/tools/skill-tools.ts +11 -8
- package/neural-interface/i18n/en.json +501 -39
- package/neural-interface/i18n/pt-BR.json +501 -39
- 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 +1 -0
- package/neural-interface/lib/assistant-brains/antigravity.js +423 -0
- 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 +76 -9
- package/neural-interface/lib/assistant-config.js +6 -3
- package/neural-interface/lib/assistant-dispatch.js +207 -49
- package/neural-interface/lib/assistant-envelope.js +153 -1
- 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 +16 -11
- package/neural-interface/lib/assistant-plan-permissions.js +15 -0
- package/neural-interface/lib/assistant-router.js +237 -35
- package/neural-interface/lib/assistant-runtime.js +158 -12
- package/neural-interface/lib/assistant-task-prompt.js +10 -8
- package/neural-interface/lib/assistant-tools.js +2 -2
- package/neural-interface/lib/assistant-usage.js +29 -0
- package/neural-interface/lib/backup-service.js +6 -1
- package/neural-interface/lib/browser-guard-cdp.js +5 -4
- package/neural-interface/lib/browser-network-guard.js +274 -82
- package/neural-interface/lib/browser-tool-policy.js +12 -7
- package/neural-interface/lib/claude-agent-bridge.js +7 -0
- package/neural-interface/lib/claude-history-cache.js +210 -0
- package/neural-interface/lib/claude-model-catalog.js +5 -1
- package/neural-interface/lib/cli-install-api.js +1 -1
- package/neural-interface/lib/cli-install.js +160 -31
- package/neural-interface/lib/cli-resolver.js +9 -2
- package/neural-interface/lib/cli-update-planner.js +25 -15
- package/neural-interface/lib/codex-rollout-reader.js +52 -0
- package/neural-interface/lib/codex-worker-app-server.js +25 -6
- package/neural-interface/lib/editor-git-api.js +3 -20
- package/neural-interface/lib/exec-loop-command.js +9 -2
- 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/mcp-client-config.js +37 -6
- package/neural-interface/lib/mcp-external-servers.js +13 -4
- package/neural-interface/lib/mcp-installer.js +2 -1
- package/neural-interface/lib/memory-session-capture.js +17 -3
- package/neural-interface/lib/morelogin.js +147 -25
- package/neural-interface/lib/native-loop-providers.js +420 -21
- package/neural-interface/lib/native-loop-runtime.js +23 -2
- package/neural-interface/lib/opencode-native-boundary.js +11 -2
- package/neural-interface/lib/owner-authority.js +1 -1
- package/neural-interface/lib/path-confine.js +12 -9
- package/neural-interface/lib/peer-identity.js +32 -2
- 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 +3 -0
- package/neural-interface/lib/rulesets/api.js +6 -5
- package/neural-interface/lib/rulesets/fs-safe.js +1 -1
- package/neural-interface/lib/rulesets/installer.js +89 -10
- package/neural-interface/lib/rulesets/render.js +1 -1
- package/neural-interface/lib/session-cache-builder.js +64 -1
- package/neural-interface/lib/skills/catalog.js +5 -1
- package/neural-interface/lib/skills/creation-brief.js +1 -1
- package/neural-interface/lib/skills/creation-sources.js +19 -1
- package/neural-interface/lib/skills/deploy.js +9 -4
- package/neural-interface/lib/skills/draft-confinement.js +3 -1
- package/neural-interface/lib/skills/eval-confinement.js +3 -1
- package/neural-interface/lib/skills/eval-trace.js +16 -0
- package/neural-interface/lib/skills/export.js +5 -2
- package/neural-interface/lib/skills/known-bridge-digests.json +58 -4
- package/neural-interface/lib/skills/ownership.js +1 -1
- package/neural-interface/lib/skills/roots.js +10 -3
- package/neural-interface/lib/skills/runtime-checks.js +6 -3
- package/neural-interface/lib/skills/service.js +15 -7
- package/neural-interface/lib/skills/telemetry.js +6 -0
- package/neural-interface/lib/synabun-version.js +1 -1
- package/neural-interface/lib/system-activity.js +1 -1
- package/neural-interface/lib/whatsapp/brain.js +7 -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 +77 -1
- package/neural-interface/lib/worker-question.js +74 -0
- package/neural-interface/lib/worker-resume.js +13 -4
- package/neural-interface/lib/worker-sandbox.js +46 -16
- package/neural-interface/package-lock.json +18 -2
- package/neural-interface/package.json +2 -1
- package/neural-interface/public/onboarding.html +1 -1
- package/neural-interface/public/shared/agent-runtime-options.js +89 -11
- 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 +4 -4
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +3 -4
- package/neural-interface/public/shared/assistant/asst-api.js +1 -1
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +56 -9
- package/neural-interface/public/shared/assistant/asst-budget.js +5 -4
- package/neural-interface/public/shared/assistant/asst-control.js +48 -0
- package/neural-interface/public/shared/assistant/asst-hosts.js +16 -7
- package/neural-interface/public/shared/assistant/asst-limit-dock.js +6 -1
- package/neural-interface/public/shared/assistant/asst-limit-wait.js +38 -5
- package/neural-interface/public/shared/assistant/asst-panel.js +45 -8
- package/neural-interface/public/shared/assistant/asst-render.js +51 -12
- package/neural-interface/public/shared/assistant/asst-route.js +237 -57
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +9 -8
- package/neural-interface/public/shared/assistant/asst-scenes.js +54 -1
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +51 -7
- package/neural-interface/public/shared/assistant/asst-slash.js +8 -2
- package/neural-interface/public/shared/assistant/asst-state.js +76 -9
- package/neural-interface/public/shared/assistant/asst-styles.js +34 -0
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +34 -7
- package/neural-interface/public/shared/assistant/asst-usage.js +2 -1
- package/neural-interface/public/shared/cdx/cdx-output.js +26 -3
- package/neural-interface/public/shared/cdx/cdx-panel.js +14 -2
- package/neural-interface/public/shared/cdx/cdx-preview.js +12 -0
- package/neural-interface/public/shared/cdx/cdx-protocol.js +11 -10
- package/neural-interface/public/shared/cdx/cdx-render.js +10 -9
- package/neural-interface/public/shared/cdx/cdx-requests.js +11 -1
- package/neural-interface/public/shared/cdx/cdx-styles.js +4 -0
- package/neural-interface/public/shared/cdx/cdx-tabs.js +75 -5
- package/neural-interface/public/shared/cli-install-controller.js +218 -0
- package/neural-interface/public/shared/cli-install-view.js +7 -4
- package/neural-interface/public/shared/cli-status.js +9 -8
- package/neural-interface/public/shared/constants.js +3 -2
- package/neural-interface/public/shared/context-menu-model.js +1 -0
- 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/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 +1 -0
- 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 +21 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +27 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +13 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +17 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +46 -3
- package/neural-interface/public/shared/provider-icons.js +4 -2
- package/neural-interface/public/shared/settings/settings-rules.js +2 -2
- package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +1 -1
- package/neural-interface/public/shared/settings/settings-skill-folders.js +2 -2
- 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-creation.js +6 -3
- package/neural-interface/public/shared/skills/ss-dialog.js +5 -2
- package/neural-interface/public/shared/skills/ss-lint.js +9 -1
- package/neural-interface/public/shared/skills/ss-profiles.js +44 -6
- package/neural-interface/public/shared/skills/ss-review-view.js +2 -2
- package/neural-interface/public/shared/skills/studio/sx-actions.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-create-ai.js +2 -1
- package/neural-interface/public/shared/skills/studio/sx-dom.js +2 -1
- 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-inspector.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-install-flow.js +9 -6
- package/neural-interface/public/shared/skills/studio/sx-install.js +20 -3
- package/neural-interface/public/shared/skills/studio/sx-library-view.js +144 -35
- package/neural-interface/public/shared/skills/studio/sx-library.js +6 -2
- package/neural-interface/public/shared/skills/studio/sx-main.js +11 -2
- package/neural-interface/public/shared/skills/studio/sx-review-view.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-subject.js +7 -6
- package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +6 -5
- package/neural-interface/public/shared/state.js +1 -1
- package/neural-interface/public/shared/streaming-markdown.js +58 -0
- package/neural-interface/public/shared/styles.css +354 -34
- package/neural-interface/public/shared/text-cache.js +29 -0
- package/neural-interface/public/shared/tool-list-picker.js +2 -2
- package/neural-interface/public/shared/tool-list-view.js +2 -2
- package/neural-interface/public/shared/topright-overflow-logic.js +54 -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 +20 -12
- package/neural-interface/public/shared/ui-claude-panel.js +299 -77
- package/neural-interface/public/shared/ui-cli-banner.js +23 -167
- 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-judgments.js +1 -1
- package/neural-interface/public/shared/ui-keybinds.js +8 -2
- package/neural-interface/public/shared/ui-link.js +3 -3
- package/neural-interface/public/shared/ui-menubar.js +2 -2
- package/neural-interface/public/shared/ui-native-loop-router.js +4 -0
- package/neural-interface/public/shared/ui-navbar.js +45 -0
- package/neural-interface/public/shared/ui-notifications.js +1 -0
- package/neural-interface/public/shared/ui-resume.js +9 -7
- package/neural-interface/public/shared/ui-schedules-studio.js +41 -10
- package/neural-interface/public/shared/ui-scroll-follow.js +16 -5
- package/neural-interface/public/shared/ui-sessions.js +22 -12
- package/neural-interface/public/shared/ui-settings.js +90 -65
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +9 -2
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -3
- package/neural-interface/public/shared/ui-sidepanel-tray.js +48 -7
- package/neural-interface/public/shared/ui-sidepanel-windows.js +3 -3
- package/neural-interface/public/shared/ui-terminal.js +146 -10
- package/neural-interface/public/shared/ui-tool-updates.js +3 -3
- package/neural-interface/public/shared/ui-tooltip.js +71 -46
- package/neural-interface/public/shared/ui-topright-overflow.js +233 -0
- package/neural-interface/public/shared/ui-whiteboard.js +1 -1
- package/neural-interface/public/shared/ui-worker-end.js +1 -1
- package/neural-interface/public/shared/whatsapp/wa-view.js +2 -2
- package/neural-interface/public/shared/worker-questions.js +34 -0
- package/neural-interface/public/sidepanel-session.html +1 -1
- package/neural-interface/server.js +644 -426
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/neural-interface/templates/rulesets/legacy-hashes.json +5 -5
- package/neural-interface/templates/rulesets/manifest.json +1 -1
- package/npm-shrinkwrap.json +18 -2
- package/package.json +2 -1
- package/skills/skill-forge/SKILL.md +4 -4
- package/skills/synabun/SKILL.md +1 -1
- package/skills/synabun/modules/schedule.md +3 -3
- /package/neural-interface/templates/rulesets/{gemini.md → antigravity.md} +0 -0
|
@@ -1799,6 +1799,12 @@
|
|
|
1799
1799
|
0 8px 20px rgba(0,0,0,0.25),
|
|
1800
1800
|
0 24px 48px rgba(0,0,0,0.18);
|
|
1801
1801
|
}
|
|
1802
|
+
html.platform-win32 .menubar-dropdown,
|
|
1803
|
+
html.platform-win32 .menubar-submenu {
|
|
1804
|
+
background: rgba(28, 28, 32, 0.98);
|
|
1805
|
+
backdrop-filter: none;
|
|
1806
|
+
-webkit-backdrop-filter: none;
|
|
1807
|
+
}
|
|
1802
1808
|
|
|
1803
1809
|
/* Arrow caret — seamless extension of the container */
|
|
1804
1810
|
.menubar-dropdown::before {
|
|
@@ -3165,7 +3171,7 @@
|
|
|
3165
3171
|
}
|
|
3166
3172
|
.kb-cli-claude { color: #D4A27F; }
|
|
3167
3173
|
.kb-cli-codex { color: #74c7a5; }
|
|
3168
|
-
.kb-cli-
|
|
3174
|
+
.kb-cli-antigravity { color: #669DF6; }
|
|
3169
3175
|
|
|
3170
3176
|
/* Keycap-style buttons */
|
|
3171
3177
|
.kb-key-btn {
|
|
@@ -4448,7 +4454,7 @@
|
|
|
4448
4454
|
|
|
4449
4455
|
/* Setup tab: provider icon accents when section expanded */
|
|
4450
4456
|
#setup-claude:not(.collapsed) .gfx-group-title .cc-provider-icon { color: #d97757; }
|
|
4451
|
-
#setup-
|
|
4457
|
+
#setup-antigravity:not(.collapsed) .gfx-group-title .cc-provider-icon { color: #4285f4; }
|
|
4452
4458
|
#setup-codex:not(.collapsed) .gfx-group-title .cc-provider-icon { color: #10a37f; }
|
|
4453
4459
|
|
|
4454
4460
|
/* Setup tab: status badge */
|
|
@@ -6118,7 +6124,8 @@
|
|
|
6118
6124
|
html.sp-resizing .claude-panel,
|
|
6119
6125
|
html.sp-resizing .codex-panel,
|
|
6120
6126
|
html.sp-resizing .ocp-panel,
|
|
6121
|
-
html.sp-resizing .ocpv2-panel
|
|
6127
|
+
html.sp-resizing .ocpv2-panel,
|
|
6128
|
+
html.sp-resizing .agy-panel {
|
|
6122
6129
|
backdrop-filter: none !important;
|
|
6123
6130
|
-webkit-backdrop-filter: none !important;
|
|
6124
6131
|
background: rgba(18, 18, 20, 0.985) !important;
|
|
@@ -6130,18 +6137,18 @@
|
|
|
6130
6137
|
top: calc(var(--navbar-height, 48px) + 20px);
|
|
6131
6138
|
right: calc(20px + var(--right-panel-width, var(--claude-panel-width, 0px)));
|
|
6132
6139
|
/* One row in the band between the left panels (Memory Explorer, File Explorer) and the right one, 20px clear of
|
|
6133
|
-
each, never over a left panel: where the band is narrower than the row, the
|
|
6134
|
-
the
|
|
6140
|
+
each, never over a left panel: where the band is narrower than the row, the lowest-priority buttons leave it
|
|
6141
|
+
for the ⋯ menu (ui-topright-overflow.js; see "Fit" below), so the row never wraps. What still reaches left of the
|
|
6135
6142
|
band (no band at all between wide panels, a dropdown that opens leftwards) is cut off at the band's edge:
|
|
6136
6143
|
nothing of the toolbar is drawn, or takes a click, over a left panel. */
|
|
6137
|
-
max-width: var(--topright-band);
|
|
6144
|
+
max-width: calc(var(--topright-band) - var(--topright-tray-inset));
|
|
6138
6145
|
min-height: 40px; /* the dock's height: the buttons and the pills stay where they are when it hides */
|
|
6139
6146
|
justify-content: flex-end;
|
|
6140
6147
|
clip-path: inset(-100vh -100vw -200vh calc(var(--sidebar-total-width, 0px) + var(--right-panel-width, var(--claude-panel-width, 0px)) + 40px + 100% - 100vw));
|
|
6141
6148
|
transition: right 0.3s cubic-bezier(0.22, 1, 0.36, 1);
|
|
6142
6149
|
z-index: 400;
|
|
6143
6150
|
display: flex;
|
|
6144
|
-
flex-wrap:
|
|
6151
|
+
flex-wrap: nowrap;
|
|
6145
6152
|
align-items: center;
|
|
6146
6153
|
gap: 6px;
|
|
6147
6154
|
font-family: inherit;
|
|
@@ -6172,6 +6179,8 @@
|
|
|
6172
6179
|
display: flex;
|
|
6173
6180
|
align-items: center;
|
|
6174
6181
|
flex-shrink: 0;
|
|
6182
|
+
/* One line, always: what does not fit the band goes into the ⋯ menu (ui-topright-overflow.js). */
|
|
6183
|
+
flex-wrap: nowrap;
|
|
6175
6184
|
gap: 2px;
|
|
6176
6185
|
overflow: visible;
|
|
6177
6186
|
background: rgba(18, 18, 22, 0.65);
|
|
@@ -6189,13 +6198,123 @@
|
|
|
6189
6198
|
box-shadow: var(--shadow-lg), var(--shadow-highlight);
|
|
6190
6199
|
}
|
|
6191
6200
|
|
|
6192
|
-
/* The tools toggle and the agent side panels: one row
|
|
6201
|
+
/* The ⋯, the tools toggle and the agent side panels: one row at the bar's right edge that never wraps. */
|
|
6193
6202
|
#topright-buttons {
|
|
6203
|
+
position: relative;
|
|
6194
6204
|
display: flex;
|
|
6195
6205
|
align-items: center;
|
|
6196
6206
|
flex-shrink: 0;
|
|
6207
|
+
flex-wrap: nowrap;
|
|
6197
6208
|
gap: 6px;
|
|
6198
|
-
min-height: 40px; /* the dock's height:
|
|
6209
|
+
min-height: 40px; /* the dock's height: the buttons stay where they are when it hides */
|
|
6210
|
+
}
|
|
6211
|
+
|
|
6212
|
+
/* ── Overflow: a button that does not fit the band leaves the row for the ⋯ menu (ui-topright-overflow.js) ── */
|
|
6213
|
+
#topright-controls .tr-overflowed {
|
|
6214
|
+
display: none !important;
|
|
6215
|
+
}
|
|
6216
|
+
#topright-overflow-btn {
|
|
6217
|
+
display: none;
|
|
6218
|
+
}
|
|
6219
|
+
#topright-controls.has-overflow #topright-overflow-btn {
|
|
6220
|
+
display: flex;
|
|
6221
|
+
}
|
|
6222
|
+
/* The menu hangs from the bar's right edge, over the session pills (z-index inside the row's stacking context),
|
|
6223
|
+
opaque like the dock's other menus since its blur cannot reach the pills. */
|
|
6224
|
+
#topright-overflow-menu {
|
|
6225
|
+
position: absolute;
|
|
6226
|
+
top: calc(100% + 6px);
|
|
6227
|
+
right: 0;
|
|
6228
|
+
z-index: 3;
|
|
6229
|
+
min-width: 200px;
|
|
6230
|
+
max-width: calc(var(--topright-band) - var(--topright-tray-inset));
|
|
6231
|
+
max-height: calc(100vh - var(--navbar-height, 48px) - 90px);
|
|
6232
|
+
overflow-y: auto;
|
|
6233
|
+
display: flex;
|
|
6234
|
+
flex-direction: column;
|
|
6235
|
+
gap: 2px;
|
|
6236
|
+
padding: 4px;
|
|
6237
|
+
box-sizing: border-box;
|
|
6238
|
+
background: rgb(18, 18, 22);
|
|
6239
|
+
border: 1px solid var(--b-subtle, rgba(255, 255, 255, 0.06));
|
|
6240
|
+
border-radius: 10px;
|
|
6241
|
+
box-shadow: var(--shadow-lg), var(--shadow-highlight);
|
|
6242
|
+
}
|
|
6243
|
+
#topright-overflow-menu[hidden] {
|
|
6244
|
+
display: none;
|
|
6245
|
+
}
|
|
6246
|
+
.topright-overflow-item {
|
|
6247
|
+
position: relative;
|
|
6248
|
+
display: flex;
|
|
6249
|
+
align-items: center;
|
|
6250
|
+
gap: 8px;
|
|
6251
|
+
width: 100%;
|
|
6252
|
+
min-height: 30px;
|
|
6253
|
+
padding: 0 10px 0 8px;
|
|
6254
|
+
background: transparent;
|
|
6255
|
+
border: none;
|
|
6256
|
+
border-radius: 5px;
|
|
6257
|
+
color: var(--t-muted);
|
|
6258
|
+
font: 400 13px/1.45 inherit;
|
|
6259
|
+
font-family: inherit;
|
|
6260
|
+
text-align: left;
|
|
6261
|
+
cursor: pointer;
|
|
6262
|
+
white-space: nowrap;
|
|
6263
|
+
}
|
|
6264
|
+
.topright-overflow-item:hover,
|
|
6265
|
+
.topright-overflow-item:focus-visible {
|
|
6266
|
+
background: rgba(255, 255, 255, 0.08);
|
|
6267
|
+
color: var(--t-bright);
|
|
6268
|
+
outline: none;
|
|
6269
|
+
}
|
|
6270
|
+
.topright-overflow-item.active {
|
|
6271
|
+
color: var(--t-bright);
|
|
6272
|
+
}
|
|
6273
|
+
.topright-overflow-item.active::before {
|
|
6274
|
+
content: '';
|
|
6275
|
+
position: absolute;
|
|
6276
|
+
left: 2px;
|
|
6277
|
+
top: 50%;
|
|
6278
|
+
transform: translateY(-50%);
|
|
6279
|
+
width: 2.5px;
|
|
6280
|
+
height: 12px;
|
|
6281
|
+
border-radius: 2px;
|
|
6282
|
+
background: var(--accent-blue);
|
|
6283
|
+
}
|
|
6284
|
+
.topright-overflow-icon {
|
|
6285
|
+
display: flex;
|
|
6286
|
+
align-items: center;
|
|
6287
|
+
justify-content: center;
|
|
6288
|
+
width: 16px;
|
|
6289
|
+
flex-shrink: 0;
|
|
6290
|
+
}
|
|
6291
|
+
.topright-overflow-icon svg {
|
|
6292
|
+
width: 14px;
|
|
6293
|
+
height: 14px;
|
|
6294
|
+
stroke: currentColor;
|
|
6295
|
+
stroke-width: 1.7;
|
|
6296
|
+
fill: none;
|
|
6297
|
+
}
|
|
6298
|
+
.topright-overflow-icon svg[fill="currentColor"] {
|
|
6299
|
+
fill: currentColor;
|
|
6300
|
+
stroke: none;
|
|
6301
|
+
}
|
|
6302
|
+
.topright-overflow-label {
|
|
6303
|
+
flex: 1;
|
|
6304
|
+
min-width: 0;
|
|
6305
|
+
overflow: hidden;
|
|
6306
|
+
text-overflow: ellipsis;
|
|
6307
|
+
}
|
|
6308
|
+
.topright-overflow-item .topright-overflow-badge {
|
|
6309
|
+
position: static;
|
|
6310
|
+
font-size: 10px;
|
|
6311
|
+
min-width: 16px;
|
|
6312
|
+
height: 16px;
|
|
6313
|
+
line-height: 16px;
|
|
6314
|
+
padding: 0 4px;
|
|
6315
|
+
border-radius: 8px;
|
|
6316
|
+
text-align: center;
|
|
6317
|
+
font-weight: 600;
|
|
6199
6318
|
}
|
|
6200
6319
|
|
|
6201
6320
|
/* Hidden by the tools toggle (#topright-tools-btn, ui-navbar.js): the buttons and the pills stay where they are. */
|
|
@@ -6203,14 +6322,82 @@
|
|
|
6203
6322
|
display: none;
|
|
6204
6323
|
}
|
|
6205
6324
|
|
|
6206
|
-
/* ──
|
|
6325
|
+
/* ── The whiteboard rail toggle (ui-navbar.js): #wb-hide-btn at the rail's foot hides the rail (#wb-toolbar,
|
|
6326
|
+
pickers included: they are its children); the SynaBun logo button (#toolbar-show-btn) above the console button
|
|
6327
|
+
(#term-peek-dock) brings it back. Shown only while the whiteboard is (#static-bg.visible, Focus Mode). The
|
|
6328
|
+
workspace toolbar and the session pills are never touched. ── */
|
|
6329
|
+
#wb-toolbar {
|
|
6330
|
+
transition: opacity 0.22s ease, translate 0.22s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0s;
|
|
6331
|
+
}
|
|
6332
|
+
#wb-toolbar.wb-rail-hidden {
|
|
6333
|
+
opacity: 0;
|
|
6334
|
+
visibility: hidden;
|
|
6335
|
+
pointer-events: none;
|
|
6336
|
+
translate: -12px 0;
|
|
6337
|
+
transition: opacity 0.22s ease, translate 0.22s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0.22s;
|
|
6338
|
+
}
|
|
6339
|
+
#toolbar-show-btn {
|
|
6340
|
+
position: fixed;
|
|
6341
|
+
left: calc(var(--sidebar-total-width, 0px) + 16px);
|
|
6342
|
+
bottom: 64px; /* directly above the console button (#term-peek-dock: 40px at bottom 16px), 8px between */
|
|
6343
|
+
z-index: 149;
|
|
6344
|
+
display: flex;
|
|
6345
|
+
align-items: center;
|
|
6346
|
+
justify-content: center;
|
|
6347
|
+
width: 40px;
|
|
6348
|
+
height: 40px;
|
|
6349
|
+
padding: 0;
|
|
6350
|
+
background: rgba(18, 18, 20, 0.85);
|
|
6351
|
+
backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6352
|
+
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6353
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
6354
|
+
border-radius: 10px;
|
|
6355
|
+
box-shadow: var(--shadow-md), var(--shadow-highlight);
|
|
6356
|
+
cursor: pointer;
|
|
6357
|
+
animation: toolbar-show-in 0.22s cubic-bezier(0.22, 1, 0.36, 1);
|
|
6358
|
+
transition: background 0.2s, border-color 0.2s;
|
|
6359
|
+
}
|
|
6360
|
+
#toolbar-show-btn[hidden],
|
|
6361
|
+
body:not(:has(#static-bg.visible)) #toolbar-show-btn,
|
|
6362
|
+
body.fe-editor-open #toolbar-show-btn {
|
|
6363
|
+
display: none;
|
|
6364
|
+
}
|
|
6365
|
+
#toolbar-show-btn img {
|
|
6366
|
+
width: 22px;
|
|
6367
|
+
height: 22px;
|
|
6368
|
+
object-fit: contain;
|
|
6369
|
+
opacity: 0.75;
|
|
6370
|
+
pointer-events: none;
|
|
6371
|
+
transition: opacity 0.2s;
|
|
6372
|
+
}
|
|
6373
|
+
#toolbar-show-btn:hover {
|
|
6374
|
+
background: rgba(24, 24, 28, 0.95);
|
|
6375
|
+
border-color: rgba(255, 255, 255, 0.16);
|
|
6376
|
+
}
|
|
6377
|
+
#toolbar-show-btn:hover img,
|
|
6378
|
+
#toolbar-show-btn:focus-visible img {
|
|
6379
|
+
opacity: 1;
|
|
6380
|
+
}
|
|
6381
|
+
#toolbar-show-btn:focus-visible {
|
|
6382
|
+
outline: 1px solid rgba(255, 255, 255, 0.4);
|
|
6383
|
+
outline-offset: 2px;
|
|
6384
|
+
}
|
|
6385
|
+
@keyframes toolbar-show-in {
|
|
6386
|
+
from { opacity: 0; transform: translateY(6px) scale(0.92); }
|
|
6387
|
+
to { opacity: 1; transform: none; }
|
|
6388
|
+
}
|
|
6389
|
+
#wb-hide-btn svg {
|
|
6390
|
+
stroke-width: 2;
|
|
6391
|
+
}
|
|
6392
|
+
|
|
6393
|
+
/* ── Fit: one row in any band, nothing out of reach, nothing over a left panel ──
|
|
6207
6394
|
--topright-row is the row at its widest without the workspace name: the dock (the switcher with its save button,
|
|
6208
6395
|
50px; seven tools of 30px and the update button; two dividers; the dock's gaps and edges: 298px in all, 266px
|
|
6209
6396
|
while the update button is hidden), then --topright-buttons, the tools toggle and the four agent buttons with
|
|
6210
|
-
the gaps before them (
|
|
6397
|
+
the gaps before them (222px: six 32px buttons, five 6px gaps). Below row + 45px of band the workspace name goes into the switcher's tooltip
|
|
6211
6398
|
(--topright-compact; it shows from 40px on, up to 120px, and takes what the band leaves it). Below the row itself
|
|
6212
|
-
|
|
6213
|
-
|
|
6399
|
+
nothing wraps: the buttons that do not fit leave the row for the ⋯ menu, lowest priority first
|
|
6400
|
+
(ui-topright-overflow.js OVERFLOW_ORDER, measured live). --topright-compact is
|
|
6214
6401
|
1 below its width and 0 from it up (tan(atan2()) divides a length by a length); it lives on :root so that a
|
|
6215
6402
|
style query reaches the name. Change --topright-row (or --topright-buttons) with the controls of the row. */
|
|
6216
6403
|
@property --topright-compact {
|
|
@@ -6220,7 +6407,7 @@
|
|
|
6220
6407
|
}
|
|
6221
6408
|
:root {
|
|
6222
6409
|
--topright-band: calc(100vw - var(--sidebar-total-width, 0px) - var(--right-panel-width, var(--claude-panel-width, 0px)) - 40px);
|
|
6223
|
-
--topright-buttons:
|
|
6410
|
+
--topright-buttons: 222px;
|
|
6224
6411
|
--topright-row: calc(298px + var(--topright-buttons));
|
|
6225
6412
|
--topright-compact: clamp(0, tan(atan2(calc(var(--topright-row) + 45px - var(--topright-band)), 0.01px)), 1);
|
|
6226
6413
|
}
|
|
@@ -6267,6 +6454,7 @@
|
|
|
6267
6454
|
#topright-controls > #term-minimized-tray > .term-minimized-pill .term-minimized-pill-label,
|
|
6268
6455
|
#topright-controls > #term-minimized-tray > .term-minimized-pill:hover .term-minimized-pill-label {
|
|
6269
6456
|
max-width: clamp(28px, calc(var(--topright-band) - var(--topright-tray-inset) - 62px), 100px);
|
|
6457
|
+
transition: none;
|
|
6270
6458
|
}
|
|
6271
6459
|
|
|
6272
6460
|
/* ── Thin divider between groups ── */
|
|
@@ -6389,11 +6577,13 @@
|
|
|
6389
6577
|
}
|
|
6390
6578
|
|
|
6391
6579
|
/* ── Standalone buttons outside the unified bar (the tools toggle, the side panels) ── */
|
|
6580
|
+
#topright-overflow-btn,
|
|
6392
6581
|
#topright-tools-btn,
|
|
6393
6582
|
#topright-assistant-panel-btn,
|
|
6394
6583
|
#topright-claude-panel-btn,
|
|
6395
6584
|
#topright-codex-panel-btn,
|
|
6396
|
-
#topright-opencode-panel-btn
|
|
6585
|
+
#topright-opencode-panel-btn,
|
|
6586
|
+
#topright-antigravity-panel-btn {
|
|
6397
6587
|
background: rgba(18, 18, 22, 0.65);
|
|
6398
6588
|
backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
6399
6589
|
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
@@ -6403,11 +6593,13 @@
|
|
|
6403
6593
|
width: 32px;
|
|
6404
6594
|
height: 32px;
|
|
6405
6595
|
}
|
|
6596
|
+
#topright-overflow-btn:hover,
|
|
6406
6597
|
#topright-tools-btn:hover,
|
|
6407
6598
|
#topright-assistant-panel-btn:hover,
|
|
6408
6599
|
#topright-claude-panel-btn:hover,
|
|
6409
6600
|
#topright-codex-panel-btn:hover,
|
|
6410
|
-
#topright-opencode-panel-btn:hover
|
|
6601
|
+
#topright-opencode-panel-btn:hover,
|
|
6602
|
+
#topright-antigravity-panel-btn:hover {
|
|
6411
6603
|
background: rgba(24, 24, 30, 0.8);
|
|
6412
6604
|
border-color: rgba(255, 255, 255, 0.1);
|
|
6413
6605
|
}
|
|
@@ -7666,7 +7858,7 @@
|
|
|
7666
7858
|
.ocpv2-session-pill, .ocpv2-part-tool, .ocpv2-input-wrap, .ocpv2-compose-btn,
|
|
7667
7859
|
.ocp-session-pill, .ocp-tool-card, .ocp-input-shell, .term-minimized-pill-label)::before,
|
|
7668
7860
|
body.ui-interacting :is(.wb-tool.locked, .cp-session-pill,
|
|
7669
|
-
.cxp-session-pill, .ocpv2-session-pill,
|
|
7861
|
+
.cxp-session-pill, .ocpv2-session-pill, .agy-session-pill,
|
|
7670
7862
|
.ocp-session-pill, .term-minimized-pill-label)::after { animation-play-state: paused !important; }
|
|
7671
7863
|
|
|
7672
7864
|
/* Hidden tab: freeze the 30+ infinite glow/pulse animations so a background
|
|
@@ -8520,9 +8712,8 @@
|
|
|
8520
8712
|
z-index: 500000;
|
|
8521
8713
|
padding: 5px 10px;
|
|
8522
8714
|
border-radius: 6px;
|
|
8523
|
-
background: rgba(
|
|
8715
|
+
background: rgba(26, 30, 40, 0.96);
|
|
8524
8716
|
border: 1px solid rgba(255,255,255,0.08);
|
|
8525
|
-
backdrop-filter: blur(12px);
|
|
8526
8717
|
color: rgba(255,255,255,0.85);
|
|
8527
8718
|
font-size: 12.5px;
|
|
8528
8719
|
font-family: inherit;
|
|
@@ -9789,8 +9980,15 @@
|
|
|
9789
9980
|
.sm-backdrop.backdrop-hidden,
|
|
9790
9981
|
.ig-backdrop.backdrop-hidden {
|
|
9791
9982
|
opacity: 0 !important;
|
|
9983
|
+
backdrop-filter: none !important;
|
|
9984
|
+
-webkit-backdrop-filter: none !important;
|
|
9792
9985
|
pointer-events: none;
|
|
9793
9986
|
}
|
|
9987
|
+
html.platform-win32 .studio-backdrop {
|
|
9988
|
+
background: rgba(5, 5, 8, 0.62);
|
|
9989
|
+
backdrop-filter: none;
|
|
9990
|
+
-webkit-backdrop-filter: none;
|
|
9991
|
+
}
|
|
9794
9992
|
|
|
9795
9993
|
/* ── Settings Panel (draggable/pinnable) ── */
|
|
9796
9994
|
.settings-panel {
|
|
@@ -14011,8 +14209,8 @@
|
|
|
14011
14209
|
.settings-panel .stg-card .stg-mcp-form-grid .stg-field { margin-bottom: 0; }
|
|
14012
14210
|
/* a field of the Add-a-server form is half the form wide: a popup or a number stacks under its label like the text
|
|
14013
14211
|
fields beside it, instead of taking the label's line and squeezing the label and the help into what is left */
|
|
14014
|
-
.settings-panel .stg-card .stg-mcp-form-grid .stg-field:has(> :is(select, input[type="number"])) { display: block; }
|
|
14015
|
-
.settings-panel .stg-card .stg-mcp-form-grid .stg-field:has(> :is(select, input[type="number"])) > label { margin: 0 0 6px; }
|
|
14212
|
+
.settings-panel .stg-card .stg-mcp-form-grid .stg-field:has(> :is(select, .cc-dropdown, input[type="number"])) { display: block; }
|
|
14213
|
+
.settings-panel .stg-card .stg-mcp-form-grid .stg-field:has(> :is(select, .cc-dropdown, input[type="number"])) > label { margin: 0 0 6px; }
|
|
14016
14214
|
.settings-panel .stg-card .stg-mcp-form-label { font-size: 12px; color: var(--stg-help); }
|
|
14017
14215
|
.settings-panel .stg-card .stg-mcp-env-add { font-size: 12px; color: var(--stg-body); }
|
|
14018
14216
|
.settings-panel .stg-card .stg-mcp-gh-optrun { font-size: 13px; color: var(--stg-text); }
|
|
@@ -16514,6 +16712,28 @@
|
|
|
16514
16712
|
flex-shrink: 0;
|
|
16515
16713
|
}
|
|
16516
16714
|
.fe-branch-btn-badge:empty { display: none; }
|
|
16715
|
+
/* Scan state: a dot in the corner, out of the flow, so no state moves the row (words: tooltip, label, popover). */
|
|
16716
|
+
.fe-branch-btn-state {
|
|
16717
|
+
position: absolute;
|
|
16718
|
+
top: 2px;
|
|
16719
|
+
right: 2px;
|
|
16720
|
+
width: 4px;
|
|
16721
|
+
height: 4px;
|
|
16722
|
+
border-radius: 50%;
|
|
16723
|
+
background: transparent;
|
|
16724
|
+
pointer-events: none;
|
|
16725
|
+
}
|
|
16726
|
+
.fe-branch-btn[data-scan-state="scanning"] .fe-branch-btn-state { background: var(--t-secondary); }
|
|
16727
|
+
.fe-branch-btn[data-scan-state="timed-out"] .fe-branch-btn-state { background: var(--fe-git-modified); }
|
|
16728
|
+
.fe-branch-btn[data-scan-state="failed"] .fe-branch-btn-state { background: var(--fe-git-deleted); }
|
|
16729
|
+
.fe-branch-btn[data-scan-state="scanning"] > svg { opacity: 0.5; }
|
|
16730
|
+
.fe-branch-btn--placeholder .fe-branch-btn-name { color: var(--t-secondary); }
|
|
16731
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
16732
|
+
.fe-branch-btn[data-scan-state="scanning"] .fe-branch-btn-state { animation: fe-git-scan-pulse 1.2s ease-in-out infinite; }
|
|
16733
|
+
}
|
|
16734
|
+
@keyframes fe-git-scan-pulse { 50% { opacity: 0.3; } }
|
|
16735
|
+
/* Read out by screen readers only; takes no room in the row. */
|
|
16736
|
+
.fe-git-scan-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
|
|
16517
16737
|
|
|
16518
16738
|
/* ── Git popover ── */
|
|
16519
16739
|
.fe-git-popover {
|
|
@@ -16668,6 +16888,15 @@
|
|
|
16668
16888
|
line-height: 1.5;
|
|
16669
16889
|
}
|
|
16670
16890
|
.fe-git-summary:empty { display: none; }
|
|
16891
|
+
.fe-git-scan-state {
|
|
16892
|
+
font-size: 10.5px;
|
|
16893
|
+
font-family: var(--ff-mono);
|
|
16894
|
+
color: var(--t-secondary);
|
|
16895
|
+
line-height: 1.5;
|
|
16896
|
+
}
|
|
16897
|
+
.fe-git-scan-state[hidden] { display: none; }
|
|
16898
|
+
.fe-git-scan-state[data-tone="timed-out"] { color: var(--fe-git-modified); }
|
|
16899
|
+
.fe-git-scan-state[data-tone="failed"] { color: var(--fe-git-deleted); }
|
|
16671
16900
|
.fe-git-summary .gs-m { color: var(--fe-git-modified); }
|
|
16672
16901
|
.fe-git-summary .gs-a { color: var(--fe-git-new); }
|
|
16673
16902
|
.fe-git-summary .gs-d { color: var(--fe-git-deleted); }
|
|
@@ -19463,7 +19692,7 @@
|
|
|
19463
19692
|
.sx .sx-menu-item--danger:hover { color: var(--sx-err); }
|
|
19464
19693
|
|
|
19465
19694
|
/* ── Workspace ── */
|
|
19466
|
-
.sx-ws-head { flex: none; padding:
|
|
19695
|
+
.sx-ws-head { flex: none; padding: 12px 16px 0; display: grid; gap: 8px; position: relative; }
|
|
19467
19696
|
.sx-crumb { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--t-secondary); }
|
|
19468
19697
|
.sx-ws-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
19469
19698
|
.sx-ws-name { margin: 0; font: 600 calc(18px * var(--font-scale, 1))/1.3 var(--ff-heading); color: var(--t-bright); overflow-wrap: anywhere; }
|
|
@@ -19739,7 +19968,14 @@
|
|
|
19739
19968
|
.sx .sx-status--review, .sx .sx-status--changes { color: var(--sx-info); border-color: var(--b-visible); }
|
|
19740
19969
|
.sx .sx-status--draft { color: var(--sx-gold); border-color: color-mix(in oklab, var(--sx-gold) 40%, transparent); }
|
|
19741
19970
|
.sx .sx-status--none { color: var(--t-secondary); }
|
|
19742
|
-
|
|
19971
|
+
/* One pill box for every pill of the Studio (kind tag, status, health): the same height as a small button, so a
|
|
19972
|
+
row of pills and buttons lines up in the Library cell and in the workspace head. */
|
|
19973
|
+
.sx .sx-tag, .sx .sx-status, .sx .sx-health {
|
|
19974
|
+
display: inline-flex; align-items: center; gap: 6px; box-sizing: border-box;
|
|
19975
|
+
min-height: 24px; padding: 2px 8px; border-radius: 6px; line-height: 1.3;
|
|
19976
|
+
}
|
|
19977
|
+
.sx .sx-tag { display: inline-block; line-height: 18px; }
|
|
19978
|
+
.sx-health-cell { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; max-width: 100%; }
|
|
19743
19979
|
.sx-health-cell .sx-status { white-space: normal; }
|
|
19744
19980
|
.sx-health-cell .sx-status > span { white-space: normal; overflow: visible; }
|
|
19745
19981
|
.sx .sx-banner-lines { display: grid; gap: 2px; margin-top: 4px; color: var(--t-primary); }
|
|
@@ -20157,6 +20393,87 @@
|
|
|
20157
20393
|
.ss-dlg-error { margin: 4px 0 0; min-height: 1em; color: hsla(0, 70%, 72%, 1); font-size: var(--fs-xs); }
|
|
20158
20394
|
.ss-dlg-error:empty { display: none; }
|
|
20159
20395
|
|
|
20396
|
+
/* ── A delete that is typed to confirm (sx-library-view.js deleteConfirmBox) ──
|
|
20397
|
+
One row per item, the consequence, then the field; Delete stays off until the word matches. */
|
|
20398
|
+
.ss-dlg.ss-dlg--confirm { width: min(480px, calc(100% - 32px)); max-height: calc(100% - 40px); padding: 20px 20px 16px; }
|
|
20399
|
+
.ss-dlg--confirm .ss-dlg-title { font-size: var(--fs-md, 15px); margin-bottom: 12px; }
|
|
20400
|
+
.ss-dlg--confirm .ss-dlg-actions { margin-top: 16px; gap: 8px; align-items: stretch; }
|
|
20401
|
+
.ss-dlg--confirm .ss-dlg-btn { min-width: 88px; height: 30px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center; }
|
|
20402
|
+
.ss-dlg--confirm .ss-dlg-btn--danger:disabled { opacity: 0.45; }
|
|
20403
|
+
.sx-del { display: flex; flex-direction: column; gap: 12px; }
|
|
20404
|
+
.sx-del-list {
|
|
20405
|
+
list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column;
|
|
20406
|
+
border: 1px solid var(--b-subtle); border-radius: 9px; background: var(--s-light); overflow: hidden;
|
|
20407
|
+
}
|
|
20408
|
+
.sx-del-item {
|
|
20409
|
+
display: grid; grid-template-columns: 18px minmax(0, 1fr) auto auto; align-items: center; gap: 4px 10px;
|
|
20410
|
+
padding: 8px 12px; min-height: 40px; box-sizing: border-box;
|
|
20411
|
+
}
|
|
20412
|
+
.sx-del-item + .sx-del-item, .sx-del-more { border-top: 1px solid var(--b-subtle); }
|
|
20413
|
+
.sx-del-icon { display: inline-grid; place-items: center; color: var(--t-secondary); }
|
|
20414
|
+
.sx-del-icon svg { width: 15px; height: 15px; }
|
|
20415
|
+
.sx-del-main { display: flex; flex-direction: column; min-width: 0; }
|
|
20416
|
+
.sx-del-name { color: var(--t-bright); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
20417
|
+
.sx-del-path {
|
|
20418
|
+
color: var(--t-secondary); font: 400 var(--sx-meta, 11px)/1.4 var(--ff-mono, 'JetBrains Mono', monospace);
|
|
20419
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
20420
|
+
}
|
|
20421
|
+
.sx-del-kind, .sx-del-effect {
|
|
20422
|
+
font-size: var(--sx-meta, 11px); line-height: 1; padding: 4px 7px; border-radius: 5px; white-space: nowrap;
|
|
20423
|
+
border: 1px solid var(--b-light); color: var(--t-primary);
|
|
20424
|
+
}
|
|
20425
|
+
.sx-del-effect--disk { color: var(--sx-err); border-color: color-mix(in oklab, var(--sx-err) 35%, transparent); background: color-mix(in oklab, var(--sx-err) 8%, transparent); }
|
|
20426
|
+
.sx-del-effect--library { color: var(--t-primary); background: var(--s-medium); }
|
|
20427
|
+
.sx-del-more { padding: 6px 12px 8px 40px; color: var(--t-secondary); font-size: var(--sx-meta, 11px); }
|
|
20428
|
+
.ss-dlg-body p.sx-del-note { display: flex; gap: 8px; align-items: flex-start; margin: 0; color: var(--t-primary); }
|
|
20429
|
+
.sx-del-note svg { flex: none; width: 14px; height: 14px; margin-top: 2px; color: var(--t-secondary); }
|
|
20430
|
+
.sx-del-note--danger svg { color: var(--sx-err); }
|
|
20431
|
+
.sx-del-field { display: flex; flex-direction: column; gap: 6px; padding-top: 4px; }
|
|
20432
|
+
.sx-del-label { color: var(--t-primary); }
|
|
20433
|
+
.sx-del-word {
|
|
20434
|
+
font: 500 var(--fs-xs)/1 var(--ff-mono, 'JetBrains Mono', monospace); color: var(--t-bright);
|
|
20435
|
+
padding: 2px 6px; margin: 0 2px; border-radius: 4px; background: var(--s-medium); border: 1px solid var(--b-light);
|
|
20436
|
+
}
|
|
20437
|
+
.sx-del-input {
|
|
20438
|
+
width: 100%; height: 32px; padding: 0 10px; box-sizing: border-box;
|
|
20439
|
+
background: var(--sx-field, rgba(255,255,255,0.04)); border: 1px solid var(--b-light); border-radius: 5px;
|
|
20440
|
+
color: var(--t-bright); font: 400 var(--fs-xs)/1 var(--ff-mono, 'JetBrains Mono', monospace);
|
|
20441
|
+
transition: border-color 0.12s, box-shadow 0.12s;
|
|
20442
|
+
}
|
|
20443
|
+
.sx-del-input:hover { border-color: var(--b-visible); }
|
|
20444
|
+
.sx-del-input:focus { outline: none; border-color: color-mix(in oklab, var(--sx-err) 55%, transparent); box-shadow: 0 0 0 3px color-mix(in oklab, var(--sx-err) 14%, transparent); }
|
|
20445
|
+
@media (max-width: 520px) {
|
|
20446
|
+
.sx-del-item { grid-template-columns: 18px minmax(0, 1fr) auto; }
|
|
20447
|
+
.sx-del-kind { display: none; }
|
|
20448
|
+
}
|
|
20449
|
+
|
|
20450
|
+
/* ── The fix panel (sx-fixes-view.js): a card per problem, its meaning and its buttons ── */
|
|
20451
|
+
.sx .sx-health--fix { cursor: pointer; font-family: inherit; transition: filter 0.12s, border-color 0.12s; }
|
|
20452
|
+
.sx .sx-health--fix:hover { filter: brightness(1.15); border-color: currentColor; }
|
|
20453
|
+
.sx .sx-health--fix:focus-visible { outline: 2px solid var(--sx-focus); outline-offset: 1px; }
|
|
20454
|
+
.sx-fix-panel { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
|
|
20455
|
+
.sx-fix-card { padding: 10px 12px; border: 1px solid var(--b-subtle); border-left-width: 3px; border-radius: 9px; background: var(--s-light); }
|
|
20456
|
+
.sx-fix-card--err { border-left-color: var(--sx-err); }
|
|
20457
|
+
.sx-fix-card--warn { border-left-color: var(--sx-warn); }
|
|
20458
|
+
.sx-fix-card--info { border-left-color: var(--b-visible); }
|
|
20459
|
+
.sx-fix-card-head { display: flex; align-items: center; gap: 8px; color: var(--t-bright); }
|
|
20460
|
+
.sx-fix-card-head svg { width: 14px; height: 14px; flex: none; }
|
|
20461
|
+
.sx-fix-card--err .sx-fix-card-head svg { color: var(--sx-err); }
|
|
20462
|
+
.sx-fix-card--warn .sx-fix-card-head svg { color: var(--sx-warn); }
|
|
20463
|
+
.sx-fix-mode { margin-left: auto; font-size: var(--sx-meta, 11px); line-height: 1; padding: 4px 7px; border-radius: 5px; border: 1px solid var(--b-light); color: var(--t-secondary); white-space: nowrap; }
|
|
20464
|
+
.sx-fix-mode--auto { color: var(--sx-ok); border-color: color-mix(in oklab, var(--sx-ok) 35%, transparent); }
|
|
20465
|
+
.ss-dlg-body p.sx-fix-explain { margin: 6px 0 8px; color: var(--t-primary); }
|
|
20466
|
+
.sx-fix-actions { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
20467
|
+
.sx-fix-actions .sx-dim { margin: 0; }
|
|
20468
|
+
.sx-fix-preview { margin: 4px 0 0; padding: 0; list-style: none; border: 1px solid var(--b-subtle); border-radius: 9px; background: var(--s-light); }
|
|
20469
|
+
.sx-fix-preview-row { padding: 7px 12px; color: var(--t-primary); }
|
|
20470
|
+
.sx-fix-preview-row + .sx-fix-preview-row { border-top: 1px solid var(--b-subtle); }
|
|
20471
|
+
.sx-fix-choose { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; }
|
|
20472
|
+
.sx-fix-choice { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--b-subtle); border-radius: 9px; cursor: pointer; }
|
|
20473
|
+
.sx-fix-choice:has(input:checked) { border-color: var(--b-visible); background: var(--s-light); }
|
|
20474
|
+
.sx-fix-choice:has(input:disabled) { opacity: 0.5; cursor: default; }
|
|
20475
|
+
.sx .sx-fix-notice .sx-btn { flex: none; }
|
|
20476
|
+
|
|
20160
20477
|
/* ── An import's review ── */
|
|
20161
20478
|
.ss-review { display: flex; flex-direction: column; gap: 8px; }
|
|
20162
20479
|
.ss-review-row { display: flex; gap: 10px; align-items: baseline; }
|
|
@@ -22009,7 +22326,7 @@
|
|
|
22009
22326
|
.as-launch-profile[data-profile="codex"].active .as-launch-profile-name {
|
|
22010
22327
|
color: hsla(160, 45%, 72%, 0.95);
|
|
22011
22328
|
}
|
|
22012
|
-
.as-launch-profile[data-profile="
|
|
22329
|
+
.as-launch-profile[data-profile="antigravity"].active .as-launch-profile-name {
|
|
22013
22330
|
color: hsla(210, 55%, 78%, 0.95);
|
|
22014
22331
|
}
|
|
22015
22332
|
.as-launch-profile-name {
|
|
@@ -24571,6 +24888,16 @@
|
|
|
24571
24888
|
transition: none !important;
|
|
24572
24889
|
}
|
|
24573
24890
|
}
|
|
24891
|
+
html.platform-win32 .term-minimized-pill,
|
|
24892
|
+
html.desktop-titlebar--win32 .term-minimized-pill {
|
|
24893
|
+
background: rgba(20, 20, 26, 0.94);
|
|
24894
|
+
backdrop-filter: none;
|
|
24895
|
+
-webkit-backdrop-filter: none;
|
|
24896
|
+
}
|
|
24897
|
+
html.platform-win32 .term-minimized-pill:hover,
|
|
24898
|
+
html.desktop-titlebar--win32 .term-minimized-pill:hover {
|
|
24899
|
+
background: rgba(30, 30, 38, 0.96);
|
|
24900
|
+
}
|
|
24574
24901
|
|
|
24575
24902
|
/* Genie minimize/restore animation on floating tabs (class toggled by
|
|
24576
24903
|
ui-terminal.js minimizeTab/restoreTab only while it runs) */
|
|
@@ -28029,16 +28356,8 @@
|
|
|
28029
28356
|
color: #000;
|
|
28030
28357
|
border-color: var(--c-accent, #6aa9ff);
|
|
28031
28358
|
}
|
|
28032
|
-
.
|
|
28033
|
-
|
|
28034
|
-
background: var(--s-subtle, rgba(255,255,255,0.04));
|
|
28035
|
-
color: var(--t-primary, #fff);
|
|
28036
|
-
border: 1px solid var(--b-subtle, rgba(255,255,255,0.1));
|
|
28037
|
-
border-radius: var(--r-small, 6px);
|
|
28038
|
-
padding: 6px 8px;
|
|
28039
|
-
font-size: 11px;
|
|
28040
|
-
}
|
|
28041
|
-
.sm-pr-select:disabled { opacity: 0.5; }
|
|
28359
|
+
/* The model list is the app's styled dropdown (cc-dropdown.js): it takes the row's width. */
|
|
28360
|
+
.sm-pr-row > .cc-dropdown.sm-pr-dropdown { flex: 1; min-width: 0; }
|
|
28042
28361
|
|
|
28043
28362
|
/* ── Section labels ── */
|
|
28044
28363
|
.sm-section-label {
|
|
@@ -29204,3 +29523,4 @@ body .styleguide-panel {
|
|
|
29204
29523
|
.ocpv2-tools-picker .cc-dropdown-trigger { min-width: 0; max-width: 160px; border: none; background: transparent; color: var(--t-primary); font-family: inherit; }
|
|
29205
29524
|
|
|
29206
29525
|
.ocpv2-tools-picker .tool-list-picker .cc-dropdown-menu { background: rgba(22,22,26,0.98); }
|
|
29526
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// String caches need a size budget as well as an entry count: streaming
|
|
2
|
+
// revisions are different keys and may each hold a nearly complete transcript.
|
|
3
|
+
export function createTextCache({ maxEntries = 512, maxChars = 1_000_000, maxEntryChars = 64_000 } = {}) {
|
|
4
|
+
const entries = new Map();
|
|
5
|
+
let chars = 0;
|
|
6
|
+
const drop = key => {
|
|
7
|
+
const value = entries.get(key);
|
|
8
|
+
if (value === undefined) return;
|
|
9
|
+
chars -= key.length + value.length;
|
|
10
|
+
entries.delete(key);
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
get(key) {
|
|
14
|
+
const value = entries.get(key);
|
|
15
|
+
if (value !== undefined) { entries.delete(key); entries.set(key, value); }
|
|
16
|
+
return value;
|
|
17
|
+
},
|
|
18
|
+
set(key, value) {
|
|
19
|
+
drop(key);
|
|
20
|
+
const size = key.length + value.length;
|
|
21
|
+
if (size > Math.min(maxChars, maxEntryChars) || maxEntries < 1) return;
|
|
22
|
+
while (entries.size && (entries.size >= maxEntries || chars + size > maxChars)) drop(entries.keys().next().value);
|
|
23
|
+
entries.set(key, value);
|
|
24
|
+
chars += size;
|
|
25
|
+
},
|
|
26
|
+
clear() { entries.clear(); chars = 0; },
|
|
27
|
+
stats: () => ({ entries: entries.size, chars }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -11,7 +11,7 @@ export function toolPickerHTML(id, tools, options = {}) {
|
|
|
11
11
|
if (!catalog) return '';
|
|
12
12
|
const view = toolListView(catalog, tools, { translate, ...options });
|
|
13
13
|
return dropdownHTML(id, view.entries, { multiple: true, label: toolWord('label'), classes: 'tool-list-picker',
|
|
14
|
-
summary: view.summary, ...options, classes: `tool-list-picker ${options.classes || ''}`.trim(), attrs: `data-tool-options="${encodeURIComponent(JSON.stringify({ inheritLabel: options.inheritLabel, usesBrowser: options.usesBrowser, taskClass: options.taskClass, cwd: options.cwd, provider: options.provider, includeServers: options.includeServers, externalSelection: catalog.externalServersVersion >= 2 && options.includeServers !== false && options.provider !== '
|
|
14
|
+
summary: view.summary, ...options, classes: `tool-list-picker ${options.classes || ''}`.trim(), attrs: `data-tool-options="${encodeURIComponent(JSON.stringify({ inheritLabel: options.inheritLabel, usesBrowser: options.usesBrowser, taskClass: options.taskClass, cwd: options.cwd, provider: options.provider, includeServers: options.includeServers, externalSelection: catalog.externalServersVersion >= 2 && options.includeServers !== false && options.provider !== 'antigravity', externalRefs: (tools ?? catalog.defaultTools ?? []).filter(id => id.startsWith('mcp:')) }))}"` });
|
|
15
15
|
}
|
|
16
16
|
export function updateToolPicker(input, tools, options = {}) {
|
|
17
17
|
options = { ...JSON.parse(decodeURIComponent(dropdownOf(input)?.dataset.toolOptions || '%7B%7D')), ...options };
|
|
@@ -20,7 +20,7 @@ export function updateToolPicker(input, tools, options = {}) {
|
|
|
20
20
|
const view = toolListView(catalog, tools, { translate, ...options });
|
|
21
21
|
setDropdownItems(input, view.entries);
|
|
22
22
|
const dd = dropdownOf(input);
|
|
23
|
-
if (dd) dd.dataset.toolOptions = encodeURIComponent(JSON.stringify({ inheritLabel: options.inheritLabel, usesBrowser: options.usesBrowser, taskClass: options.taskClass, cwd: options.cwd, provider: options.provider, includeServers: options.includeServers, externalSelection: catalog.externalServersVersion >= 2 && options.includeServers !== false && options.provider !== '
|
|
23
|
+
if (dd) dd.dataset.toolOptions = encodeURIComponent(JSON.stringify({ inheritLabel: options.inheritLabel, usesBrowser: options.usesBrowser, taskClass: options.taskClass, cwd: options.cwd, provider: options.provider, includeServers: options.includeServers, externalSelection: catalog.externalServersVersion >= 2 && options.includeServers !== false && options.provider !== 'antigravity', externalRefs: (tools ?? catalog.defaultTools ?? []).filter(id => id.startsWith('mcp:')) }));
|
|
24
24
|
const label = dropdownOf(input)?.querySelector('.cc-dropdown-value');
|
|
25
25
|
if (label) { label.textContent = view.summary; label.title = view.summary; }
|
|
26
26
|
}
|
|
@@ -45,7 +45,7 @@ function groupWord(group, field, translate) {
|
|
|
45
45
|
return group[field];
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
export const strictToolHost = provider => provider === 'opencode' || provider === '
|
|
48
|
+
export const strictToolHost = provider => provider === 'opencode' || provider === 'antigravity';
|
|
49
49
|
export const taskToolHost = provider => strictToolHost(provider) || provider === 'claude-code' || provider === 'codex';
|
|
50
50
|
|
|
51
51
|
/** Hidden-input encoding: inheritance differs from an explicit empty group list. */
|
|
@@ -87,7 +87,7 @@ export function toolListView(catalog, tools, { inheritLabel = null, usesBrowser,
|
|
|
87
87
|
});
|
|
88
88
|
if (options.length) entries.push({ group: word(section), options });
|
|
89
89
|
}
|
|
90
|
-
if (includeServers && provider !== '
|
|
90
|
+
if (includeServers && provider !== 'antigravity' && catalog?.externalServersVersion >= 2) {
|
|
91
91
|
const wildcard = refs.includes('mcp:*');
|
|
92
92
|
const rows = (catalog.servers || []).filter(row => row.selectable !== false);
|
|
93
93
|
// A saved unavailable ref stays visible and round-trips; loading a catalog never silently clears it.
|