botmux 3.16.0 → 3.17.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/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +84 -1
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +202 -19
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +8 -0
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +15 -0
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +61 -7
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +80 -9
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +62 -4
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +240 -27
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +4 -2
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/coco.d.ts.map +1 -1
- package/dist/adapters/cli/coco.js +27 -0
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +28 -0
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +51 -23
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/dsh-tui.d.ts +24 -0
- package/dist/adapters/cli/dsh-tui.d.ts.map +1 -0
- package/dist/adapters/cli/dsh-tui.js +99 -0
- package/dist/adapters/cli/dsh-tui.js.map +1 -0
- package/dist/adapters/cli/dsh.d.ts.map +1 -1
- package/dist/adapters/cli/dsh.js +15 -9
- package/dist/adapters/cli/dsh.js.map +1 -1
- package/dist/adapters/cli/fs-policy.d.ts +98 -1
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
- package/dist/adapters/cli/fs-policy.js +182 -7
- package/dist/adapters/cli/fs-policy.js.map +1 -1
- package/dist/adapters/cli/grok.js +16 -18
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/model-catalog-json.d.ts +17 -0
- package/dist/adapters/cli/model-catalog-json.d.ts.map +1 -0
- package/dist/adapters/cli/model-catalog-json.js +43 -0
- package/dist/adapters/cli/model-catalog-json.js.map +1 -0
- package/dist/adapters/cli/oh-my-pi.d.ts +2 -0
- package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
- package/dist/adapters/cli/oh-my-pi.js +45 -13
- package/dist/adapters/cli/oh-my-pi.js.map +1 -1
- package/dist/adapters/cli/opencode.js +1 -1
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +2 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +6 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/relay.d.ts.map +1 -1
- package/dist/adapters/cli/relay.js +7 -0
- package/dist/adapters/cli/relay.js.map +1 -1
- package/dist/adapters/cli/seed.d.ts.map +1 -1
- package/dist/adapters/cli/seed.js +6 -0
- package/dist/adapters/cli/seed.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +20 -14
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts +4 -0
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +153 -0
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +42 -1
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/autostart.d.ts +6 -0
- package/dist/autostart.d.ts.map +1 -1
- package/dist/autostart.js +21 -1
- package/dist/autostart.js.map +1 -1
- package/dist/bot-registry.d.ts +27 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +62 -2
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/vc-agent.d.ts.map +1 -1
- package/dist/cli/vc-agent.js +21 -3
- package/dist/cli/vc-agent.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +92 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +28 -0
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/bot-steer-directive.d.ts +25 -0
- package/dist/core/bot-steer-directive.d.ts.map +1 -0
- package/dist/core/bot-steer-directive.js +47 -0
- package/dist/core/bot-steer-directive.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +102 -18
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +53 -13
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +3 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +26 -5
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +10 -1
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +12 -2
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +5 -4
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/existing-app-server.d.ts +22 -0
- package/dist/core/existing-app-server.d.ts.map +1 -0
- package/dist/core/existing-app-server.js +85 -0
- package/dist/core/existing-app-server.js.map +1 -0
- package/dist/core/native-topic-id.d.ts +9 -0
- package/dist/core/native-topic-id.d.ts.map +1 -0
- package/dist/core/native-topic-id.js +14 -0
- package/dist/core/native-topic-id.js.map +1 -0
- package/dist/core/per-bot-env.d.ts.map +1 -1
- package/dist/core/per-bot-env.js +10 -0
- package/dist/core/per-bot-env.js.map +1 -1
- package/dist/core/plugins/mcp/gateway.d.ts +27 -3
- package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
- package/dist/core/plugins/mcp/gateway.js +272 -26
- package/dist/core/plugins/mcp/gateway.js.map +1 -1
- package/dist/core/plugins/mcp/host.d.ts +18 -0
- package/dist/core/plugins/mcp/host.d.ts.map +1 -1
- package/dist/core/plugins/mcp/host.js +80 -16
- package/dist/core/plugins/mcp/host.js.map +1 -1
- package/dist/core/plugins/mcp/launch-record.d.ts +14 -0
- package/dist/core/plugins/mcp/launch-record.d.ts.map +1 -0
- package/dist/core/plugins/mcp/launch-record.js +63 -0
- package/dist/core/plugins/mcp/launch-record.js.map +1 -0
- package/dist/core/session-activity.d.ts +11 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +23 -0
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/session-group-birth.d.ts.map +1 -1
- package/dist/core/session-group-birth.js +23 -8
- package/dist/core/session-group-birth.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +16 -20
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/shared-adopt.d.ts +20 -0
- package/dist/core/shared-adopt.d.ts.map +1 -0
- package/dist/core/shared-adopt.js +26 -0
- package/dist/core/shared-adopt.js.map +1 -0
- package/dist/core/skills/customize-command.d.ts +7 -0
- package/dist/core/skills/customize-command.d.ts.map +1 -0
- package/dist/core/skills/customize-command.js +303 -0
- package/dist/core/skills/customize-command.js.map +1 -0
- package/dist/core/terminal-write-auth.d.ts +15 -0
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +15 -0
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/terminal-write-frame.d.ts +30 -0
- package/dist/core/terminal-write-frame.d.ts.map +1 -0
- package/dist/core/terminal-write-frame.js +44 -0
- package/dist/core/terminal-write-frame.js.map +1 -0
- package/dist/core/types.d.ts +14 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +6 -8
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +31 -6
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +444 -102
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/core/worker-startup-retry.d.ts +52 -0
- package/dist/core/worker-startup-retry.d.ts.map +1 -0
- package/dist/core/worker-startup-retry.js +68 -0
- package/dist/core/worker-startup-retry.js.map +1 -0
- package/dist/daemon.d.ts +9 -8
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +467 -171
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/autostart-api.d.ts +26 -0
- package/dist/dashboard/autostart-api.d.ts.map +1 -0
- package/dist/dashboard/autostart-api.js +88 -0
- package/dist/dashboard/autostart-api.js.map +1 -0
- package/dist/dashboard/bot-payload.d.ts +5 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +2 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/control-csrf.d.ts +29 -1
- package/dist/dashboard/control-csrf.d.ts.map +1 -1
- package/dist/dashboard/control-csrf.js +49 -10
- package/dist/dashboard/control-csrf.js.map +1 -1
- package/dist/dashboard/customization-api.d.ts +23 -0
- package/dist/dashboard/customization-api.d.ts.map +1 -0
- package/dist/dashboard/customization-api.js +198 -0
- package/dist/dashboard/customization-api.js.map +1 -0
- package/dist/dashboard/debug-terminal.d.ts +13 -1
- package/dist/dashboard/debug-terminal.d.ts.map +1 -1
- package/dist/dashboard/debug-terminal.js +18 -4
- package/dist/dashboard/debug-terminal.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +0 -23
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +7 -28
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/terminal-control-route.d.ts +32 -0
- package/dist/dashboard/terminal-control-route.d.ts.map +1 -0
- package/dist/dashboard/terminal-control-route.js +70 -0
- package/dist/dashboard/terminal-control-route.js.map +1 -0
- package/dist/dashboard/terminal-control.d.ts +64 -13
- package/dist/dashboard/terminal-control.d.ts.map +1 -1
- package/dist/dashboard/terminal-control.js +77 -14
- package/dist/dashboard/terminal-control.js.map +1 -1
- package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -1
- package/dist/dashboard/terminal-front-proxy.js +41 -9
- package/dist/dashboard/terminal-front-proxy.js.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.d.ts +69 -18
- package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.js +149 -29
- package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-api.d.ts +34 -2
- package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-api.js +39 -4
- package/dist/dashboard/web/agent-workbench-api.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-appearance.d.ts +6 -3
- package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-appearance.js +7 -4
- package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-model.d.ts +2 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-model.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-page.js +2 -2
- package/dist/dashboard/web/agent-workbench-page.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-panes.d.ts +59 -4
- package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-panes.js +493 -85
- package/dist/dashboard/web/agent-workbench-panes.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-session-list.d.ts +11 -7
- package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-session-list.js +24 -31
- package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -1
- package/dist/dashboard/web/agent-workbench-terminal-control.d.ts +198 -0
- package/dist/dashboard/web/agent-workbench-terminal-control.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-terminal-control.js +292 -0
- package/dist/dashboard/web/agent-workbench-terminal-control.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts +3 -2
- package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -1
- package/dist/dashboard/web/agent-workbench-view.js +69 -50
- package/dist/dashboard/web/agent-workbench-view.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +58 -7
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +24 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +191 -16
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +17 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +51 -2
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +32 -8
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/confirm-modal.d.ts +35 -0
- package/dist/dashboard/web/confirm-modal.d.ts.map +1 -0
- package/dist/dashboard/web/confirm-modal.js +111 -0
- package/dist/dashboard/web/confirm-modal.js.map +1 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +2 -1
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/customization-page.d.ts +3 -0
- package/dist/dashboard/web/customization-page.d.ts.map +1 -0
- package/dist/dashboard/web/customization-page.js +315 -0
- package/dist/dashboard/web/customization-page.js.map +1 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +1 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +11 -9
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +226 -42
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
- package/dist/dashboard/web/monitor-room.js +3 -2
- package/dist/dashboard/web/monitor-room.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +98 -63
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +4 -3
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
- package/dist/dashboard/web/schedules-page.js +165 -18
- package/dist/dashboard/web/schedules-page.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts +2 -0
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-kanban.js +142 -24
- package/dist/dashboard/web/sessions-kanban.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +177 -94
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +5 -4
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +0 -8
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +185 -65
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/skills/skill-library-tab.d.ts +2 -0
- package/dist/dashboard/web/skills/skill-library-tab.d.ts.map +1 -1
- package/dist/dashboard/web/skills/skill-library-tab.js +15 -1
- package/dist/dashboard/web/skills/skill-library-tab.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +5 -4
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +5 -0
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +4 -0
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation-page.js +3 -2
- package/dist/dashboard/web/team-federation-page.js.map +1 -1
- package/dist/dashboard/web/toast.d.ts +15 -0
- package/dist/dashboard/web/toast.d.ts.map +1 -0
- package/dist/dashboard/web/toast.js +70 -0
- package/dist/dashboard/web/toast.js.map +1 -0
- package/dist/dashboard/web/v3-components.d.ts.map +1 -1
- package/dist/dashboard/web/v3-components.js +2 -1
- package/dist/dashboard/web/v3-components.js.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +10 -12
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.js +219 -200
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
- package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
- package/dist/dashboard/web/whiteboards-page.js +2 -1
- package/dist/dashboard/web/whiteboards-page.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/agent-workbench-dock-page-LZSUOCEQ.js +1 -0
- package/dist/dashboard-web/chunks/agent-workbench-page-YONDRJU7.js +1 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-X7LV6373.js +1 -0
- package/dist/dashboard-web/chunks/chunk-2PVRDXEL.js +1 -0
- package/dist/dashboard-web/chunks/chunk-53JUKBU2.js +10 -0
- package/dist/dashboard-web/chunks/{chunk-5CJMHTT4.js → chunk-5QX4OYOR.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-NACP7BMR.js → chunk-5VRVJFQR.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-FDZ7WOBW.js → chunk-6ROOZWYV.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-F6KNPF4R.js → chunk-CK22743G.js} +15 -19
- package/dist/dashboard-web/chunks/chunk-CVNIMUPY.js +25 -0
- package/dist/dashboard-web/chunks/chunk-GJC2TMWS.js +2 -0
- package/dist/dashboard-web/chunks/chunk-OT6L6G7R.js +1 -0
- package/dist/dashboard-web/chunks/chunk-QITAMHW6.js +1 -0
- package/dist/dashboard-web/chunks/chunk-RHVFZC5Z.js +1 -0
- package/dist/dashboard-web/chunks/chunk-SOBMN2VY.js +1 -0
- package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +1 -0
- package/dist/dashboard-web/chunks/chunk-XVIXNQGC.js +44 -0
- package/dist/dashboard-web/chunks/chunk-YUJF34ME.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-LB2HEJ7F.js +1 -0
- package/dist/dashboard-web/chunks/customization-page-4GXBYLG6.js +105 -0
- package/dist/dashboard-web/chunks/feedback-page-IZQ7VLDG.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-4WCP5OEV.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-HJFDYR5N.js → insights-page-TXQHIPQL.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-V7PCP47V.js → monitor-room-VBRVWXCM.js} +8 -8
- package/dist/dashboard-web/chunks/monitoring-page-QDDZWERE.js +2 -0
- package/dist/dashboard-web/chunks/office-page-PENFNYPG.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-BZQDP6MP.js +1 -0
- package/dist/dashboard-web/chunks/plugin-page-JX4GSWZS.js +1 -0
- package/dist/dashboard-web/chunks/roles-page-VPNINZNK.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-BITO6HEA.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-ZKCOVTD2.js +8 -0
- package/dist/dashboard-web/chunks/settings-page-UT6JDTS6.js +2 -0
- package/dist/dashboard-web/chunks/skills-page-GULXVAJY.js +4 -0
- package/dist/dashboard-web/chunks/team-federation-page-CUUJWGEG.js +1 -0
- package/dist/dashboard-web/chunks/v3-page-5WVJ5AUR.js +94 -0
- package/dist/dashboard-web/chunks/whiteboards-page-FZ2CME4H.js +1 -0
- package/dist/dashboard-web/design-tokens.css +236 -0
- package/dist/dashboard-web/index.html +1 -0
- package/dist/dashboard-web/style.css +1930 -114
- package/dist/dashboard.js +360 -279
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/renderer/app.js +6 -0
- package/dist/desktop/renderer/app.js.map +1 -1
- package/dist/dsh-runner.js +139 -17
- package/dist/dsh-runner.js.map +1 -1
- package/dist/global-config.d.ts +33 -2
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +62 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +13 -4
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.d.ts +27 -3
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +33 -4
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +13 -4
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +2 -0
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +7 -4
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +135 -20
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +38 -3
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +163 -13
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -1
- package/dist/im/lark/v3-blocked-card-handler.js +2 -1
- package/dist/im/lark/v3-blocked-card-handler.js.map +1 -1
- package/dist/im/lark/v3-blocked-card.d.ts +1 -1
- package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
- package/dist/im/lark/v3-blocked-card.js +14 -0
- package/dist/im/lark/v3-blocked-card.js.map +1 -1
- package/dist/index-core-only.js +2 -0
- package/dist/index-core-only.js.map +1 -1
- package/dist/index-daemon.js +3 -0
- package/dist/index-daemon.js.map +1 -1
- package/dist/platform/binding.d.ts +37 -0
- package/dist/platform/binding.d.ts.map +1 -1
- package/dist/platform/binding.js +15 -0
- package/dist/platform/binding.js.map +1 -1
- package/dist/services/bridge-turn-journal.d.ts +63 -0
- package/dist/services/bridge-turn-journal.d.ts.map +1 -0
- package/dist/services/bridge-turn-journal.js +149 -0
- package/dist/services/bridge-turn-journal.js.map +1 -0
- package/dist/services/bridge-turn-queue.d.ts +8 -1
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +2 -1
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/codex-app-runner-protocol.d.ts +5 -0
- package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
- package/dist/services/codex-app-runner-protocol.js +5 -0
- package/dist/services/codex-app-runner-protocol.js.map +1 -1
- package/dist/services/customization-store.d.ts +93 -0
- package/dist/services/customization-store.d.ts.map +1 -0
- package/dist/services/customization-store.js +542 -0
- package/dist/services/customization-store.js.map +1 -0
- package/dist/services/file-bridge-path.d.ts.map +1 -1
- package/dist/services/file-bridge-path.js +3 -0
- package/dist/services/file-bridge-path.js.map +1 -1
- package/dist/services/grok-transcript.d.ts.map +1 -1
- package/dist/services/grok-transcript.js +44 -9
- package/dist/services/grok-transcript.js.map +1 -1
- package/dist/services/local-cli-opener.d.ts.map +1 -1
- package/dist/services/local-cli-opener.js +12 -3
- package/dist/services/local-cli-opener.js.map +1 -1
- package/dist/services/model-catalog.d.ts +54 -0
- package/dist/services/model-catalog.d.ts.map +1 -0
- package/dist/services/model-catalog.js +147 -0
- package/dist/services/model-catalog.js.map +1 -0
- package/dist/services/omp-transcript.d.ts +27 -0
- package/dist/services/omp-transcript.d.ts.map +1 -0
- package/dist/services/omp-transcript.js +214 -0
- package/dist/services/omp-transcript.js.map +1 -0
- package/dist/services/platform-team-store.d.ts +16 -8
- package/dist/services/platform-team-store.d.ts.map +1 -1
- package/dist/services/platform-team-store.js +17 -10
- package/dist/services/platform-team-store.js.map +1 -1
- package/dist/services/project-scanner.d.ts.map +1 -1
- package/dist/services/project-scanner.js +13 -8
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/services/resumable-session-discovery.d.ts.map +1 -1
- package/dist/services/resumable-session-discovery.js +117 -35
- package/dist/services/resumable-session-discovery.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +5 -3
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +5 -1
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/vc-meeting-action-gate.d.ts.map +1 -1
- package/dist/services/vc-meeting-action-gate.js +15 -4
- package/dist/services/vc-meeting-action-gate.js.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +46 -66
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js +33 -292
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-templates.js +3 -3
- package/dist/services/vc-meeting-consumer-profile-templates.js.map +1 -1
- package/dist/services/vc-meeting-delivery-store.d.ts +18 -0
- package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-store.js +55 -0
- package/dist/services/vc-meeting-delivery-store.js.map +1 -1
- package/dist/services/vc-meeting-send-policy.d.ts +21 -1
- package/dist/services/vc-meeting-send-policy.d.ts.map +1 -1
- package/dist/services/vc-meeting-send-policy.js +30 -2
- package/dist/services/vc-meeting-send-policy.js.map +1 -1
- package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts +78 -0
- package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-shared-consumer-catalog-store.js +227 -0
- package/dist/services/vc-meeting-shared-consumer-catalog-store.js.map +1 -0
- package/dist/services/vc-meeting-shared-consumer-catalog.d.ts +53 -0
- package/dist/services/vc-meeting-shared-consumer-catalog.d.ts.map +1 -0
- package/dist/services/vc-meeting-shared-consumer-catalog.js +161 -0
- package/dist/services/vc-meeting-shared-consumer-catalog.js.map +1 -0
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +1 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +20 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +27 -0
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/skills/customization-bundle.d.ts +83 -0
- package/dist/skills/customization-bundle.d.ts.map +1 -0
- package/dist/skills/customization-bundle.js +214 -0
- package/dist/skills/customization-bundle.js.map +1 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +10 -3
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/effective-builtins.d.ts +38 -0
- package/dist/skills/effective-builtins.d.ts.map +1 -0
- package/dist/skills/effective-builtins.js +96 -0
- package/dist/skills/effective-builtins.js.map +1 -0
- package/dist/skills/injection-mode.d.ts +4 -1
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +11 -3
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +24 -1
- package/dist/skills/installer.js.map +1 -1
- package/dist/skills/prompt-fragments.d.ts +58 -0
- package/dist/skills/prompt-fragments.d.ts.map +1 -0
- package/dist/skills/prompt-fragments.js +88 -0
- package/dist/skills/prompt-fragments.js.map +1 -0
- package/dist/types.d.ts +51 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.d.ts +50 -0
- package/dist/utils/cli-usage-limit.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.js +43 -0
- package/dist/utils/cli-usage-limit.js.map +1 -1
- package/dist/utils/idle-detector.d.ts +12 -0
- package/dist/utils/idle-detector.d.ts.map +1 -1
- package/dist/utils/idle-detector.js +88 -2
- package/dist/utils/idle-detector.js.map +1 -1
- package/dist/utils/stuck-detector.d.ts +5 -0
- package/dist/utils/stuck-detector.d.ts.map +1 -1
- package/dist/utils/stuck-detector.js +41 -0
- package/dist/utils/stuck-detector.js.map +1 -1
- package/dist/utils/usage-limit-tracker.d.ts +46 -0
- package/dist/utils/usage-limit-tracker.d.ts.map +1 -0
- package/dist/utils/usage-limit-tracker.js +91 -0
- package/dist/utils/usage-limit-tracker.js.map +1 -0
- package/dist/utils/user-token.js +1 -1
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker.js +812 -125
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +14 -14
- package/dist/workflows/events/payloads.d.ts +12 -12
- package/dist/workflows/events/schema.d.ts +164 -164
- package/dist/workflows/migration/v2-to-v3.js +1 -1
- package/dist/workflows/migration/v2-to-v3.js.map +1 -1
- package/dist/workflows/v3/architect.d.ts.map +1 -1
- package/dist/workflows/v3/architect.js +11 -5
- package/dist/workflows/v3/architect.js.map +1 -1
- package/dist/workflows/v3/artifact-contract-declarations.d.ts +22 -0
- package/dist/workflows/v3/artifact-contract-declarations.d.ts.map +1 -0
- package/dist/workflows/v3/artifact-contract-declarations.js +95 -0
- package/dist/workflows/v3/artifact-contract-declarations.js.map +1 -0
- package/dist/workflows/v3/contract.d.ts +1 -0
- package/dist/workflows/v3/contract.d.ts.map +1 -1
- package/dist/workflows/v3/contract.js.map +1 -1
- package/dist/workflows/v3/daemon-run.d.ts +2 -2
- package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
- package/dist/workflows/v3/daemon-run.js +4 -0
- package/dist/workflows/v3/daemon-run.js.map +1 -1
- package/dist/workflows/v3/dag.d.ts +7 -0
- package/dist/workflows/v3/dag.d.ts.map +1 -1
- package/dist/workflows/v3/dag.js +69 -8
- package/dist/workflows/v3/dag.js.map +1 -1
- package/dist/workflows/v3/ephemeral-pool.js +1 -1
- package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
- package/dist/workflows/v3/event-contract.d.ts +3 -1
- package/dist/workflows/v3/event-contract.d.ts.map +1 -1
- package/dist/workflows/v3/host.d.ts.map +1 -1
- package/dist/workflows/v3/host.js +5 -1
- package/dist/workflows/v3/host.js.map +1 -1
- package/dist/workflows/v3/journal.d.ts +1 -1
- package/dist/workflows/v3/journal.d.ts.map +1 -1
- package/dist/workflows/v3/journal.js.map +1 -1
- package/dist/workflows/v3/library-materialize.d.ts.map +1 -1
- package/dist/workflows/v3/library-materialize.js +9 -1
- package/dist/workflows/v3/library-materialize.js.map +1 -1
- package/dist/workflows/v3/library-schema.d.ts +3 -1
- package/dist/workflows/v3/library-schema.d.ts.map +1 -1
- package/dist/workflows/v3/library-schema.js +20 -4
- package/dist/workflows/v3/library-schema.js.map +1 -1
- package/dist/workflows/v3/library-store.d.ts.map +1 -1
- package/dist/workflows/v3/library-store.js +15 -3
- package/dist/workflows/v3/library-store.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +16 -16
- package/dist/workflows/v3/shared-node-runtime.d.ts +2 -1
- package/dist/workflows/v3/shared-node-runtime.d.ts.map +1 -1
- package/dist/workflows/v3/shared-node-runtime.js +48 -7
- package/dist/workflows/v3/shared-node-runtime.js.map +1 -1
- package/package.json +2 -1
- package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +0 -1
- package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +0 -10
- package/dist/dashboard-web/chunks/chunk-22WIADUT.js +0 -2
- package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +0 -1
- package/dist/dashboard-web/chunks/chunk-2W6SCN3M.js +0 -1
- package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +0 -1
- package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +0 -66
- package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
- package/dist/dashboard-web/chunks/chunk-AGCPF6MT.js +0 -1
- package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +0 -1
- package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-VOISXXII.js +0 -1
- package/dist/dashboard-web/chunks/feedback-page-RN6HRZMS.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +0 -8
- package/dist/dashboard-web/chunks/monitoring-page-NKEKVQAP.js +0 -2
- package/dist/dashboard-web/chunks/office-page-GVJF73XW.js +0 -1
- package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +0 -1
- package/dist/dashboard-web/chunks/plugin-page-J3OF5IY4.js +0 -1
- package/dist/dashboard-web/chunks/roles-page-WQIRSOLZ.js +0 -1
- package/dist/dashboard-web/chunks/schedules-page-J2DEY2X6.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +0 -8
- package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +0 -2
- package/dist/dashboard-web/chunks/skills-page-HGIFR3IU.js +0 -4
- package/dist/dashboard-web/chunks/team-federation-page-MR5ZPL4B.js +0 -1
- package/dist/dashboard-web/chunks/v3-page-GBR5JWPE.js +0 -94
- package/dist/dashboard-web/chunks/whiteboards-page-QAZM4BN3.js +0 -1
- package/dist/services/vc-meeting-consumer-profile-store.d.ts +0 -39
- package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-store.js +0 -191
- package/dist/services/vc-meeting-consumer-profile-store.js.map +0 -1
|
@@ -8124,52 +8124,50 @@ dialog.onboarding-dialog::backdrop {
|
|
|
8124
8124
|
.chrome-body {
|
|
8125
8125
|
flex: 1;
|
|
8126
8126
|
min-height: 0;
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
padding: 16px var(--chrome-x) 24px;
|
|
8127
|
+
/* 侧边栏悬浮成 fixed 卡片后不再占栅格列:主内容区用 .workspace 的
|
|
8128
|
+
margin-left 让出侧栏 + 间隙(见 .workspace),这里只留右/上/下内边距。 */
|
|
8129
|
+
display: block;
|
|
8130
|
+
padding: 16px var(--chrome-x) 24px 0;
|
|
8132
8131
|
overflow: hidden;
|
|
8133
|
-
transition: grid-template-columns 220ms cubic-bezier(.2, .8, .2, 1);
|
|
8134
8132
|
}
|
|
8135
8133
|
|
|
8136
8134
|
.workspace {
|
|
8137
8135
|
min-width: 0;
|
|
8138
8136
|
min-height: 0;
|
|
8137
|
+
/* chrome-body 改块级流后没有 grid stretch 给高度:显式撑满,main 的
|
|
8138
|
+
flex:1 + overflow-y:auto 才有确定的可滚动高度(移动端在 media query 里
|
|
8139
|
+
改回 flex:1,由 flex 分配高度)。 */
|
|
8140
|
+
height: 100%;
|
|
8139
8141
|
display: flex;
|
|
8140
8142
|
flex-direction: column;
|
|
8141
8143
|
overflow: visible;
|
|
8144
|
+
margin-left: calc(var(--sidebar-w, 248px) + 48px);
|
|
8142
8145
|
}
|
|
8143
8146
|
|
|
8144
|
-
/* ──
|
|
8147
|
+
/* ── 悬浮导航卡片:fixed 贴左侧悬浮,主内容区用 margin-left 让位 ──────────── */
|
|
8145
8148
|
.sidebar {
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8149
|
+
position: fixed;
|
|
8150
|
+
top: calc(var(--topbar-h) + 16px);
|
|
8151
|
+
bottom: 16px;
|
|
8152
|
+
left: 16px;
|
|
8153
|
+
z-index: 15;
|
|
8154
|
+
width: var(--sidebar-w, 248px);
|
|
8155
|
+
/* flex column:创建按钮常驻顶部,导航区占满剩余高度并在矮屏内部纵向滚动。 */
|
|
8152
8156
|
display: flex;
|
|
8153
8157
|
flex-direction: column;
|
|
8154
8158
|
margin: 0;
|
|
8155
|
-
padding:
|
|
8159
|
+
padding: var(--sp-4) var(--sp-3);
|
|
8156
8160
|
border: 1px solid var(--border);
|
|
8157
|
-
border-radius: var(--radius-
|
|
8158
|
-
background:
|
|
8159
|
-
box-shadow:
|
|
8160
|
-
overflow:
|
|
8161
|
+
border-radius: var(--radius-lg);
|
|
8162
|
+
background: var(--surface);
|
|
8163
|
+
box-shadow: var(--sh-md);
|
|
8164
|
+
overflow-y: auto;
|
|
8161
8165
|
transition:
|
|
8162
8166
|
padding 180ms ease,
|
|
8163
8167
|
border-radius 180ms ease,
|
|
8164
8168
|
background-color 160ms ease,
|
|
8165
8169
|
box-shadow 160ms ease;
|
|
8166
8170
|
}
|
|
8167
|
-
:root[data-theme="dark"] .sidebar {
|
|
8168
|
-
background: color-mix(in srgb, var(--surface) 96%, var(--bg));
|
|
8169
|
-
backdrop-filter: none;
|
|
8170
|
-
border-color: var(--border);
|
|
8171
|
-
box-shadow: 0 22px 56px rgba(0, 0, 0, 0.28);
|
|
8172
|
-
}
|
|
8173
8171
|
|
|
8174
8172
|
.sidebar-create-actions {
|
|
8175
8173
|
display: grid;
|
|
@@ -8243,6 +8241,18 @@ button.sidebar-create-btn:focus-visible {
|
|
|
8243
8241
|
overflow-y: auto;
|
|
8244
8242
|
padding-right: 2px;
|
|
8245
8243
|
}
|
|
8244
|
+
.nav-group-title {
|
|
8245
|
+
font-size: 11px;
|
|
8246
|
+
font-weight: 600;
|
|
8247
|
+
color: var(--fg-4, #b0b6c6);
|
|
8248
|
+
text-transform: uppercase;
|
|
8249
|
+
letter-spacing: .7px;
|
|
8250
|
+
padding: 0 var(--sp-3) var(--sp-2);
|
|
8251
|
+
margin-top: var(--sp-4);
|
|
8252
|
+
}
|
|
8253
|
+
.nav-group:first-child .nav-group-title {
|
|
8254
|
+
margin-top: 0;
|
|
8255
|
+
}
|
|
8246
8256
|
.sidebar-nav a {
|
|
8247
8257
|
position: relative;
|
|
8248
8258
|
display: flex;
|
|
@@ -8256,7 +8266,6 @@ button.sidebar-create-btn:focus-visible {
|
|
|
8256
8266
|
font-size: 13px;
|
|
8257
8267
|
font-weight: 600;
|
|
8258
8268
|
text-decoration: none;
|
|
8259
|
-
overflow: hidden;
|
|
8260
8269
|
outline: none;
|
|
8261
8270
|
isolation: isolate;
|
|
8262
8271
|
transition:
|
|
@@ -8329,6 +8338,18 @@ button.sidebar-create-btn:focus-visible {
|
|
|
8329
8338
|
.sidebar-nav a.active svg {
|
|
8330
8339
|
transform: translateX(1px);
|
|
8331
8340
|
}
|
|
8341
|
+
/* active 左侧指示条:::before 已被 hover/active 底色占用,指示条走 ::after。
|
|
8342
|
+
锚点不得 overflow:hidden,否则 left:-3px 的探出部分会被裁掉。 */
|
|
8343
|
+
.sidebar-nav a.active::after {
|
|
8344
|
+
content: "";
|
|
8345
|
+
position: absolute;
|
|
8346
|
+
left: -3px;
|
|
8347
|
+
top: 8px;
|
|
8348
|
+
bottom: 8px;
|
|
8349
|
+
width: 3px;
|
|
8350
|
+
border-radius: var(--radius-full);
|
|
8351
|
+
background: var(--accent);
|
|
8352
|
+
}
|
|
8332
8353
|
.sidebar-nav a:focus,
|
|
8333
8354
|
.sidebar-nav a:focus-visible {
|
|
8334
8355
|
outline: none;
|
|
@@ -10212,13 +10233,9 @@ button.contrast:hover { background: var(--danger-soft); border-color: var(--dang
|
|
|
10212
10233
|
.active-sessions-panel,
|
|
10213
10234
|
.schedules-panel {
|
|
10214
10235
|
display: flex;
|
|
10215
|
-
min-height: var(--active-sessions-min-height, 260px);
|
|
10216
10236
|
border-radius: var(--radius-lg);
|
|
10217
10237
|
overflow: hidden;
|
|
10218
10238
|
}
|
|
10219
|
-
.schedules-panel {
|
|
10220
|
-
min-height: var(--schedules-panel-min-height, 260px);
|
|
10221
|
-
}
|
|
10222
10239
|
.active-sessions-panel > .overview-list,
|
|
10223
10240
|
.schedules-panel > .overview-list {
|
|
10224
10241
|
flex: 1;
|
|
@@ -13263,6 +13280,14 @@ dialog :where(input:not([type=checkbox], [type=radio]), select, textarea) {
|
|
|
13263
13280
|
overflow-x: auto;
|
|
13264
13281
|
overflow-y: hidden;
|
|
13265
13282
|
}
|
|
13283
|
+
/* 窄屏恢复横向 rail:组容器退化为 contents(锚点直接参与 flex 排列),
|
|
13284
|
+
组标题隐藏,保持与改造前一致的横向滚动导航条。 */
|
|
13285
|
+
.sidebar-nav .nav-group {
|
|
13286
|
+
display: contents;
|
|
13287
|
+
}
|
|
13288
|
+
.sidebar-nav .nav-group-title {
|
|
13289
|
+
display: none;
|
|
13290
|
+
}
|
|
13266
13291
|
.sidebar-nav a {
|
|
13267
13292
|
flex: 0 0 auto;
|
|
13268
13293
|
}
|
|
@@ -13270,10 +13295,9 @@ dialog :where(input:not([type=checkbox], [type=radio]), select, textarea) {
|
|
|
13270
13295
|
flex: 1;
|
|
13271
13296
|
min-height: 0;
|
|
13272
13297
|
overflow: hidden;
|
|
13298
|
+
margin-left: 0;
|
|
13273
13299
|
}
|
|
13274
13300
|
.overview-layout { grid-template-columns: 1fr; }
|
|
13275
|
-
.active-sessions-panel { min-height: auto; }
|
|
13276
|
-
.schedules-panel { min-height: auto; }
|
|
13277
13301
|
}
|
|
13278
13302
|
|
|
13279
13303
|
@media (max-width: 520px) {
|
|
@@ -18766,10 +18790,103 @@ form.dashboard-toolbar > input[type="text"]:focus {
|
|
|
18766
18790
|
|
|
18767
18791
|
.settings-layout {
|
|
18768
18792
|
display: grid;
|
|
18769
|
-
|
|
18793
|
+
grid-template-columns: 180px minmax(0, 1fr);
|
|
18794
|
+
gap: 20px;
|
|
18770
18795
|
width: 100%;
|
|
18771
18796
|
max-width: none;
|
|
18772
18797
|
min-width: 0;
|
|
18798
|
+
align-items: start;
|
|
18799
|
+
}
|
|
18800
|
+
|
|
18801
|
+
.settings-content {
|
|
18802
|
+
display: grid;
|
|
18803
|
+
gap: 12px;
|
|
18804
|
+
min-width: 0;
|
|
18805
|
+
}
|
|
18806
|
+
|
|
18807
|
+
/* ── 粘性锚点导航 ───────────────────────────────────────────────────────── */
|
|
18808
|
+
.settings-nav {
|
|
18809
|
+
position: sticky;
|
|
18810
|
+
top: calc(var(--topbar-height, 56px) + 12px);
|
|
18811
|
+
display: flex;
|
|
18812
|
+
flex-direction: column;
|
|
18813
|
+
gap: var(--sp-4);
|
|
18814
|
+
padding: var(--sp-3) 0;
|
|
18815
|
+
}
|
|
18816
|
+
|
|
18817
|
+
.settings-nav-group {
|
|
18818
|
+
display: flex;
|
|
18819
|
+
flex-direction: column;
|
|
18820
|
+
gap: 2px;
|
|
18821
|
+
}
|
|
18822
|
+
|
|
18823
|
+
.settings-nav-group-label {
|
|
18824
|
+
margin: 0 0 4px;
|
|
18825
|
+
padding: 0 var(--sp-2);
|
|
18826
|
+
font-size: var(--fs-12);
|
|
18827
|
+
font-weight: 700;
|
|
18828
|
+
color: var(--fg);
|
|
18829
|
+
text-transform: uppercase;
|
|
18830
|
+
letter-spacing: 0.06em;
|
|
18831
|
+
}
|
|
18832
|
+
|
|
18833
|
+
.settings-nav-link {
|
|
18834
|
+
display: block;
|
|
18835
|
+
width: 100%;
|
|
18836
|
+
padding: 5px var(--sp-2) 5px calc(var(--sp-2) + 8px);
|
|
18837
|
+
border: none;
|
|
18838
|
+
border-left: 2px solid transparent;
|
|
18839
|
+
background: none;
|
|
18840
|
+
color: var(--muted);
|
|
18841
|
+
font-size: var(--fs-13);
|
|
18842
|
+
text-align: left;
|
|
18843
|
+
cursor: pointer;
|
|
18844
|
+
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
|
18845
|
+
transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
|
|
18846
|
+
}
|
|
18847
|
+
|
|
18848
|
+
.settings-nav-link:hover {
|
|
18849
|
+
color: var(--fg);
|
|
18850
|
+
background: var(--surface-muted);
|
|
18851
|
+
}
|
|
18852
|
+
|
|
18853
|
+
.settings-nav-link.is-active {
|
|
18854
|
+
color: var(--accent);
|
|
18855
|
+
border-left-color: var(--accent);
|
|
18856
|
+
font-weight: 600;
|
|
18857
|
+
}
|
|
18858
|
+
|
|
18859
|
+
@media (max-width: 960px) {
|
|
18860
|
+
.settings-layout {
|
|
18861
|
+
grid-template-columns: 1fr;
|
|
18862
|
+
}
|
|
18863
|
+
.settings-nav {
|
|
18864
|
+
position: static;
|
|
18865
|
+
flex-direction: row;
|
|
18866
|
+
flex-wrap: wrap;
|
|
18867
|
+
gap: var(--sp-2);
|
|
18868
|
+
padding: 0;
|
|
18869
|
+
}
|
|
18870
|
+
.settings-nav-group {
|
|
18871
|
+
flex-direction: row;
|
|
18872
|
+
flex-wrap: wrap;
|
|
18873
|
+
align-items: center;
|
|
18874
|
+
gap: var(--sp-1);
|
|
18875
|
+
}
|
|
18876
|
+
.settings-nav-group-label {
|
|
18877
|
+
margin: 0;
|
|
18878
|
+
padding: 0;
|
|
18879
|
+
}
|
|
18880
|
+
.settings-nav-link {
|
|
18881
|
+
width: auto;
|
|
18882
|
+
padding: 3px 10px;
|
|
18883
|
+
border: 1px solid var(--border-soft);
|
|
18884
|
+
border-radius: var(--radius-full);
|
|
18885
|
+
font-size: var(--fs-12);
|
|
18886
|
+
}
|
|
18887
|
+
.settings-nav-link.is-active {
|
|
18888
|
+
border-left-color: var(--accent);
|
|
18889
|
+
}
|
|
18773
18890
|
}
|
|
18774
18891
|
|
|
18775
18892
|
.settings-module {
|
|
@@ -19060,7 +19177,32 @@ form.dashboard-toolbar > input[type="text"]:focus {
|
|
|
19060
19177
|
|
|
19061
19178
|
.settings-alert-card,
|
|
19062
19179
|
.settings-status-row {
|
|
19063
|
-
|
|
19180
|
+
position: fixed;
|
|
19181
|
+
right: 20px;
|
|
19182
|
+
bottom: 20px;
|
|
19183
|
+
z-index: 900;
|
|
19184
|
+
pointer-events: none;
|
|
19185
|
+
}
|
|
19186
|
+
|
|
19187
|
+
.settings-status-row .oncall-status {
|
|
19188
|
+
display: inline-block;
|
|
19189
|
+
padding: 6px 14px;
|
|
19190
|
+
border-radius: var(--radius-full);
|
|
19191
|
+
background: var(--surface);
|
|
19192
|
+
border: 1px solid var(--border-soft);
|
|
19193
|
+
box-shadow: var(--sh-md);
|
|
19194
|
+
font-size: var(--fs-12);
|
|
19195
|
+
transition: opacity var(--t-norm), transform var(--t-norm);
|
|
19196
|
+
}
|
|
19197
|
+
|
|
19198
|
+
.settings-status-row .oncall-status:empty {
|
|
19199
|
+
opacity: 0;
|
|
19200
|
+
transform: translateY(4px);
|
|
19201
|
+
}
|
|
19202
|
+
|
|
19203
|
+
.settings-status-row .oncall-status.hint-ok {
|
|
19204
|
+
border-color: color-mix(in srgb, var(--success, var(--st-ok)) 40%, var(--border-soft));
|
|
19205
|
+
color: var(--success, var(--st-ok));
|
|
19064
19206
|
}
|
|
19065
19207
|
|
|
19066
19208
|
.settings-block {
|
|
@@ -19347,14 +19489,6 @@ form.dashboard-toolbar > input[type="text"]:focus {
|
|
|
19347
19489
|
margin-top: 0;
|
|
19348
19490
|
}
|
|
19349
19491
|
|
|
19350
|
-
.settings-status-row {
|
|
19351
|
-
min-height: 24px;
|
|
19352
|
-
}
|
|
19353
|
-
|
|
19354
|
-
.settings-status-row .oncall-status:empty {
|
|
19355
|
-
display: none;
|
|
19356
|
-
}
|
|
19357
|
-
|
|
19358
19492
|
.update-actions .page-primary-action {
|
|
19359
19493
|
border-color: color-mix(in srgb, var(--accent) 58%, var(--border-soft));
|
|
19360
19494
|
background: transparent;
|
|
@@ -22964,6 +23098,15 @@ dialog select[multiple]:hover:not(:disabled) {
|
|
|
22964
23098
|
outline-offset: -4px;
|
|
22965
23099
|
}
|
|
22966
23100
|
|
|
23101
|
+
/* 保存成功状态 1.5s 后淡出(StatusSpan 以文案为 key 重挂载以重启动画) */
|
|
23102
|
+
.bot-defaults-page .oncall-status.hint-ok {
|
|
23103
|
+
animation: bd-status-fade 0.3s ease 1.5s forwards;
|
|
23104
|
+
}
|
|
23105
|
+
|
|
23106
|
+
@keyframes bd-status-fade {
|
|
23107
|
+
to { opacity: 0; transform: translateY(-2px); }
|
|
23108
|
+
}
|
|
23109
|
+
|
|
22967
23110
|
.bot-defaults-page .bd-tab-hint {
|
|
22968
23111
|
flex: none;
|
|
22969
23112
|
color: var(--faint);
|
|
@@ -24052,6 +24195,60 @@ dialog select[multiple]:hover:not(:disabled) {
|
|
|
24052
24195
|
z-index: 1300;
|
|
24053
24196
|
}
|
|
24054
24197
|
|
|
24198
|
+
/* ── ModelPickerField:下拉候选 + 自定义输入(defaults 页与 onboarding 共用) ── */
|
|
24199
|
+
.bd-model-picker {
|
|
24200
|
+
display: grid;
|
|
24201
|
+
gap: 6px;
|
|
24202
|
+
min-width: 0;
|
|
24203
|
+
}
|
|
24204
|
+
|
|
24205
|
+
/* 自定义模式:输入框与返回按钮并排,输入框占满剩余宽度 */
|
|
24206
|
+
.bd-model-custom {
|
|
24207
|
+
display: flex;
|
|
24208
|
+
gap: 8px;
|
|
24209
|
+
align-items: center;
|
|
24210
|
+
min-width: 0;
|
|
24211
|
+
}
|
|
24212
|
+
|
|
24213
|
+
.bd-model-custom > input[type="text"] {
|
|
24214
|
+
flex: 1 1 auto;
|
|
24215
|
+
min-width: 0;
|
|
24216
|
+
}
|
|
24217
|
+
|
|
24218
|
+
.bd-model-back {
|
|
24219
|
+
flex: none;
|
|
24220
|
+
min-height: var(--button-height);
|
|
24221
|
+
padding: 0 var(--button-padding-x);
|
|
24222
|
+
}
|
|
24223
|
+
|
|
24224
|
+
/* live 探测进行中:控件下方小转圈(无文案,避免再增 i18n key) */
|
|
24225
|
+
.bd-model-busy {
|
|
24226
|
+
display: inline-flex;
|
|
24227
|
+
align-items: center;
|
|
24228
|
+
gap: 6px;
|
|
24229
|
+
color: var(--muted);
|
|
24230
|
+
font-size: 11px;
|
|
24231
|
+
line-height: 1.4;
|
|
24232
|
+
}
|
|
24233
|
+
|
|
24234
|
+
.bd-model-spinner {
|
|
24235
|
+
width: 12px;
|
|
24236
|
+
height: 12px;
|
|
24237
|
+
flex: none;
|
|
24238
|
+
border: 2px solid color-mix(in srgb, currentColor 34%, transparent);
|
|
24239
|
+
border-top-color: currentColor;
|
|
24240
|
+
border-radius: 50%;
|
|
24241
|
+
animation: page-loading-rotate 0.8s linear infinite;
|
|
24242
|
+
}
|
|
24243
|
+
|
|
24244
|
+
/* 探测结果提示(「已探测 N 个可用模型」) */
|
|
24245
|
+
.bd-model-detected {
|
|
24246
|
+
color: var(--muted);
|
|
24247
|
+
font-size: 11px;
|
|
24248
|
+
font-weight: 500;
|
|
24249
|
+
line-height: 1.45;
|
|
24250
|
+
}
|
|
24251
|
+
|
|
24055
24252
|
.bot-defaults-page :where(.bd-section, .bd-subsection) > .actions,
|
|
24056
24253
|
.bot-defaults-page .bd-row > .actions {
|
|
24057
24254
|
justify-content: flex-end;
|
|
@@ -26714,33 +26911,27 @@ button.ui-refresh-button.is-loading .ui-action-icon {
|
|
|
26714
26911
|
}
|
|
26715
26912
|
}
|
|
26716
26913
|
|
|
26717
|
-
/* ── Schedule create/edit form modal
|
|
26718
|
-
.schedule-form-overlay {
|
|
26719
|
-
position: fixed;
|
|
26720
|
-
inset: 0;
|
|
26721
|
-
background: color-mix(in srgb, var(--bg) 72%, transparent);
|
|
26722
|
-
backdrop-filter: blur(3px);
|
|
26723
|
-
display: flex;
|
|
26724
|
-
align-items: center;
|
|
26725
|
-
justify-content: center;
|
|
26726
|
-
z-index: 1000;
|
|
26727
|
-
padding: 24px;
|
|
26728
|
-
}
|
|
26729
|
-
|
|
26914
|
+
/* ── Schedule create/edit form modal(原生 <dialog>) ────────────────────── */
|
|
26730
26915
|
.schedule-form-dialog {
|
|
26731
26916
|
background: var(--surface);
|
|
26732
26917
|
border: 1px solid var(--border-soft);
|
|
26733
|
-
border-radius:
|
|
26734
|
-
box-shadow:
|
|
26735
|
-
width: min(560px,
|
|
26918
|
+
border-radius: var(--radius-lg);
|
|
26919
|
+
box-shadow: var(--sh-lg);
|
|
26920
|
+
width: min(560px, calc(100vw - 32px));
|
|
26736
26921
|
max-height: 90dvh;
|
|
26737
26922
|
overflow-y: auto;
|
|
26738
26923
|
padding: 24px;
|
|
26924
|
+
color: var(--text);
|
|
26925
|
+
}
|
|
26926
|
+
|
|
26927
|
+
.schedule-form-dialog::backdrop {
|
|
26928
|
+
background: color-mix(in srgb, var(--bg) 72%, transparent);
|
|
26929
|
+
backdrop-filter: blur(3px);
|
|
26739
26930
|
}
|
|
26740
26931
|
|
|
26741
26932
|
.schedule-form-dialog h2 {
|
|
26742
26933
|
margin: 0 0 16px;
|
|
26743
|
-
font-size:
|
|
26934
|
+
font-size: var(--fs-17);
|
|
26744
26935
|
}
|
|
26745
26936
|
|
|
26746
26937
|
.schedule-form {
|
|
@@ -26766,7 +26957,7 @@ button.ui-refresh-button.is-loading .ui-action-icon {
|
|
|
26766
26957
|
width: 100%;
|
|
26767
26958
|
padding: 8px 10px;
|
|
26768
26959
|
border: 1px solid var(--border-soft);
|
|
26769
|
-
border-radius:
|
|
26960
|
+
border-radius: var(--radius-sm);
|
|
26770
26961
|
background: var(--surface);
|
|
26771
26962
|
color: var(--text);
|
|
26772
26963
|
font-size: 13px;
|
|
@@ -26841,58 +27032,140 @@ button.ui-refresh-button.is-loading .ui-action-icon {
|
|
|
26841
27032
|
margin: 0;
|
|
26842
27033
|
}
|
|
26843
27034
|
|
|
26844
|
-
|
|
26845
|
-
|
|
26846
|
-
|
|
26847
|
-
|
|
26848
|
-
|
|
27035
|
+
/* 必填星号 */
|
|
27036
|
+
.schedule-form-label .req {
|
|
27037
|
+
color: var(--danger);
|
|
27038
|
+
font-style: normal;
|
|
27039
|
+
font-weight: 700;
|
|
26849
27040
|
}
|
|
26850
27041
|
|
|
26851
|
-
|
|
26852
|
-
.schedule-form-
|
|
26853
|
-
|
|
26854
|
-
|
|
26855
|
-
font-size: 13px;
|
|
26856
|
-
cursor: pointer;
|
|
26857
|
-
border: 1px solid var(--border-soft);
|
|
27042
|
+
/* 内联校验错误 / 下次执行预览 */
|
|
27043
|
+
.schedule-form-error-inline {
|
|
27044
|
+
font-size: 11px;
|
|
27045
|
+
color: var(--danger);
|
|
26858
27046
|
}
|
|
26859
27047
|
|
|
26860
|
-
.schedule-form-
|
|
26861
|
-
|
|
26862
|
-
color: var(--
|
|
27048
|
+
.schedule-form-preview {
|
|
27049
|
+
font-size: 11px;
|
|
27050
|
+
color: var(--success, var(--st-ok));
|
|
26863
27051
|
}
|
|
26864
27052
|
|
|
26865
|
-
|
|
26866
|
-
|
|
26867
|
-
|
|
26868
|
-
|
|
27053
|
+
/* 快捷模板 chips */
|
|
27054
|
+
.schedule-templates {
|
|
27055
|
+
display: flex;
|
|
27056
|
+
flex-wrap: wrap;
|
|
27057
|
+
gap: 6px;
|
|
27058
|
+
margin-bottom: 6px;
|
|
26869
27059
|
}
|
|
26870
27060
|
|
|
26871
|
-
.schedule-
|
|
26872
|
-
|
|
26873
|
-
|
|
27061
|
+
.schedule-template-chip {
|
|
27062
|
+
padding: 4px 10px;
|
|
27063
|
+
border: 1px solid var(--border-soft);
|
|
27064
|
+
border-radius: var(--radius-full);
|
|
27065
|
+
background: var(--surface);
|
|
27066
|
+
color: var(--muted);
|
|
27067
|
+
font-size: 11px;
|
|
27068
|
+
cursor: pointer;
|
|
27069
|
+
transition: border-color var(--t-fast), color var(--t-fast), background var(--t-fast);
|
|
26874
27070
|
}
|
|
26875
27071
|
|
|
26876
|
-
.schedule-
|
|
26877
|
-
|
|
26878
|
-
|
|
27072
|
+
.schedule-template-chip:hover {
|
|
27073
|
+
border-color: var(--accent);
|
|
27074
|
+
color: var(--accent);
|
|
26879
27075
|
}
|
|
26880
27076
|
|
|
26881
|
-
.schedule-
|
|
26882
|
-
color: var(--
|
|
26883
|
-
|
|
27077
|
+
.schedule-template-chip.is-active {
|
|
27078
|
+
border-color: var(--accent);
|
|
27079
|
+
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
|
27080
|
+
color: var(--accent);
|
|
27081
|
+
font-weight: 600;
|
|
26884
27082
|
}
|
|
26885
27083
|
|
|
26886
|
-
/*
|
|
26887
|
-
|
|
26888
|
-
|
|
26889
|
-
|
|
26890
|
-
|
|
26891
|
-
.skills-usage-chip,
|
|
26892
|
-
.skills-missing-skill-chip {
|
|
27084
|
+
/* 手动输入 / 返回选择 链接 */
|
|
27085
|
+
.schedule-form-link {
|
|
27086
|
+
align-self: flex-start;
|
|
27087
|
+
margin-top: 4px;
|
|
27088
|
+
padding: 0;
|
|
26893
27089
|
border: none;
|
|
26894
|
-
|
|
26895
|
-
|
|
27090
|
+
background: none;
|
|
27091
|
+
color: var(--accent);
|
|
27092
|
+
font-size: 11px;
|
|
27093
|
+
cursor: pointer;
|
|
27094
|
+
text-decoration: underline;
|
|
27095
|
+
text-underline-offset: 2px;
|
|
27096
|
+
}
|
|
27097
|
+
|
|
27098
|
+
/* select 与输入框同宽同风格 */
|
|
27099
|
+
.schedule-form-field select {
|
|
27100
|
+
width: 100%;
|
|
27101
|
+
padding: 8px 10px;
|
|
27102
|
+
border: 1px solid var(--border-soft);
|
|
27103
|
+
border-radius: var(--radius-sm);
|
|
27104
|
+
background: var(--surface);
|
|
27105
|
+
color: var(--text);
|
|
27106
|
+
font-size: 13px;
|
|
27107
|
+
font-family: inherit;
|
|
27108
|
+
}
|
|
27109
|
+
|
|
27110
|
+
/* aria-invalid 红框 */
|
|
27111
|
+
.schedule-form-field input[aria-invalid="true"],
|
|
27112
|
+
.schedule-form-field select[aria-invalid="true"],
|
|
27113
|
+
.schedule-form-field textarea[aria-invalid="true"] {
|
|
27114
|
+
border-color: var(--danger);
|
|
27115
|
+
}
|
|
27116
|
+
|
|
27117
|
+
.schedule-form-actions {
|
|
27118
|
+
display: flex;
|
|
27119
|
+
justify-content: flex-end;
|
|
27120
|
+
gap: 10px;
|
|
27121
|
+
margin-top: 8px;
|
|
27122
|
+
}
|
|
27123
|
+
|
|
27124
|
+
.schedule-form-cancel,
|
|
27125
|
+
.schedule-form-submit {
|
|
27126
|
+
padding: 8px 16px;
|
|
27127
|
+
border-radius: var(--radius-sm);
|
|
27128
|
+
font-size: 13px;
|
|
27129
|
+
cursor: pointer;
|
|
27130
|
+
border: 1px solid var(--border-soft);
|
|
27131
|
+
}
|
|
27132
|
+
|
|
27133
|
+
.schedule-form-cancel {
|
|
27134
|
+
background: transparent;
|
|
27135
|
+
color: var(--text);
|
|
27136
|
+
}
|
|
27137
|
+
|
|
27138
|
+
.schedule-form-submit {
|
|
27139
|
+
background: var(--accent);
|
|
27140
|
+
color: #fff;
|
|
27141
|
+
border-color: var(--accent);
|
|
27142
|
+
}
|
|
27143
|
+
|
|
27144
|
+
.schedule-form-submit:disabled {
|
|
27145
|
+
opacity: 0.5;
|
|
27146
|
+
cursor: not-allowed;
|
|
27147
|
+
}
|
|
27148
|
+
|
|
27149
|
+
.schedule-edit-button,
|
|
27150
|
+
.schedule-delete-button {
|
|
27151
|
+
min-width: 56px !important;
|
|
27152
|
+
}
|
|
27153
|
+
|
|
27154
|
+
.schedule-delete-button {
|
|
27155
|
+
color: var(--danger) !important;
|
|
27156
|
+
border-color: color-mix(in srgb, var(--danger) 48%, var(--border-soft)) !important;
|
|
27157
|
+
}
|
|
27158
|
+
|
|
27159
|
+
/* --- Skills page: cross-link chips, issue strip, focus highlights --- */
|
|
27160
|
+
/* Chips rendered as <button> for click-through navigation: strip default button chrome */
|
|
27161
|
+
button.skills-pack-chip,
|
|
27162
|
+
button.skills-skill-chip,
|
|
27163
|
+
button.skills-pack-ref-chip,
|
|
27164
|
+
.skills-usage-chip,
|
|
27165
|
+
.skills-missing-skill-chip {
|
|
27166
|
+
border: none;
|
|
27167
|
+
font-family: inherit;
|
|
27168
|
+
cursor: pointer;
|
|
26896
27169
|
}
|
|
26897
27170
|
button.skills-pack-chip:hover:not(:disabled),
|
|
26898
27171
|
button.skills-skill-chip:hover:not(:disabled),
|
|
@@ -27277,7 +27550,8 @@ button.skills-issue-badge:hover {
|
|
|
27277
27550
|
display: grid;
|
|
27278
27551
|
place-items: center;
|
|
27279
27552
|
padding: 20px;
|
|
27280
|
-
|
|
27553
|
+
/* 主题感知的遮罩:暗色下更深、亮色下偏灰蓝,跟 .feishu-login-overlay 一致 */
|
|
27554
|
+
background: var(--modal-backdrop, rgb(15 23 42 / 62%));
|
|
27281
27555
|
}
|
|
27282
27556
|
|
|
27283
27557
|
.feed-group-auth-card {
|
|
@@ -27285,18 +27559,24 @@ button.skills-issue-badge:hover {
|
|
|
27285
27559
|
padding: 24px;
|
|
27286
27560
|
border: 1px solid var(--border);
|
|
27287
27561
|
border-radius: 14px;
|
|
27288
|
-
|
|
27289
|
-
|
|
27290
|
-
|
|
27562
|
+
/* 用主题 token 而非硬编码白底/深字:暗色主题下随 --surface/--fg 翻深,
|
|
27563
|
+
不再是刺眼的白块。--panel 仅在 .insights-page 作用域定义,这里 portal 到
|
|
27564
|
+
body 后取不到,故直接用全站通用的 --surface。 */
|
|
27565
|
+
background: var(--surface);
|
|
27566
|
+
color: var(--fg);
|
|
27567
|
+
box-shadow: var(--modal-shadow, 0 24px 70px rgb(0 0 0 / 28%));
|
|
27291
27568
|
}
|
|
27292
27569
|
|
|
27293
|
-
.feed-group-auth-card h3 { margin-top: 0; }
|
|
27294
|
-
.feed-group-auth-card p
|
|
27570
|
+
.feed-group-auth-card h3 { margin-top: 0; color: var(--fg); }
|
|
27571
|
+
.feed-group-auth-card p { color: var(--muted); }
|
|
27295
27572
|
.feed-group-auth-card label,
|
|
27296
|
-
.feed-group-auth-card label span { color:
|
|
27573
|
+
.feed-group-auth-card label span { color: var(--fg); }
|
|
27297
27574
|
.feed-group-auth-card label { display: grid; gap: 8px; margin-top: 18px; }
|
|
27298
|
-
|
|
27299
|
-
|
|
27575
|
+
/* 输入框的配色/边框/内距交给全站基础 input 规则(已用 --surface-raised/--fg/
|
|
27576
|
+
--border,主题感知),那条规则带 7 个 :not() 守卫、特异性高于本作用域,这里
|
|
27577
|
+
只补它不管的布局:占满宽度 + border-box。 */
|
|
27578
|
+
.feed-group-auth-card input { width: 100%; box-sizing: border-box; }
|
|
27579
|
+
.feed-group-auth-card input::placeholder { color: var(--faint); opacity: 1; }
|
|
27300
27580
|
.feed-group-auth-card .actions { margin-top: 20px; justify-content: flex-end; }
|
|
27301
27581
|
.feed-group-auth-open {
|
|
27302
27582
|
display: inline-flex;
|
|
@@ -27305,15 +27585,15 @@ button.skills-issue-badge:hover {
|
|
|
27305
27585
|
min-height: 42px;
|
|
27306
27586
|
margin-top: 4px;
|
|
27307
27587
|
padding: 0 20px;
|
|
27308
|
-
border: 1px solid
|
|
27588
|
+
border: 1px solid var(--accent);
|
|
27309
27589
|
border-radius: 8px;
|
|
27310
|
-
color:
|
|
27311
|
-
background:
|
|
27590
|
+
color: var(--on-accent);
|
|
27591
|
+
background: var(--accent);
|
|
27312
27592
|
font-weight: 700;
|
|
27313
27593
|
cursor: pointer;
|
|
27314
27594
|
}
|
|
27315
27595
|
|
|
27316
|
-
.feed-group-auth-open:hover { background:
|
|
27596
|
+
.feed-group-auth-open:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
|
|
27317
27597
|
|
|
27318
27598
|
.cs-advanced-fields .cs-feed-group {
|
|
27319
27599
|
min-width: 0;
|
|
@@ -27696,6 +27976,32 @@ button.skills-issue-badge:hover {
|
|
|
27696
27976
|
.feedback-more { margin-top: 12px; }
|
|
27697
27977
|
@media (max-width: 1100px) { .feedback-kpis { grid-template-columns: repeat(3, 1fr); } .feedback-deliveries > div { grid-template-columns: 1fr 1fr; } }
|
|
27698
27978
|
@media (max-width: 700px) { .feedback-kpis, .feedback-grid { grid-template-columns: 1fr; } }
|
|
27979
|
+
|
|
27980
|
+
/* ── VC per-bot in-meeting output policy table ─────────────────────────── */
|
|
27981
|
+
.vc-bot-policy-table { display: flex; flex-direction: column; gap: 2px; }
|
|
27982
|
+
.vc-bot-policy-row {
|
|
27983
|
+
display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
|
|
27984
|
+
padding: 6px 8px; border-radius: 6px;
|
|
27985
|
+
}
|
|
27986
|
+
.vc-bot-policy-row:nth-child(odd) { background: color-mix(in srgb, currentColor 4%, transparent); }
|
|
27987
|
+
.vc-bot-policy-name {
|
|
27988
|
+
flex: 1 1 160px; min-width: 140px; overflow: hidden;
|
|
27989
|
+
text-overflow: ellipsis; white-space: nowrap; font-weight: 500;
|
|
27990
|
+
}
|
|
27991
|
+
.vc-bot-policy-cell { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; opacity: .92; }
|
|
27992
|
+
.vc-bot-policy-select { font-size: 12px; padding: 2px 6px; border-radius: 4px; }
|
|
27993
|
+
.vc-bot-policy-rtv input { accent-color: var(--accent, #4c8dff); }
|
|
27994
|
+
.vc-bot-policy-effective { font-size: 11px; white-space: nowrap; }
|
|
27995
|
+
.vc-bot-policy-warn { font-style: normal; margin-left: 6px; cursor: help; opacity: .85; }
|
|
27996
|
+
/* ⚠ 用 InfoTip(hover 可靠、body 传送门)而非原生 title——原生 title 小元素上常
|
|
27997
|
+
触发不了/延迟长。tip 包裹层内联不撑行,弹层多行分条列出。 */
|
|
27998
|
+
.vc-bot-policy-warn-tip { display: inline-flex; align-items: center; }
|
|
27999
|
+
.vc-bot-policy-warn-pop { display: flex; flex-direction: column; gap: 2px; text-align: left; }
|
|
28000
|
+
.vc-bot-policy-search {
|
|
28001
|
+
font-size: 12px; padding: 4px 8px; border-radius: 6px;
|
|
28002
|
+
border: 1px solid var(--border, #d0d5dd); min-width: 180px; max-width: 260px;
|
|
28003
|
+
}
|
|
28004
|
+
.vc-bot-policy-empty { padding: 12px; text-align: center; }
|
|
27699
28005
|
/* Agent Workbench — reader-flavoured terminal surface: no gradients, no decorative
|
|
27700
28006
|
rules, and independent from the Dashboard card/aurora vocabulary.
|
|
27701
28007
|
段内三条硬约束,改之前先读:
|
|
@@ -28479,6 +28785,13 @@ button.skills-issue-badge:hover {
|
|
|
28479
28785
|
.wb-mode-chip.is-interactive { color: var(--ok); background: var(--wb-success-soft); }
|
|
28480
28786
|
.wb-mode-chip.is-readonly,
|
|
28481
28787
|
.wb-mode-chip.is-preview { color: var(--warn); background: var(--wb-warning-soft); }
|
|
28788
|
+
/* 「未知」是真的第三种状态,不是只读的一种说法:接管/释放的回执丢了,这一刻既不
|
|
28789
|
+
能说已接管也不能说只读。用中性灰把它和两个确定态区分开,别借用 warn 的黄色—
|
|
28790
|
+
那会让人以为界面已经给出了只读这个结论。 */
|
|
28791
|
+
.wb-mode-chip.is-unknown { color: var(--text-2); background: var(--bg-l3); }
|
|
28792
|
+
/* 「检查中」= 首屏权威读数还没回来。和「未知」同属「没有结论」,但它是**正在收敛**
|
|
28793
|
+
的一拍,不是失败态,所以用同一套中性色、不另起一种视觉语言。 */
|
|
28794
|
+
.wb-mode-chip.is-checking { color: var(--text-3); background: var(--bg-l3); }
|
|
28482
28795
|
.wb-lease-time { color: var(--text-3); font-size: 11px; white-space: nowrap; }
|
|
28483
28796
|
.wb-pane-feedback {
|
|
28484
28797
|
overflow: hidden;
|
|
@@ -28536,7 +28849,7 @@ button.skills-issue-badge:hover {
|
|
|
28536
28849
|
}
|
|
28537
28850
|
.wb-term-reader {
|
|
28538
28851
|
--term-pad: 6px 8px 8px 8px;
|
|
28539
|
-
--term-line-height: 1.
|
|
28852
|
+
--term-line-height: 1.15;
|
|
28540
28853
|
--term-font-size: 12px;
|
|
28541
28854
|
}
|
|
28542
28855
|
.wb-pane-empty {
|
|
@@ -28578,6 +28891,34 @@ button.skills-issue-badge:hover {
|
|
|
28578
28891
|
/* 末尾那句「⋯ 菜单」是补充说明,压一号字,别和上面的正文抢注意力 */
|
|
28579
28892
|
.wb-ws-blocked p:last-of-type { font-size: 11px; }
|
|
28580
28893
|
|
|
28894
|
+
/* 控制权状态未知(回执丢了、首屏读不到)时**顶替**终端 iframe 的那一屏——不是盖在
|
|
28895
|
+
它上面:盖层只吃指针事件,焦点已经在 iframe 里时键盘照旧打得进去(真实 Chromium
|
|
28896
|
+
里量过)。所以 TSX 那边直接不挂 iframe,这里铺满整块画布区,复核一回来就撤。 */
|
|
28897
|
+
.wb-control-unknown {
|
|
28898
|
+
position: absolute;
|
|
28899
|
+
inset: 0;
|
|
28900
|
+
z-index: 4;
|
|
28901
|
+
border-radius: 0;
|
|
28902
|
+
background: var(--bg-l1);
|
|
28903
|
+
}
|
|
28904
|
+
.wb-control-unknown button {
|
|
28905
|
+
min-height: 32px;
|
|
28906
|
+
padding: 0 12px;
|
|
28907
|
+
border: 0;
|
|
28908
|
+
border-radius: var(--radius-md);
|
|
28909
|
+
background: var(--bg-l3);
|
|
28910
|
+
}
|
|
28911
|
+
|
|
28912
|
+
/* 首屏控制权还在确认:与「未知」同一种「先不接入终端画面」的处理,只是文案更平静
|
|
28913
|
+
(这是正常的等待,不是出了岔子),所以不给重试按钮。 */
|
|
28914
|
+
.wb-control-checking {
|
|
28915
|
+
position: absolute;
|
|
28916
|
+
inset: 0;
|
|
28917
|
+
z-index: 4;
|
|
28918
|
+
border-radius: 0;
|
|
28919
|
+
background: var(--bg-l1);
|
|
28920
|
+
}
|
|
28921
|
+
|
|
28581
28922
|
.wb-info-drawer {
|
|
28582
28923
|
position: absolute;
|
|
28583
28924
|
top: 106px;
|
|
@@ -29384,9 +29725,10 @@ body:has(.workbench-route-host) { min-width: 0; }
|
|
|
29384
29725
|
/* 「跟随系统」比另外两段长,给模式分段一个更宽的下限,三段仍然等宽。 */
|
|
29385
29726
|
.wb-appearance-mode-seg > .wb-seg-item { min-width: 56px; }
|
|
29386
29727
|
|
|
29387
|
-
/*
|
|
29388
|
-
|
|
29389
|
-
(60px 行高减去上下各 2px inset
|
|
29728
|
+
/* 触屏露出的操作组:一块随动作数增长的 52n×56 板,不是若干散块。
|
|
29729
|
+
每个动作 52 × 56,宽高都超过 44px 的指尖下限;56 = 行卡底板高
|
|
29730
|
+
(60px 行高减去上下各 2px inset),与行卡等高。话题行现在比普通行多
|
|
29731
|
+
「定位 + 跳转」,容器不能再按旧的固定三个动作写死为 156px,否则第四项溢出。
|
|
29390
29732
|
组的右缘与行卡的 8px 内缩落在同一条线上:贴屏边会让滑出的这一行比其余每一行都
|
|
29391
29733
|
多探出 8px,静态图上一眼看得出跑偏。
|
|
29392
29734
|
选择器只写 `.wb-session-row-actions`:行操作那个 <span> 从来只有这一个类,
|
|
@@ -29399,7 +29741,7 @@ body:has(.workbench-route-host) { min-width: 0; }
|
|
|
29399
29741
|
.wb-session-row-actions {
|
|
29400
29742
|
right: 8px;
|
|
29401
29743
|
gap: 0;
|
|
29402
|
-
width:
|
|
29744
|
+
width: max-content;
|
|
29403
29745
|
height: 56px;
|
|
29404
29746
|
padding: 0;
|
|
29405
29747
|
border: 0;
|
|
@@ -29638,3 +29980,1477 @@ body:has(.workbench-route-host) { min-width: 0; }
|
|
|
29638
29980
|
.wb-skin-swatch.is-active .wb-skin-swatch-chip { box-shadow: 0 0 0 2px var(--accent); }
|
|
29639
29981
|
.wb-skin-swatch-name { color: var(--text-3); font-size: 11px; line-height: 14px; white-space: nowrap; }
|
|
29640
29982
|
.wb-skin-swatch.is-active .wb-skin-swatch-name { color: var(--text-1); font-weight: 600; }
|
|
29983
|
+
|
|
29984
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
29985
|
+
Toast 系统(toast.tsx)
|
|
29986
|
+
全局单例 + 事件发射器,容器 <ToastStack /> 在 app.tsx 挂载一次。
|
|
29987
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
29988
|
+
.toast-stack {
|
|
29989
|
+
position: fixed;
|
|
29990
|
+
bottom: 24px;
|
|
29991
|
+
left: 50%;
|
|
29992
|
+
transform: translateX(-50%);
|
|
29993
|
+
z-index: var(--z-toast);
|
|
29994
|
+
display: flex;
|
|
29995
|
+
flex-direction: column;
|
|
29996
|
+
gap: 8px;
|
|
29997
|
+
align-items: center;
|
|
29998
|
+
pointer-events: none;
|
|
29999
|
+
max-width: 100vw;
|
|
30000
|
+
}
|
|
30001
|
+
.toast-item {
|
|
30002
|
+
pointer-events: auto;
|
|
30003
|
+
display: flex;
|
|
30004
|
+
align-items: center;
|
|
30005
|
+
gap: 8px;
|
|
30006
|
+
background: var(--fg);
|
|
30007
|
+
color: var(--bg);
|
|
30008
|
+
padding: 9px 16px;
|
|
30009
|
+
border-radius: var(--radius-md);
|
|
30010
|
+
font-size: var(--fs-13);
|
|
30011
|
+
font-weight: var(--fw-m);
|
|
30012
|
+
line-height: var(--lh-title);
|
|
30013
|
+
box-shadow: var(--sh-lg);
|
|
30014
|
+
animation: toastIn var(--t-norm);
|
|
30015
|
+
max-width: min(90vw, 480px);
|
|
30016
|
+
}
|
|
30017
|
+
.toast-item.is-leaving {
|
|
30018
|
+
opacity: 0;
|
|
30019
|
+
transform: translateY(8px);
|
|
30020
|
+
transition: opacity 200ms ease-out, transform 200ms ease-out;
|
|
30021
|
+
}
|
|
30022
|
+
@keyframes toastIn {
|
|
30023
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
30024
|
+
to { opacity: 1; transform: none; }
|
|
30025
|
+
}
|
|
30026
|
+
.toast-message {
|
|
30027
|
+
overflow-wrap: break-word;
|
|
30028
|
+
min-width: 0;
|
|
30029
|
+
white-space: pre-line;
|
|
30030
|
+
}
|
|
30031
|
+
/* 深色 chip + 浅色文字的语义配色;info/warning 与 success/error 同族语言 */
|
|
30032
|
+
.toast-item-success { background: #17352a; color: #7ee2b2; }
|
|
30033
|
+
.toast-item-error { background: #3d1d22; color: #f2a0aa; }
|
|
30034
|
+
.toast-item-info { background: #152f4d; color: #86bdf2; }
|
|
30035
|
+
.toast-item-warning { background: #3d2c12; color: #f0c478; }
|
|
30036
|
+
:root[data-theme="dark"] .toast-item-success { background: #123528; }
|
|
30037
|
+
:root[data-theme="dark"] .toast-item-error { background: #3a1c22; }
|
|
30038
|
+
:root[data-theme="dark"] .toast-item-info { background: #122c49; }
|
|
30039
|
+
:root[data-theme="dark"] .toast-item-warning { background: #382910; }
|
|
30040
|
+
.toast-action {
|
|
30041
|
+
flex: 0 0 auto;
|
|
30042
|
+
background: rgba(255, 255, 255, .15);
|
|
30043
|
+
border: none;
|
|
30044
|
+
color: inherit;
|
|
30045
|
+
padding: 2px 8px;
|
|
30046
|
+
border-radius: var(--radius-sm);
|
|
30047
|
+
font-size: 12px;
|
|
30048
|
+
font-weight: var(--fw-m);
|
|
30049
|
+
line-height: 1.4;
|
|
30050
|
+
cursor: pointer;
|
|
30051
|
+
white-space: nowrap;
|
|
30052
|
+
transition: background var(--t-fast);
|
|
30053
|
+
}
|
|
30054
|
+
.toast-action:hover { background: rgba(255, 255, 255, .25); }
|
|
30055
|
+
|
|
30056
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
30057
|
+
ConfirmModal 系统(confirm-modal.tsx)
|
|
30058
|
+
基于原生 <dialog>:::backdrop 充当 mask,dialog 靠 UA margin:auto 居中。
|
|
30059
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
30060
|
+
.confirm-modal-dialog {
|
|
30061
|
+
width: 440px;
|
|
30062
|
+
max-width: calc(100vw - 40px);
|
|
30063
|
+
max-height: calc(100vh - 40px);
|
|
30064
|
+
padding: 0;
|
|
30065
|
+
border: 0;
|
|
30066
|
+
background: var(--surface);
|
|
30067
|
+
color: var(--fg);
|
|
30068
|
+
border-radius: var(--radius-lg);
|
|
30069
|
+
box-shadow: var(--modal-shadow);
|
|
30070
|
+
animation: confirmModalIn var(--t-norm);
|
|
30071
|
+
overflow: auto;
|
|
30072
|
+
}
|
|
30073
|
+
.confirm-modal-dialog::backdrop {
|
|
30074
|
+
background: var(--modal-backdrop);
|
|
30075
|
+
}
|
|
30076
|
+
@keyframes confirmModalIn {
|
|
30077
|
+
from { opacity: 0; transform: translateY(12px) scale(.98); }
|
|
30078
|
+
to { opacity: 1; transform: none; }
|
|
30079
|
+
}
|
|
30080
|
+
.confirm-modal-title {
|
|
30081
|
+
margin: 0;
|
|
30082
|
+
padding: var(--sp-5) var(--sp-5) 0;
|
|
30083
|
+
font-size: var(--fs-17);
|
|
30084
|
+
font-weight: var(--fw-s);
|
|
30085
|
+
line-height: var(--lh-title);
|
|
30086
|
+
}
|
|
30087
|
+
.confirm-modal-message {
|
|
30088
|
+
margin: 0;
|
|
30089
|
+
padding: var(--sp-4) var(--sp-5);
|
|
30090
|
+
color: var(--fg-2);
|
|
30091
|
+
font-size: var(--fs-13);
|
|
30092
|
+
line-height: var(--lh-body);
|
|
30093
|
+
overflow-wrap: break-word;
|
|
30094
|
+
white-space: pre-wrap;
|
|
30095
|
+
}
|
|
30096
|
+
.confirm-modal-input-row {
|
|
30097
|
+
padding: 0 var(--sp-5) var(--sp-4);
|
|
30098
|
+
}
|
|
30099
|
+
.confirm-modal-input {
|
|
30100
|
+
width: 100%;
|
|
30101
|
+
}
|
|
30102
|
+
.confirm-modal-footer {
|
|
30103
|
+
padding: 0 var(--sp-5) var(--sp-5);
|
|
30104
|
+
display: flex;
|
|
30105
|
+
justify-content: flex-end;
|
|
30106
|
+
gap: var(--sp-2);
|
|
30107
|
+
}
|
|
30108
|
+
/* 按钮:.btn-primary / .btn-danger / .btn-cancel 作用域收在 footer 内,
|
|
30109
|
+
稳压全局裸 button 规则(0-0-1)与 dialog 内 :where() 规则(0-0-0)。 */
|
|
30110
|
+
.confirm-modal-footer .btn-primary,
|
|
30111
|
+
.confirm-modal-footer .btn-danger,
|
|
30112
|
+
.confirm-modal-footer .btn-cancel {
|
|
30113
|
+
min-height: var(--button-height);
|
|
30114
|
+
padding: 0 var(--button-padding-x);
|
|
30115
|
+
border-radius: var(--radius-full);
|
|
30116
|
+
font-size: 12px;
|
|
30117
|
+
font-weight: 700;
|
|
30118
|
+
line-height: 1;
|
|
30119
|
+
cursor: pointer;
|
|
30120
|
+
transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
|
|
30121
|
+
}
|
|
30122
|
+
.confirm-modal-footer .btn-cancel {
|
|
30123
|
+
background: transparent;
|
|
30124
|
+
border: 1px solid var(--border);
|
|
30125
|
+
color: var(--fg-2);
|
|
30126
|
+
}
|
|
30127
|
+
.confirm-modal-footer .btn-cancel:hover:not(:disabled) {
|
|
30128
|
+
border-color: var(--border-strong);
|
|
30129
|
+
color: var(--fg);
|
|
30130
|
+
}
|
|
30131
|
+
.confirm-modal-footer .btn-primary {
|
|
30132
|
+
background: var(--accent);
|
|
30133
|
+
border: 1px solid var(--accent);
|
|
30134
|
+
color: var(--on-accent);
|
|
30135
|
+
}
|
|
30136
|
+
.confirm-modal-footer .btn-primary:hover:not(:disabled) {
|
|
30137
|
+
background: var(--accent-hover);
|
|
30138
|
+
border-color: var(--accent-hover);
|
|
30139
|
+
}
|
|
30140
|
+
.confirm-modal-footer .btn-danger {
|
|
30141
|
+
background: var(--danger);
|
|
30142
|
+
border: 1px solid var(--danger);
|
|
30143
|
+
color: var(--on-danger);
|
|
30144
|
+
}
|
|
30145
|
+
.confirm-modal-footer .btn-danger:hover:not(:disabled) {
|
|
30146
|
+
background: color-mix(in srgb, var(--danger) 88%, #000);
|
|
30147
|
+
border-color: color-mix(in srgb, var(--danger) 88%, #000);
|
|
30148
|
+
}
|
|
30149
|
+
.confirm-modal-footer button:disabled {
|
|
30150
|
+
opacity: .5;
|
|
30151
|
+
cursor: not-allowed;
|
|
30152
|
+
}
|
|
30153
|
+
|
|
30154
|
+
@media (prefers-reduced-motion: reduce) {
|
|
30155
|
+
.toast-item,
|
|
30156
|
+
.confirm-modal-dialog { animation: none; }
|
|
30157
|
+
.toast-item.is-leaving { transition: none; }
|
|
30158
|
+
}
|
|
30159
|
+
|
|
30160
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
30161
|
+
Overview(工作台)— Calm Console:注意力即层级
|
|
30162
|
+
布局顺序:头部 → 统计条 → 需要你处理 → 进行中 → 数字员工 → 定时任务
|
|
30163
|
+
纯 token 驱动,暗色模式自动生效。
|
|
30164
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
30165
|
+
|
|
30166
|
+
/* ── 页面头部:标题 + 副标题(在线/待处理/实时同步)+ 操作 ─────────────── */
|
|
30167
|
+
/* hero-page 仅工作台使用:覆盖 baseline 的「首子元素 flex 横排」,让副标题落在标题下 */
|
|
30168
|
+
.hero-page .page-heading > :first-child {
|
|
30169
|
+
display: block;
|
|
30170
|
+
min-width: 0;
|
|
30171
|
+
}
|
|
30172
|
+
.overview-subtitle {
|
|
30173
|
+
display: flex;
|
|
30174
|
+
align-items: center;
|
|
30175
|
+
flex-wrap: wrap;
|
|
30176
|
+
gap: var(--sp-2);
|
|
30177
|
+
margin: var(--sp-1) 0 0;
|
|
30178
|
+
font-size: var(--fs-13);
|
|
30179
|
+
color: var(--muted);
|
|
30180
|
+
}
|
|
30181
|
+
.overview-live {
|
|
30182
|
+
display: inline-flex;
|
|
30183
|
+
align-items: center;
|
|
30184
|
+
gap: 6px;
|
|
30185
|
+
font-size: var(--fs-12);
|
|
30186
|
+
color: var(--faint);
|
|
30187
|
+
white-space: nowrap;
|
|
30188
|
+
}
|
|
30189
|
+
.overview-live i {
|
|
30190
|
+
width: 7px;
|
|
30191
|
+
height: 7px;
|
|
30192
|
+
border-radius: var(--radius-full);
|
|
30193
|
+
background: var(--success);
|
|
30194
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 16%, transparent);
|
|
30195
|
+
animation: overview-live-pulse 2.4s ease-in-out infinite;
|
|
30196
|
+
}
|
|
30197
|
+
.overview-live.is-offline { color: var(--warning); }
|
|
30198
|
+
.overview-live.is-offline i {
|
|
30199
|
+
background: var(--warning);
|
|
30200
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--warning) 16%, transparent);
|
|
30201
|
+
}
|
|
30202
|
+
@keyframes overview-live-pulse {
|
|
30203
|
+
0%, 100% { opacity: 1; }
|
|
30204
|
+
50% { opacity: 0.4; }
|
|
30205
|
+
}
|
|
30206
|
+
|
|
30207
|
+
/* ── 统计条:4 个 stat chip(图标 + 大数字 + 标签 + 迷你 sparkline)────── */
|
|
30208
|
+
.overview-stats {
|
|
30209
|
+
display: grid;
|
|
30210
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
30211
|
+
gap: var(--sp-3);
|
|
30212
|
+
}
|
|
30213
|
+
.stat-chip {
|
|
30214
|
+
--chip-tone: var(--muted);
|
|
30215
|
+
--chip-tone-soft: var(--surface-muted);
|
|
30216
|
+
display: flex;
|
|
30217
|
+
align-items: center;
|
|
30218
|
+
gap: var(--sp-3);
|
|
30219
|
+
min-width: 0;
|
|
30220
|
+
padding: var(--sp-3) var(--sp-4);
|
|
30221
|
+
background: var(--surface);
|
|
30222
|
+
border: 1px solid var(--border);
|
|
30223
|
+
border-radius: var(--radius-lg);
|
|
30224
|
+
box-shadow: var(--sh-sm);
|
|
30225
|
+
transition: box-shadow var(--t-fast), transform var(--t-fast), border-color var(--t-fast);
|
|
30226
|
+
}
|
|
30227
|
+
.stat-chip:hover {
|
|
30228
|
+
box-shadow: var(--sh-md);
|
|
30229
|
+
transform: translateY(-1px);
|
|
30230
|
+
border-color: var(--border-strong);
|
|
30231
|
+
}
|
|
30232
|
+
.stat-chip--need { --chip-tone: var(--st-need); --chip-tone-soft: var(--st-need-soft); }
|
|
30233
|
+
.stat-chip--work { --chip-tone: var(--st-work); --chip-tone-soft: var(--st-work-soft); }
|
|
30234
|
+
.stat-chip--active { --chip-tone: var(--muted); --chip-tone-soft: var(--surface-muted); }
|
|
30235
|
+
.stat-chip--online { --chip-tone: var(--success); --chip-tone-soft: var(--success-soft); }
|
|
30236
|
+
.stat-chip-icon {
|
|
30237
|
+
display: inline-flex;
|
|
30238
|
+
align-items: center;
|
|
30239
|
+
justify-content: center;
|
|
30240
|
+
width: 36px;
|
|
30241
|
+
height: 36px;
|
|
30242
|
+
flex: none;
|
|
30243
|
+
border-radius: var(--radius-md);
|
|
30244
|
+
color: var(--chip-tone);
|
|
30245
|
+
background: var(--chip-tone-soft);
|
|
30246
|
+
}
|
|
30247
|
+
.stat-chip-body {
|
|
30248
|
+
display: flex;
|
|
30249
|
+
flex-direction: column;
|
|
30250
|
+
min-width: 0;
|
|
30251
|
+
flex: 1 1 auto;
|
|
30252
|
+
}
|
|
30253
|
+
.stat-chip-value {
|
|
30254
|
+
font-size: var(--fs-24);
|
|
30255
|
+
font-weight: var(--fw-s);
|
|
30256
|
+
line-height: var(--lh-tight);
|
|
30257
|
+
color: var(--fg);
|
|
30258
|
+
font-variant-numeric: tabular-nums;
|
|
30259
|
+
white-space: nowrap;
|
|
30260
|
+
}
|
|
30261
|
+
.stat-chip-suffix {
|
|
30262
|
+
margin-left: 2px;
|
|
30263
|
+
font-size: var(--fs-12);
|
|
30264
|
+
font-weight: var(--fw-m);
|
|
30265
|
+
color: var(--faint);
|
|
30266
|
+
}
|
|
30267
|
+
.stat-chip-label {
|
|
30268
|
+
font-size: var(--fs-12);
|
|
30269
|
+
color: var(--muted);
|
|
30270
|
+
white-space: nowrap;
|
|
30271
|
+
overflow: hidden;
|
|
30272
|
+
text-overflow: ellipsis;
|
|
30273
|
+
}
|
|
30274
|
+
.stat-chip-spark {
|
|
30275
|
+
width: 72px;
|
|
30276
|
+
height: 28px;
|
|
30277
|
+
flex: none;
|
|
30278
|
+
opacity: 0.9;
|
|
30279
|
+
}
|
|
30280
|
+
.stat-chip-spark polygon {
|
|
30281
|
+
fill: var(--chip-tone-soft);
|
|
30282
|
+
stroke: none;
|
|
30283
|
+
}
|
|
30284
|
+
.stat-chip-spark polyline {
|
|
30285
|
+
fill: none;
|
|
30286
|
+
stroke: var(--chip-tone);
|
|
30287
|
+
stroke-width: 2.5;
|
|
30288
|
+
stroke-linecap: round;
|
|
30289
|
+
stroke-linejoin: round;
|
|
30290
|
+
}
|
|
30291
|
+
|
|
30292
|
+
/* ── 需要你处理:琥珀左条卡片队列;无 attention 时是安静的绿色空态 ──────── */
|
|
30293
|
+
.attn-list {
|
|
30294
|
+
display: grid;
|
|
30295
|
+
gap: var(--sp-2);
|
|
30296
|
+
}
|
|
30297
|
+
.attn-item {
|
|
30298
|
+
display: flex;
|
|
30299
|
+
align-items: center;
|
|
30300
|
+
gap: var(--sp-3);
|
|
30301
|
+
min-width: 0;
|
|
30302
|
+
padding: var(--sp-3) var(--sp-4);
|
|
30303
|
+
background: color-mix(in srgb, var(--st-need) 5%, var(--surface));
|
|
30304
|
+
border: 1px solid var(--border);
|
|
30305
|
+
border-left: 3px solid var(--st-need);
|
|
30306
|
+
border-radius: var(--radius-md);
|
|
30307
|
+
box-shadow: var(--sh-sm);
|
|
30308
|
+
color: inherit;
|
|
30309
|
+
text-decoration: none;
|
|
30310
|
+
transition: box-shadow var(--t-fast), transform var(--t-fast), border-color var(--t-fast);
|
|
30311
|
+
}
|
|
30312
|
+
.attn-item:hover {
|
|
30313
|
+
box-shadow: var(--sh-md);
|
|
30314
|
+
transform: translateX(2px);
|
|
30315
|
+
border-color: color-mix(in srgb, var(--st-need) 38%, var(--border));
|
|
30316
|
+
}
|
|
30317
|
+
.attn-main {
|
|
30318
|
+
display: flex;
|
|
30319
|
+
flex-direction: column;
|
|
30320
|
+
gap: 2px;
|
|
30321
|
+
min-width: 0;
|
|
30322
|
+
flex: 1 1 auto;
|
|
30323
|
+
}
|
|
30324
|
+
.attn-main b {
|
|
30325
|
+
font-size: var(--fs-13);
|
|
30326
|
+
font-weight: var(--fw-s);
|
|
30327
|
+
color: var(--fg);
|
|
30328
|
+
white-space: nowrap;
|
|
30329
|
+
overflow: hidden;
|
|
30330
|
+
text-overflow: ellipsis;
|
|
30331
|
+
}
|
|
30332
|
+
.attn-main span {
|
|
30333
|
+
font-size: var(--fs-12);
|
|
30334
|
+
color: var(--muted);
|
|
30335
|
+
white-space: nowrap;
|
|
30336
|
+
overflow: hidden;
|
|
30337
|
+
text-overflow: ellipsis;
|
|
30338
|
+
}
|
|
30339
|
+
.attn-action {
|
|
30340
|
+
flex: none;
|
|
30341
|
+
display: inline-flex;
|
|
30342
|
+
align-items: center;
|
|
30343
|
+
min-height: 28px;
|
|
30344
|
+
padding: 0 var(--sp-3);
|
|
30345
|
+
border-radius: var(--radius-full);
|
|
30346
|
+
background: var(--st-need-soft);
|
|
30347
|
+
color: var(--st-need);
|
|
30348
|
+
font-size: var(--fs-12);
|
|
30349
|
+
font-weight: var(--fw-s);
|
|
30350
|
+
white-space: nowrap;
|
|
30351
|
+
}
|
|
30352
|
+
.attn-empty {
|
|
30353
|
+
display: flex;
|
|
30354
|
+
align-items: center;
|
|
30355
|
+
gap: var(--sp-3);
|
|
30356
|
+
padding: var(--sp-4) var(--sp-5);
|
|
30357
|
+
background: var(--surface);
|
|
30358
|
+
border: 1px solid var(--border);
|
|
30359
|
+
border-radius: var(--radius-lg);
|
|
30360
|
+
box-shadow: var(--sh-sm);
|
|
30361
|
+
color: var(--muted);
|
|
30362
|
+
font-size: var(--fs-13);
|
|
30363
|
+
}
|
|
30364
|
+
.attn-empty-icon {
|
|
30365
|
+
display: inline-flex;
|
|
30366
|
+
align-items: center;
|
|
30367
|
+
justify-content: center;
|
|
30368
|
+
width: 32px;
|
|
30369
|
+
height: 32px;
|
|
30370
|
+
flex: none;
|
|
30371
|
+
border-radius: var(--radius-full);
|
|
30372
|
+
background: var(--success-soft);
|
|
30373
|
+
color: var(--success);
|
|
30374
|
+
}
|
|
30375
|
+
|
|
30376
|
+
/* ── 进行中:面板内紧凑行,整行点击跳转会话页 ─────────────────────────── */
|
|
30377
|
+
.active-sessions-panel > .work-list {
|
|
30378
|
+
flex: 1;
|
|
30379
|
+
min-height: 0;
|
|
30380
|
+
align-content: start;
|
|
30381
|
+
display: grid;
|
|
30382
|
+
gap: var(--sp-1);
|
|
30383
|
+
padding: var(--sp-2);
|
|
30384
|
+
overflow-x: hidden;
|
|
30385
|
+
overflow-y: auto;
|
|
30386
|
+
}
|
|
30387
|
+
.work-item {
|
|
30388
|
+
display: flex;
|
|
30389
|
+
align-items: center;
|
|
30390
|
+
gap: var(--sp-3);
|
|
30391
|
+
min-width: 0;
|
|
30392
|
+
padding: var(--sp-2) var(--sp-3);
|
|
30393
|
+
border: 1px solid transparent;
|
|
30394
|
+
border-radius: var(--radius-md);
|
|
30395
|
+
color: inherit;
|
|
30396
|
+
text-decoration: none;
|
|
30397
|
+
transition: background var(--t-fast), border-color var(--t-fast);
|
|
30398
|
+
}
|
|
30399
|
+
.work-item:hover {
|
|
30400
|
+
background: var(--surface-hover);
|
|
30401
|
+
border-color: var(--border-soft);
|
|
30402
|
+
}
|
|
30403
|
+
.work-main {
|
|
30404
|
+
display: flex;
|
|
30405
|
+
flex-direction: column;
|
|
30406
|
+
gap: 2px;
|
|
30407
|
+
min-width: 0;
|
|
30408
|
+
flex: 1 1 auto;
|
|
30409
|
+
}
|
|
30410
|
+
.work-main b {
|
|
30411
|
+
font-size: var(--fs-13);
|
|
30412
|
+
font-weight: var(--fw-s);
|
|
30413
|
+
color: var(--fg);
|
|
30414
|
+
white-space: nowrap;
|
|
30415
|
+
overflow: hidden;
|
|
30416
|
+
text-overflow: ellipsis;
|
|
30417
|
+
}
|
|
30418
|
+
.work-main span {
|
|
30419
|
+
font-size: var(--fs-12);
|
|
30420
|
+
color: var(--faint);
|
|
30421
|
+
white-space: nowrap;
|
|
30422
|
+
overflow: hidden;
|
|
30423
|
+
text-overflow: ellipsis;
|
|
30424
|
+
}
|
|
30425
|
+
.work-status { flex: none; }
|
|
30426
|
+
|
|
30427
|
+
/* ── 数字员工卡片:收敛到 token 卡片规范(1px border + sh-sm,hover 浮起)── */
|
|
30428
|
+
.mate {
|
|
30429
|
+
gap: var(--sp-3);
|
|
30430
|
+
padding: var(--sp-4);
|
|
30431
|
+
border: 1px solid var(--border);
|
|
30432
|
+
border-radius: var(--radius-lg);
|
|
30433
|
+
box-shadow: var(--sh-sm);
|
|
30434
|
+
transition: transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);
|
|
30435
|
+
}
|
|
30436
|
+
.mate:hover {
|
|
30437
|
+
transform: translateY(-2px);
|
|
30438
|
+
box-shadow: var(--sh-md);
|
|
30439
|
+
border-color: var(--border-strong);
|
|
30440
|
+
}
|
|
30441
|
+
/* 等你的卡片保持琥珀描边(覆盖上面的 hover border,注意力信号不丢) */
|
|
30442
|
+
.mate-attn {
|
|
30443
|
+
border-color: color-mix(in srgb, var(--st-need) 42%, transparent);
|
|
30444
|
+
}
|
|
30445
|
+
.mate-attn:hover {
|
|
30446
|
+
border-color: color-mix(in srgb, var(--st-need) 62%, var(--border-strong));
|
|
30447
|
+
}
|
|
30448
|
+
/* 旧 dark 玻璃覆盖收敛到纯 token:暗色也走 surface + border,注意力描边生效 */
|
|
30449
|
+
:root[data-theme="dark"] .mate {
|
|
30450
|
+
background: var(--surface);
|
|
30451
|
+
border-color: var(--border);
|
|
30452
|
+
backdrop-filter: none;
|
|
30453
|
+
}
|
|
30454
|
+
:root[data-theme="dark"] .mate:hover {
|
|
30455
|
+
border-color: var(--border-strong);
|
|
30456
|
+
}
|
|
30457
|
+
:root[data-theme="dark"] .mate-attn {
|
|
30458
|
+
border-color: color-mix(in srgb, var(--st-need) 45%, transparent);
|
|
30459
|
+
}
|
|
30460
|
+
:root[data-theme="dark"] .mate-attn:hover {
|
|
30461
|
+
border-color: color-mix(in srgb, var(--st-need) 62%, var(--border-strong));
|
|
30462
|
+
}
|
|
30463
|
+
/* 当前任务:单行截断(原来是 2 行 clamp) */
|
|
30464
|
+
.mate-task {
|
|
30465
|
+
display: block;
|
|
30466
|
+
min-height: 0;
|
|
30467
|
+
font-size: var(--fs-12);
|
|
30468
|
+
white-space: nowrap;
|
|
30469
|
+
overflow: hidden;
|
|
30470
|
+
text-overflow: ellipsis;
|
|
30471
|
+
}
|
|
30472
|
+
|
|
30473
|
+
/* ── 定时任务:紧凑行 + 时钟图标 ──────────────────────────────────────── */
|
|
30474
|
+
.sched-clock {
|
|
30475
|
+
display: inline-flex;
|
|
30476
|
+
align-items: center;
|
|
30477
|
+
justify-content: center;
|
|
30478
|
+
width: 28px;
|
|
30479
|
+
height: 28px;
|
|
30480
|
+
flex: none;
|
|
30481
|
+
border-radius: var(--radius-sm);
|
|
30482
|
+
background: var(--surface-muted);
|
|
30483
|
+
color: var(--faint);
|
|
30484
|
+
}
|
|
30485
|
+
|
|
30486
|
+
/* ── 排程整块隐藏时,主栏占满 ────────────────────────────────────────── */
|
|
30487
|
+
.overview-layout--single {
|
|
30488
|
+
grid-template-columns: minmax(0, 1fr);
|
|
30489
|
+
}
|
|
30490
|
+
|
|
30491
|
+
/* ── 响应式:统计条 2 列、bot 网格 1 列、列表全宽 ─────────────────────── */
|
|
30492
|
+
@media (max-width: 980px) {
|
|
30493
|
+
.overview-stats {
|
|
30494
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
30495
|
+
}
|
|
30496
|
+
}
|
|
30497
|
+
@media (max-width: 720px) {
|
|
30498
|
+
.team-grid {
|
|
30499
|
+
grid-template-columns: 1fr;
|
|
30500
|
+
}
|
|
30501
|
+
.stat-chip-spark {
|
|
30502
|
+
display: none;
|
|
30503
|
+
}
|
|
30504
|
+
.stat-chip-label {
|
|
30505
|
+
white-space: normal;
|
|
30506
|
+
}
|
|
30507
|
+
}
|
|
30508
|
+
|
|
30509
|
+
@media (prefers-reduced-motion: reduce) {
|
|
30510
|
+
.overview-live i { animation: none; }
|
|
30511
|
+
.stat-chip,
|
|
30512
|
+
.attn-item,
|
|
30513
|
+
.mate,
|
|
30514
|
+
.work-item { transition: none; }
|
|
30515
|
+
.stat-chip:hover,
|
|
30516
|
+
.attn-item:hover,
|
|
30517
|
+
.mate:hover { transform: none; }
|
|
30518
|
+
}
|
|
30519
|
+
|
|
30520
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
30521
|
+
Sessions 页视觉改造(2026-08)
|
|
30522
|
+
筛选条收敛 / 看板卡片重设计 / Drawer 操作分组 / 骨架屏 / 列头降噪。
|
|
30523
|
+
全部 token 驱动,暗色随 data-theme 自动切换。
|
|
30524
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
30525
|
+
|
|
30526
|
+
/* ── 1. 筛选条:搜索 + 快捷分段 + 筛选按钮 + 排序 + 清理空闲(ghost) ── */
|
|
30527
|
+
.sessions-page .sessions-filters.sessions-toolbar {
|
|
30528
|
+
display: flex;
|
|
30529
|
+
align-items: center;
|
|
30530
|
+
gap: 8px;
|
|
30531
|
+
flex-wrap: wrap;
|
|
30532
|
+
margin: 0 0 var(--sp-3);
|
|
30533
|
+
padding: 0;
|
|
30534
|
+
border: 0;
|
|
30535
|
+
background: transparent;
|
|
30536
|
+
box-shadow: none;
|
|
30537
|
+
min-height: 0;
|
|
30538
|
+
}
|
|
30539
|
+
|
|
30540
|
+
.sessions-page .sessions-toolbar input[type="search"][name="q"] {
|
|
30541
|
+
flex: 1 1 240px;
|
|
30542
|
+
min-width: 180px;
|
|
30543
|
+
max-width: 420px;
|
|
30544
|
+
height: var(--button-height);
|
|
30545
|
+
min-height: var(--button-height);
|
|
30546
|
+
max-height: var(--button-height);
|
|
30547
|
+
padding: 0 var(--sp-4);
|
|
30548
|
+
border: 1px solid var(--border);
|
|
30549
|
+
border-radius: var(--radius-full);
|
|
30550
|
+
background: var(--surface);
|
|
30551
|
+
font-size: var(--fs-13);
|
|
30552
|
+
}
|
|
30553
|
+
|
|
30554
|
+
.sessions-page .sessions-toolbar .sessions-quick-view {
|
|
30555
|
+
flex: none;
|
|
30556
|
+
border-radius: var(--radius-full);
|
|
30557
|
+
border-color: var(--border-soft);
|
|
30558
|
+
}
|
|
30559
|
+
|
|
30560
|
+
.sessions-page .sessions-toolbar .sessions-quick-view button {
|
|
30561
|
+
min-height: 26px;
|
|
30562
|
+
padding: 0 var(--sp-3);
|
|
30563
|
+
}
|
|
30564
|
+
|
|
30565
|
+
.sessions-filter-btn {
|
|
30566
|
+
display: inline-flex;
|
|
30567
|
+
align-items: center;
|
|
30568
|
+
gap: 6px;
|
|
30569
|
+
flex: none;
|
|
30570
|
+
height: var(--button-height);
|
|
30571
|
+
padding: 0 var(--sp-4);
|
|
30572
|
+
border: 1px solid var(--border);
|
|
30573
|
+
border-radius: var(--radius-full);
|
|
30574
|
+
background: var(--surface);
|
|
30575
|
+
color: var(--fg);
|
|
30576
|
+
font-size: var(--fs-12);
|
|
30577
|
+
font-weight: var(--fw-m);
|
|
30578
|
+
cursor: pointer;
|
|
30579
|
+
transition: border-color var(--t-fast), color var(--t-fast), background var(--t-fast);
|
|
30580
|
+
}
|
|
30581
|
+
|
|
30582
|
+
.sessions-filter-btn:hover {
|
|
30583
|
+
border-color: var(--accent);
|
|
30584
|
+
color: var(--accent-strong);
|
|
30585
|
+
}
|
|
30586
|
+
|
|
30587
|
+
.sessions-filter-btn.has-active {
|
|
30588
|
+
border-color: var(--accent-border);
|
|
30589
|
+
background: var(--accent-soft);
|
|
30590
|
+
color: var(--accent-strong);
|
|
30591
|
+
}
|
|
30592
|
+
|
|
30593
|
+
.sessions-filter-count {
|
|
30594
|
+
min-width: 18px;
|
|
30595
|
+
height: 18px;
|
|
30596
|
+
padding: 0 5px;
|
|
30597
|
+
display: inline-flex;
|
|
30598
|
+
align-items: center;
|
|
30599
|
+
justify-content: center;
|
|
30600
|
+
border-radius: var(--radius-full);
|
|
30601
|
+
background: var(--accent);
|
|
30602
|
+
color: var(--on-accent);
|
|
30603
|
+
font-size: 11px;
|
|
30604
|
+
font-weight: 700;
|
|
30605
|
+
font-variant-numeric: tabular-nums;
|
|
30606
|
+
}
|
|
30607
|
+
|
|
30608
|
+
.sessions-sort-menu .sect-sort-value {
|
|
30609
|
+
max-width: 200px;
|
|
30610
|
+
overflow: hidden;
|
|
30611
|
+
text-overflow: ellipsis;
|
|
30612
|
+
white-space: nowrap;
|
|
30613
|
+
}
|
|
30614
|
+
|
|
30615
|
+
/* 「清理空闲」降级为 ghost 链接 */
|
|
30616
|
+
.sessions-page .sessions-toolbar .idle-cleanup-bar {
|
|
30617
|
+
margin: 0 0 0 auto;
|
|
30618
|
+
padding: 0;
|
|
30619
|
+
border: 0;
|
|
30620
|
+
background: transparent;
|
|
30621
|
+
box-shadow: none;
|
|
30622
|
+
}
|
|
30623
|
+
|
|
30624
|
+
.sessions-page .sessions-toolbar .idle-cleanup-run {
|
|
30625
|
+
height: var(--button-height);
|
|
30626
|
+
min-height: var(--button-height);
|
|
30627
|
+
padding: 0 var(--sp-2);
|
|
30628
|
+
border: 0;
|
|
30629
|
+
background: transparent;
|
|
30630
|
+
color: var(--faint);
|
|
30631
|
+
font-size: var(--fs-12);
|
|
30632
|
+
font-weight: var(--fw-r);
|
|
30633
|
+
box-shadow: none;
|
|
30634
|
+
}
|
|
30635
|
+
|
|
30636
|
+
.sessions-page .sessions-toolbar .idle-cleanup-run:hover:not(:disabled) {
|
|
30637
|
+
background: transparent;
|
|
30638
|
+
color: var(--danger);
|
|
30639
|
+
}
|
|
30640
|
+
|
|
30641
|
+
.sessions-page .sessions-toolbar .idle-cleanup-run .idle-cleanup-icon {
|
|
30642
|
+
width: 13px;
|
|
30643
|
+
height: 13px;
|
|
30644
|
+
}
|
|
30645
|
+
|
|
30646
|
+
/* ── 2. 高级筛选抽屉 ───────────────────────────────────────────────── */
|
|
30647
|
+
.sessions-filter-drawer {
|
|
30648
|
+
width: min(400px, calc(100vw - 24px));
|
|
30649
|
+
max-width: 400px;
|
|
30650
|
+
padding: 0;
|
|
30651
|
+
border: 0;
|
|
30652
|
+
border-left: 1px solid var(--border);
|
|
30653
|
+
border-radius: 0;
|
|
30654
|
+
background: var(--surface);
|
|
30655
|
+
box-shadow: var(--modal-shadow);
|
|
30656
|
+
}
|
|
30657
|
+
|
|
30658
|
+
.sessions-filter-drawer[open] {
|
|
30659
|
+
display: flex;
|
|
30660
|
+
flex-direction: column;
|
|
30661
|
+
height: 100%;
|
|
30662
|
+
max-height: 100%;
|
|
30663
|
+
top: 0;
|
|
30664
|
+
bottom: 0;
|
|
30665
|
+
margin: 0 0 0 auto;
|
|
30666
|
+
}
|
|
30667
|
+
|
|
30668
|
+
.sessions-filter-drawer::backdrop {
|
|
30669
|
+
background: var(--modal-backdrop);
|
|
30670
|
+
}
|
|
30671
|
+
|
|
30672
|
+
.sessions-filter-drawer > header {
|
|
30673
|
+
flex: none;
|
|
30674
|
+
display: flex;
|
|
30675
|
+
align-items: center;
|
|
30676
|
+
justify-content: space-between;
|
|
30677
|
+
gap: var(--sp-3);
|
|
30678
|
+
padding: var(--sp-4) var(--sp-5);
|
|
30679
|
+
border-bottom: 1px solid var(--border-soft);
|
|
30680
|
+
}
|
|
30681
|
+
|
|
30682
|
+
.sessions-filter-drawer > header h3 {
|
|
30683
|
+
margin: 0;
|
|
30684
|
+
font-size: var(--fs-15);
|
|
30685
|
+
font-weight: var(--fw-s);
|
|
30686
|
+
color: var(--fg);
|
|
30687
|
+
}
|
|
30688
|
+
|
|
30689
|
+
.sessions-filter-drawer-body {
|
|
30690
|
+
flex: 1;
|
|
30691
|
+
min-height: 0;
|
|
30692
|
+
overflow-y: auto;
|
|
30693
|
+
padding: var(--sp-5);
|
|
30694
|
+
display: grid;
|
|
30695
|
+
gap: var(--sp-4);
|
|
30696
|
+
align-content: start;
|
|
30697
|
+
}
|
|
30698
|
+
|
|
30699
|
+
.sessions-filter-field {
|
|
30700
|
+
display: grid;
|
|
30701
|
+
gap: 6px;
|
|
30702
|
+
}
|
|
30703
|
+
|
|
30704
|
+
.sessions-filter-label {
|
|
30705
|
+
font-size: var(--fs-12);
|
|
30706
|
+
font-weight: var(--fw-m);
|
|
30707
|
+
color: var(--muted);
|
|
30708
|
+
}
|
|
30709
|
+
|
|
30710
|
+
.sessions-filter-field select {
|
|
30711
|
+
width: 100%;
|
|
30712
|
+
height: var(--button-height);
|
|
30713
|
+
padding: 0 var(--sp-3);
|
|
30714
|
+
border: 1px solid var(--border);
|
|
30715
|
+
border-radius: var(--radius-md);
|
|
30716
|
+
background-color: var(--surface-raised);
|
|
30717
|
+
color: var(--fg);
|
|
30718
|
+
font-size: var(--fs-13);
|
|
30719
|
+
}
|
|
30720
|
+
|
|
30721
|
+
.sessions-filter-cli {
|
|
30722
|
+
display: grid;
|
|
30723
|
+
gap: var(--sp-2);
|
|
30724
|
+
padding: var(--sp-3);
|
|
30725
|
+
border: 1px solid var(--border-soft);
|
|
30726
|
+
border-radius: var(--radius-md);
|
|
30727
|
+
background: var(--surface-muted);
|
|
30728
|
+
}
|
|
30729
|
+
|
|
30730
|
+
.sessions-filter-cli-search {
|
|
30731
|
+
height: var(--button-height);
|
|
30732
|
+
padding: 0 var(--sp-3);
|
|
30733
|
+
border: 1px solid var(--border);
|
|
30734
|
+
border-radius: var(--radius-md);
|
|
30735
|
+
background: var(--surface);
|
|
30736
|
+
color: var(--fg);
|
|
30737
|
+
font-size: var(--fs-12);
|
|
30738
|
+
}
|
|
30739
|
+
|
|
30740
|
+
.sessions-filter-cli-bulk {
|
|
30741
|
+
display: flex;
|
|
30742
|
+
gap: var(--sp-2);
|
|
30743
|
+
}
|
|
30744
|
+
|
|
30745
|
+
.sessions-filter-cli-bulk button {
|
|
30746
|
+
height: 26px;
|
|
30747
|
+
padding: 0 10px;
|
|
30748
|
+
border: 1px solid var(--border);
|
|
30749
|
+
border-radius: var(--radius-full);
|
|
30750
|
+
background: var(--surface);
|
|
30751
|
+
color: var(--muted);
|
|
30752
|
+
font-size: 11px;
|
|
30753
|
+
cursor: pointer;
|
|
30754
|
+
transition: border-color var(--t-fast), color var(--t-fast);
|
|
30755
|
+
}
|
|
30756
|
+
|
|
30757
|
+
.sessions-filter-cli-bulk button:hover {
|
|
30758
|
+
border-color: var(--accent);
|
|
30759
|
+
color: var(--accent-strong);
|
|
30760
|
+
}
|
|
30761
|
+
|
|
30762
|
+
.sessions-filter-cli-list {
|
|
30763
|
+
display: grid;
|
|
30764
|
+
gap: 2px;
|
|
30765
|
+
max-height: 180px;
|
|
30766
|
+
overflow-y: auto;
|
|
30767
|
+
}
|
|
30768
|
+
|
|
30769
|
+
.sessions-filter-cli-list .filter-check {
|
|
30770
|
+
padding: 4px 8px;
|
|
30771
|
+
border-radius: var(--radius-sm);
|
|
30772
|
+
}
|
|
30773
|
+
|
|
30774
|
+
.sessions-filter-cli-list .filter-check:hover {
|
|
30775
|
+
background: var(--surface-hover);
|
|
30776
|
+
}
|
|
30777
|
+
|
|
30778
|
+
.sessions-filter-toggles {
|
|
30779
|
+
display: grid;
|
|
30780
|
+
gap: var(--sp-2);
|
|
30781
|
+
padding-top: var(--sp-3);
|
|
30782
|
+
border-top: 1px solid var(--border-soft);
|
|
30783
|
+
}
|
|
30784
|
+
|
|
30785
|
+
.sessions-filter-drawer > footer {
|
|
30786
|
+
flex: none;
|
|
30787
|
+
display: flex;
|
|
30788
|
+
align-items: center;
|
|
30789
|
+
justify-content: space-between;
|
|
30790
|
+
gap: var(--sp-3);
|
|
30791
|
+
padding: var(--sp-4) var(--sp-5);
|
|
30792
|
+
border-top: 1px solid var(--border-soft);
|
|
30793
|
+
}
|
|
30794
|
+
|
|
30795
|
+
.sessions-filter-clear {
|
|
30796
|
+
height: var(--button-height);
|
|
30797
|
+
padding: 0 var(--sp-3);
|
|
30798
|
+
border: 0;
|
|
30799
|
+
background: transparent;
|
|
30800
|
+
color: var(--faint);
|
|
30801
|
+
font-size: var(--fs-12);
|
|
30802
|
+
cursor: pointer;
|
|
30803
|
+
}
|
|
30804
|
+
|
|
30805
|
+
.sessions-filter-clear:hover {
|
|
30806
|
+
color: var(--danger);
|
|
30807
|
+
}
|
|
30808
|
+
|
|
30809
|
+
.sessions-filter-done {
|
|
30810
|
+
height: var(--button-height);
|
|
30811
|
+
padding: 0 var(--sp-6);
|
|
30812
|
+
border: 1px solid var(--accent);
|
|
30813
|
+
border-radius: var(--radius-full);
|
|
30814
|
+
background: var(--accent);
|
|
30815
|
+
color: var(--on-accent);
|
|
30816
|
+
font-size: var(--fs-13);
|
|
30817
|
+
font-weight: var(--fw-s);
|
|
30818
|
+
cursor: pointer;
|
|
30819
|
+
transition: background var(--t-fast), border-color var(--t-fast);
|
|
30820
|
+
}
|
|
30821
|
+
|
|
30822
|
+
.sessions-filter-done:hover {
|
|
30823
|
+
background: var(--accent-hover);
|
|
30824
|
+
border-color: var(--accent-hover);
|
|
30825
|
+
}
|
|
30826
|
+
|
|
30827
|
+
/* ── 3. 看板卡片 v2:状态色条 + 标题 + meta + 预览 + 底部标签操作 ──────── */
|
|
30828
|
+
.kanban-card {
|
|
30829
|
+
gap: 5px;
|
|
30830
|
+
padding: 10px 12px 10px 15px;
|
|
30831
|
+
}
|
|
30832
|
+
|
|
30833
|
+
.kanban-card::before {
|
|
30834
|
+
content: '';
|
|
30835
|
+
position: absolute;
|
|
30836
|
+
left: 0;
|
|
30837
|
+
top: 0;
|
|
30838
|
+
bottom: 0;
|
|
30839
|
+
width: 3px;
|
|
30840
|
+
background: var(--st-idle);
|
|
30841
|
+
}
|
|
30842
|
+
|
|
30843
|
+
.kanban-card[data-signal="needs-you"]::before { background: var(--st-need); }
|
|
30844
|
+
.kanban-card[data-signal="working"]::before { background: var(--st-work); }
|
|
30845
|
+
.kanban-card[data-signal="todo"]::before { background: var(--st-todo); }
|
|
30846
|
+
.kanban-card[data-signal="idle"]::before { background: var(--st-idle); }
|
|
30847
|
+
.kanban-card[data-signal="closed"]::before { background: var(--border-strong); }
|
|
30848
|
+
|
|
30849
|
+
.kanban-card-head {
|
|
30850
|
+
display: flex;
|
|
30851
|
+
align-items: center;
|
|
30852
|
+
gap: 6px;
|
|
30853
|
+
min-width: 0;
|
|
30854
|
+
}
|
|
30855
|
+
|
|
30856
|
+
.kanban-card-head .badge {
|
|
30857
|
+
flex: none;
|
|
30858
|
+
max-width: 100%;
|
|
30859
|
+
overflow: hidden;
|
|
30860
|
+
text-overflow: ellipsis;
|
|
30861
|
+
white-space: nowrap;
|
|
30862
|
+
}
|
|
30863
|
+
|
|
30864
|
+
.kanban-card-head .session-signal {
|
|
30865
|
+
min-width: 0;
|
|
30866
|
+
overflow: hidden;
|
|
30867
|
+
text-overflow: ellipsis;
|
|
30868
|
+
white-space: nowrap;
|
|
30869
|
+
}
|
|
30870
|
+
|
|
30871
|
+
.kanban-card-meta {
|
|
30872
|
+
margin: 0;
|
|
30873
|
+
color: var(--muted);
|
|
30874
|
+
font-size: var(--fs-12);
|
|
30875
|
+
white-space: nowrap;
|
|
30876
|
+
overflow: hidden;
|
|
30877
|
+
text-overflow: ellipsis;
|
|
30878
|
+
}
|
|
30879
|
+
|
|
30880
|
+
.kanban-card-preview {
|
|
30881
|
+
margin: 0;
|
|
30882
|
+
padding: 6px 8px;
|
|
30883
|
+
border-radius: var(--radius-sm);
|
|
30884
|
+
background: var(--surface-muted);
|
|
30885
|
+
color: var(--muted);
|
|
30886
|
+
font-family: var(--mono);
|
|
30887
|
+
font-size: 11px;
|
|
30888
|
+
line-height: 1.45;
|
|
30889
|
+
display: -webkit-box;
|
|
30890
|
+
-webkit-line-clamp: 2;
|
|
30891
|
+
-webkit-box-orient: vertical;
|
|
30892
|
+
overflow: hidden;
|
|
30893
|
+
word-break: break-all;
|
|
30894
|
+
}
|
|
30895
|
+
|
|
30896
|
+
.kanban-card-foot {
|
|
30897
|
+
margin-top: 1px;
|
|
30898
|
+
}
|
|
30899
|
+
|
|
30900
|
+
.kanban-card-term {
|
|
30901
|
+
display: inline-flex;
|
|
30902
|
+
align-items: center;
|
|
30903
|
+
gap: 5px;
|
|
30904
|
+
flex: none;
|
|
30905
|
+
height: 24px;
|
|
30906
|
+
padding: 0 10px;
|
|
30907
|
+
border: 1px solid var(--border);
|
|
30908
|
+
border-radius: var(--radius-full);
|
|
30909
|
+
background: var(--surface);
|
|
30910
|
+
color: var(--muted);
|
|
30911
|
+
font-size: var(--fs-12);
|
|
30912
|
+
font-weight: var(--fw-m);
|
|
30913
|
+
cursor: pointer;
|
|
30914
|
+
opacity: 0;
|
|
30915
|
+
pointer-events: none;
|
|
30916
|
+
visibility: hidden;
|
|
30917
|
+
transition: opacity var(--t-fast), visibility var(--t-fast), border-color var(--t-fast), color var(--t-fast);
|
|
30918
|
+
}
|
|
30919
|
+
|
|
30920
|
+
.kanban-card-term svg {
|
|
30921
|
+
width: 12px;
|
|
30922
|
+
height: 12px;
|
|
30923
|
+
}
|
|
30924
|
+
|
|
30925
|
+
.kanban-card-term:hover {
|
|
30926
|
+
border-color: var(--accent);
|
|
30927
|
+
color: var(--accent-strong);
|
|
30928
|
+
}
|
|
30929
|
+
|
|
30930
|
+
.kanban-card-more {
|
|
30931
|
+
margin-left: auto;
|
|
30932
|
+
flex: none;
|
|
30933
|
+
width: 24px;
|
|
30934
|
+
height: 24px;
|
|
30935
|
+
display: inline-flex;
|
|
30936
|
+
align-items: center;
|
|
30937
|
+
justify-content: center;
|
|
30938
|
+
border: 0;
|
|
30939
|
+
border-radius: var(--radius-full);
|
|
30940
|
+
background: transparent;
|
|
30941
|
+
color: var(--faint);
|
|
30942
|
+
cursor: pointer;
|
|
30943
|
+
opacity: 0;
|
|
30944
|
+
pointer-events: none;
|
|
30945
|
+
visibility: hidden;
|
|
30946
|
+
transition: opacity var(--t-fast), visibility var(--t-fast), background var(--t-fast), color var(--t-fast);
|
|
30947
|
+
}
|
|
30948
|
+
|
|
30949
|
+
.kanban-card-more svg {
|
|
30950
|
+
width: 14px;
|
|
30951
|
+
height: 14px;
|
|
30952
|
+
}
|
|
30953
|
+
|
|
30954
|
+
.kanban-card-more:hover {
|
|
30955
|
+
background: var(--surface-hover);
|
|
30956
|
+
color: var(--fg);
|
|
30957
|
+
}
|
|
30958
|
+
|
|
30959
|
+
.kanban-card:hover .kanban-card-term,
|
|
30960
|
+
.kanban-card:focus-within .kanban-card-term,
|
|
30961
|
+
.kanban-card:hover .kanban-card-more,
|
|
30962
|
+
.kanban-card:focus-within .kanban-card-more,
|
|
30963
|
+
.kanban-card-more.is-open {
|
|
30964
|
+
opacity: 1;
|
|
30965
|
+
pointer-events: auto;
|
|
30966
|
+
visibility: visible;
|
|
30967
|
+
}
|
|
30968
|
+
|
|
30969
|
+
@media (hover: none), (max-width: 720px) {
|
|
30970
|
+
.kanban-card-term,
|
|
30971
|
+
.kanban-card-more {
|
|
30972
|
+
opacity: 1;
|
|
30973
|
+
pointer-events: auto;
|
|
30974
|
+
visibility: visible;
|
|
30975
|
+
}
|
|
30976
|
+
}
|
|
30977
|
+
|
|
30978
|
+
/* 卡片「⋯」菜单弹层(portal 到 body,逃出卡片 overflow:hidden) */
|
|
30979
|
+
.card-menu-pop {
|
|
30980
|
+
position: fixed;
|
|
30981
|
+
z-index: var(--z-modal);
|
|
30982
|
+
min-width: 190px;
|
|
30983
|
+
padding: 6px;
|
|
30984
|
+
display: grid;
|
|
30985
|
+
gap: 2px;
|
|
30986
|
+
border: 1px solid var(--border-soft);
|
|
30987
|
+
border-radius: var(--radius-md);
|
|
30988
|
+
background: var(--surface-raised);
|
|
30989
|
+
box-shadow: var(--sh-lg);
|
|
30990
|
+
}
|
|
30991
|
+
|
|
30992
|
+
.card-menu-item {
|
|
30993
|
+
display: flex;
|
|
30994
|
+
align-items: center;
|
|
30995
|
+
gap: 8px;
|
|
30996
|
+
width: 100%;
|
|
30997
|
+
min-height: 32px;
|
|
30998
|
+
padding: 0 10px;
|
|
30999
|
+
border: 0;
|
|
31000
|
+
border-radius: var(--radius-sm);
|
|
31001
|
+
background: transparent;
|
|
31002
|
+
color: var(--fg);
|
|
31003
|
+
font-size: var(--fs-13);
|
|
31004
|
+
text-align: left;
|
|
31005
|
+
cursor: pointer;
|
|
31006
|
+
transition: background var(--t-fast);
|
|
31007
|
+
}
|
|
31008
|
+
|
|
31009
|
+
.card-menu-item:hover:not(:disabled) {
|
|
31010
|
+
background: var(--surface-hover);
|
|
31011
|
+
}
|
|
31012
|
+
|
|
31013
|
+
.card-menu-item:disabled {
|
|
31014
|
+
opacity: 0.5;
|
|
31015
|
+
cursor: not-allowed;
|
|
31016
|
+
}
|
|
31017
|
+
|
|
31018
|
+
.card-menu-item.danger {
|
|
31019
|
+
color: var(--danger);
|
|
31020
|
+
}
|
|
31021
|
+
|
|
31022
|
+
.card-menu-item.danger:hover:not(:disabled) {
|
|
31023
|
+
background: var(--danger-soft);
|
|
31024
|
+
}
|
|
31025
|
+
|
|
31026
|
+
.card-menu-icon {
|
|
31027
|
+
display: inline-flex;
|
|
31028
|
+
flex: none;
|
|
31029
|
+
width: 14px;
|
|
31030
|
+
color: var(--faint);
|
|
31031
|
+
}
|
|
31032
|
+
|
|
31033
|
+
.card-menu-icon svg {
|
|
31034
|
+
width: 14px;
|
|
31035
|
+
height: 14px;
|
|
31036
|
+
}
|
|
31037
|
+
|
|
31038
|
+
.card-menu-item.danger .card-menu-icon {
|
|
31039
|
+
color: var(--danger);
|
|
31040
|
+
}
|
|
31041
|
+
|
|
31042
|
+
a.card-menu-item {
|
|
31043
|
+
text-decoration: none;
|
|
31044
|
+
box-sizing: border-box;
|
|
31045
|
+
}
|
|
31046
|
+
|
|
31047
|
+
/* ── 4. 看板列头:状态色点 + 名称 + 计数徽章 ─────────────────────────── */
|
|
31048
|
+
.kanban-col-dot {
|
|
31049
|
+
flex: none;
|
|
31050
|
+
width: 8px;
|
|
31051
|
+
height: 8px;
|
|
31052
|
+
border-radius: 50%;
|
|
31053
|
+
background: var(--st-idle);
|
|
31054
|
+
}
|
|
31055
|
+
|
|
31056
|
+
.kanban-col-dot-idle { background: var(--st-idle); box-shadow: 0 0 0 3px var(--st-idle-soft); }
|
|
31057
|
+
.kanban-col-dot-todo { background: var(--st-todo); box-shadow: 0 0 0 3px var(--st-todo-soft); }
|
|
31058
|
+
.kanban-col-dot-work { background: var(--st-work); box-shadow: 0 0 0 3px var(--st-work-soft); }
|
|
31059
|
+
.kanban-col-dot-need { background: var(--st-need); box-shadow: 0 0 0 3px var(--st-need-soft); }
|
|
31060
|
+
.kanban-col-dot-done { background: var(--success); box-shadow: 0 0 0 3px var(--success-soft); }
|
|
31061
|
+
|
|
31062
|
+
.kanban-column > header {
|
|
31063
|
+
gap: 8px;
|
|
31064
|
+
padding: 10px 12px;
|
|
31065
|
+
}
|
|
31066
|
+
|
|
31067
|
+
.kanban-column h2 {
|
|
31068
|
+
font-size: var(--fs-13);
|
|
31069
|
+
font-weight: var(--fw-s);
|
|
31070
|
+
}
|
|
31071
|
+
|
|
31072
|
+
.kanban-col-count {
|
|
31073
|
+
margin-left: auto;
|
|
31074
|
+
min-width: 20px;
|
|
31075
|
+
height: 20px;
|
|
31076
|
+
padding: 0 6px;
|
|
31077
|
+
display: inline-flex;
|
|
31078
|
+
align-items: center;
|
|
31079
|
+
justify-content: center;
|
|
31080
|
+
border-radius: var(--radius-full);
|
|
31081
|
+
background: var(--surface-muted);
|
|
31082
|
+
color: var(--muted);
|
|
31083
|
+
font-size: 11px;
|
|
31084
|
+
font-weight: 700;
|
|
31085
|
+
font-variant-numeric: tabular-nums;
|
|
31086
|
+
}
|
|
31087
|
+
|
|
31088
|
+
/* ── 5. 状态板列头降噪:色点保留,名称正体,描述小字,信号色对齐 st-* ──── */
|
|
31089
|
+
.session-board-needs-you { --col-signal: var(--st-need); }
|
|
31090
|
+
.session-board-working { --col-signal: var(--st-work); }
|
|
31091
|
+
.session-board-todo { --col-signal: var(--st-todo); }
|
|
31092
|
+
.session-board-idle { --col-signal: var(--st-idle); }
|
|
31093
|
+
|
|
31094
|
+
.session-board-column > header {
|
|
31095
|
+
min-height: 0;
|
|
31096
|
+
padding: 10px 12px;
|
|
31097
|
+
gap: 8px;
|
|
31098
|
+
}
|
|
31099
|
+
|
|
31100
|
+
.session-board-column h2 {
|
|
31101
|
+
font-family: var(--font);
|
|
31102
|
+
font-size: var(--fs-13);
|
|
31103
|
+
font-weight: var(--fw-s);
|
|
31104
|
+
letter-spacing: 0;
|
|
31105
|
+
text-transform: none;
|
|
31106
|
+
}
|
|
31107
|
+
|
|
31108
|
+
.session-board-column p {
|
|
31109
|
+
font-size: 11px;
|
|
31110
|
+
color: var(--faint);
|
|
31111
|
+
}
|
|
31112
|
+
|
|
31113
|
+
.session-board-count {
|
|
31114
|
+
font-family: inherit;
|
|
31115
|
+
font-size: 11px;
|
|
31116
|
+
}
|
|
31117
|
+
|
|
31118
|
+
/* 状态板卡片:状态色条 + hover 显示操作 */
|
|
31119
|
+
.session-card {
|
|
31120
|
+
padding-left: 14px;
|
|
31121
|
+
}
|
|
31122
|
+
|
|
31123
|
+
.session-card::before {
|
|
31124
|
+
content: '';
|
|
31125
|
+
position: absolute;
|
|
31126
|
+
left: 0;
|
|
31127
|
+
top: 0;
|
|
31128
|
+
bottom: 0;
|
|
31129
|
+
width: 3px;
|
|
31130
|
+
background: var(--st-idle);
|
|
31131
|
+
}
|
|
31132
|
+
|
|
31133
|
+
.session-card[data-signal="needs-you"]::before { background: var(--st-need); }
|
|
31134
|
+
.session-card[data-signal="working"]::before { background: var(--st-work); }
|
|
31135
|
+
.session-card[data-signal="todo"]::before { background: var(--st-todo); }
|
|
31136
|
+
.session-card[data-signal="idle"]::before { background: var(--st-idle); }
|
|
31137
|
+
.session-card[data-signal="closed"]::before { background: var(--border-strong); }
|
|
31138
|
+
|
|
31139
|
+
.session-card-actions {
|
|
31140
|
+
opacity: 0;
|
|
31141
|
+
transition: opacity var(--t-fast);
|
|
31142
|
+
}
|
|
31143
|
+
|
|
31144
|
+
.session-card:hover .session-card-actions,
|
|
31145
|
+
.session-card:focus-within .session-card-actions {
|
|
31146
|
+
opacity: 1;
|
|
31147
|
+
}
|
|
31148
|
+
|
|
31149
|
+
@media (hover: none), (max-width: 720px) {
|
|
31150
|
+
.session-card-actions {
|
|
31151
|
+
opacity: 1;
|
|
31152
|
+
}
|
|
31153
|
+
}
|
|
31154
|
+
|
|
31155
|
+
/* ── 6. Drawer:底部固定操作栏(主/次/危险 + 更多) ─────────────────── */
|
|
31156
|
+
#drawer {
|
|
31157
|
+
width: min(560px, calc(100vw - 32px));
|
|
31158
|
+
padding: 0;
|
|
31159
|
+
overflow: hidden;
|
|
31160
|
+
}
|
|
31161
|
+
|
|
31162
|
+
#drawer article {
|
|
31163
|
+
display: flex;
|
|
31164
|
+
flex-direction: column;
|
|
31165
|
+
gap: 0;
|
|
31166
|
+
max-height: min(86vh, 900px);
|
|
31167
|
+
padding: 0;
|
|
31168
|
+
}
|
|
31169
|
+
|
|
31170
|
+
#drawer header {
|
|
31171
|
+
flex: none;
|
|
31172
|
+
gap: 9px;
|
|
31173
|
+
padding: var(--sp-4) var(--sp-5) var(--sp-3);
|
|
31174
|
+
}
|
|
31175
|
+
|
|
31176
|
+
#drawer .drawer-body {
|
|
31177
|
+
flex: 1;
|
|
31178
|
+
min-height: 0;
|
|
31179
|
+
overflow-y: auto;
|
|
31180
|
+
padding: var(--sp-3) var(--sp-5);
|
|
31181
|
+
display: grid;
|
|
31182
|
+
gap: var(--sp-2);
|
|
31183
|
+
align-content: start;
|
|
31184
|
+
}
|
|
31185
|
+
|
|
31186
|
+
#drawer .drawer-body #insight-btn {
|
|
31187
|
+
justify-self: start;
|
|
31188
|
+
height: var(--button-height);
|
|
31189
|
+
margin-top: var(--sp-2);
|
|
31190
|
+
padding: 0 var(--sp-4);
|
|
31191
|
+
border: 1px solid var(--border);
|
|
31192
|
+
border-radius: var(--radius-full);
|
|
31193
|
+
background: var(--surface);
|
|
31194
|
+
color: var(--fg);
|
|
31195
|
+
font-size: var(--fs-12);
|
|
31196
|
+
cursor: pointer;
|
|
31197
|
+
}
|
|
31198
|
+
|
|
31199
|
+
#drawer .drawer-body #insight-btn:hover:not(:disabled) {
|
|
31200
|
+
border-color: var(--accent);
|
|
31201
|
+
color: var(--accent-strong);
|
|
31202
|
+
}
|
|
31203
|
+
|
|
31204
|
+
#drawer .drawer-foot {
|
|
31205
|
+
flex: none;
|
|
31206
|
+
display: flex;
|
|
31207
|
+
align-items: center;
|
|
31208
|
+
gap: var(--sp-2);
|
|
31209
|
+
padding: var(--sp-3) var(--sp-5);
|
|
31210
|
+
border-top: 1px solid var(--border-soft);
|
|
31211
|
+
background: var(--surface-muted);
|
|
31212
|
+
}
|
|
31213
|
+
|
|
31214
|
+
#drawer .drawer-foot-actions {
|
|
31215
|
+
display: flex;
|
|
31216
|
+
align-items: center;
|
|
31217
|
+
gap: var(--sp-2);
|
|
31218
|
+
flex-wrap: wrap;
|
|
31219
|
+
min-width: 0;
|
|
31220
|
+
}
|
|
31221
|
+
|
|
31222
|
+
.drawer-btn-primary {
|
|
31223
|
+
height: var(--button-height);
|
|
31224
|
+
padding: 0 var(--sp-5);
|
|
31225
|
+
border: 1px solid var(--accent);
|
|
31226
|
+
border-radius: var(--radius-full);
|
|
31227
|
+
background: var(--accent);
|
|
31228
|
+
color: var(--on-accent);
|
|
31229
|
+
font-size: var(--fs-13);
|
|
31230
|
+
font-weight: var(--fw-s);
|
|
31231
|
+
cursor: pointer;
|
|
31232
|
+
transition: background var(--t-fast), border-color var(--t-fast);
|
|
31233
|
+
}
|
|
31234
|
+
|
|
31235
|
+
.drawer-btn-primary:hover:not(:disabled) {
|
|
31236
|
+
background: var(--accent-hover);
|
|
31237
|
+
border-color: var(--accent-hover);
|
|
31238
|
+
}
|
|
31239
|
+
|
|
31240
|
+
.drawer-btn-primary:disabled {
|
|
31241
|
+
opacity: 0.5;
|
|
31242
|
+
cursor: not-allowed;
|
|
31243
|
+
}
|
|
31244
|
+
|
|
31245
|
+
.drawer-btn-secondary {
|
|
31246
|
+
height: var(--button-height);
|
|
31247
|
+
padding: 0 var(--sp-4);
|
|
31248
|
+
border: 1px solid var(--border-strong);
|
|
31249
|
+
border-radius: var(--radius-full);
|
|
31250
|
+
background: var(--surface);
|
|
31251
|
+
color: var(--fg);
|
|
31252
|
+
font-size: var(--fs-13);
|
|
31253
|
+
font-weight: var(--fw-m);
|
|
31254
|
+
cursor: pointer;
|
|
31255
|
+
transition: border-color var(--t-fast), color var(--t-fast);
|
|
31256
|
+
}
|
|
31257
|
+
|
|
31258
|
+
.drawer-btn-secondary:hover:not(:disabled) {
|
|
31259
|
+
border-color: var(--accent);
|
|
31260
|
+
color: var(--accent-strong);
|
|
31261
|
+
}
|
|
31262
|
+
|
|
31263
|
+
.drawer-btn-danger {
|
|
31264
|
+
height: var(--button-height);
|
|
31265
|
+
padding: 0 var(--sp-4);
|
|
31266
|
+
border: 1px solid color-mix(in srgb, var(--danger) 55%, var(--border));
|
|
31267
|
+
border-radius: var(--radius-full);
|
|
31268
|
+
background: var(--surface);
|
|
31269
|
+
color: var(--danger);
|
|
31270
|
+
font-size: var(--fs-13);
|
|
31271
|
+
font-weight: var(--fw-m);
|
|
31272
|
+
cursor: pointer;
|
|
31273
|
+
transition: background var(--t-fast), border-color var(--t-fast);
|
|
31274
|
+
}
|
|
31275
|
+
|
|
31276
|
+
.drawer-btn-danger:hover:not(:disabled) {
|
|
31277
|
+
background: var(--danger-soft);
|
|
31278
|
+
border-color: var(--danger);
|
|
31279
|
+
}
|
|
31280
|
+
|
|
31281
|
+
.drawer-more {
|
|
31282
|
+
position: relative;
|
|
31283
|
+
margin-left: auto;
|
|
31284
|
+
flex: none;
|
|
31285
|
+
}
|
|
31286
|
+
|
|
31287
|
+
.drawer-more > summary {
|
|
31288
|
+
display: inline-flex;
|
|
31289
|
+
align-items: center;
|
|
31290
|
+
height: var(--button-height);
|
|
31291
|
+
padding: 0 var(--sp-4);
|
|
31292
|
+
border: 1px solid var(--border);
|
|
31293
|
+
border-radius: var(--radius-full);
|
|
31294
|
+
background: var(--surface);
|
|
31295
|
+
color: var(--muted);
|
|
31296
|
+
font-size: var(--fs-12);
|
|
31297
|
+
cursor: pointer;
|
|
31298
|
+
list-style: none;
|
|
31299
|
+
transition: border-color var(--t-fast), color var(--t-fast);
|
|
31300
|
+
}
|
|
31301
|
+
|
|
31302
|
+
.drawer-more > summary::-webkit-details-marker {
|
|
31303
|
+
display: none;
|
|
31304
|
+
}
|
|
31305
|
+
|
|
31306
|
+
.drawer-more > summary:hover,
|
|
31307
|
+
.drawer-more[open] > summary {
|
|
31308
|
+
border-color: var(--accent);
|
|
31309
|
+
color: var(--accent-strong);
|
|
31310
|
+
}
|
|
31311
|
+
|
|
31312
|
+
.drawer-more-pop {
|
|
31313
|
+
position: absolute;
|
|
31314
|
+
bottom: calc(100% + 8px);
|
|
31315
|
+
right: 0;
|
|
31316
|
+
z-index: var(--z-drawer);
|
|
31317
|
+
min-width: 180px;
|
|
31318
|
+
padding: 6px;
|
|
31319
|
+
display: grid;
|
|
31320
|
+
gap: 2px;
|
|
31321
|
+
border: 1px solid var(--border-soft);
|
|
31322
|
+
border-radius: var(--radius-md);
|
|
31323
|
+
background: var(--surface-raised);
|
|
31324
|
+
box-shadow: var(--sh-lg);
|
|
31325
|
+
}
|
|
31326
|
+
|
|
31327
|
+
.drawer-more-pop > button,
|
|
31328
|
+
.drawer-more-item {
|
|
31329
|
+
display: flex;
|
|
31330
|
+
align-items: center;
|
|
31331
|
+
width: 100%;
|
|
31332
|
+
min-height: 32px;
|
|
31333
|
+
padding: 0 10px;
|
|
31334
|
+
border: 0;
|
|
31335
|
+
border-radius: var(--radius-sm);
|
|
31336
|
+
background: transparent;
|
|
31337
|
+
color: var(--fg);
|
|
31338
|
+
font-size: var(--fs-13);
|
|
31339
|
+
text-align: left;
|
|
31340
|
+
cursor: pointer;
|
|
31341
|
+
transition: background var(--t-fast);
|
|
31342
|
+
}
|
|
31343
|
+
|
|
31344
|
+
.drawer-more-pop > button:hover:not(:disabled),
|
|
31345
|
+
.drawer-more-item:hover {
|
|
31346
|
+
background: var(--surface-hover);
|
|
31347
|
+
}
|
|
31348
|
+
|
|
31349
|
+
.drawer-more-pop > button:disabled {
|
|
31350
|
+
opacity: 0.5;
|
|
31351
|
+
cursor: not-allowed;
|
|
31352
|
+
}
|
|
31353
|
+
|
|
31354
|
+
.drawer-more-item {
|
|
31355
|
+
padding: 0;
|
|
31356
|
+
}
|
|
31357
|
+
|
|
31358
|
+
.drawer-more-item > #locate-btn {
|
|
31359
|
+
width: 100%;
|
|
31360
|
+
min-height: 32px;
|
|
31361
|
+
padding: 0 10px;
|
|
31362
|
+
border: 0;
|
|
31363
|
+
background: transparent;
|
|
31364
|
+
color: var(--fg);
|
|
31365
|
+
font-size: var(--fs-13);
|
|
31366
|
+
text-align: left;
|
|
31367
|
+
cursor: pointer;
|
|
31368
|
+
border-radius: var(--radius-sm);
|
|
31369
|
+
}
|
|
31370
|
+
|
|
31371
|
+
.drawer-more-item > #locate-btn:hover:not(:disabled) {
|
|
31372
|
+
background: var(--surface-hover);
|
|
31373
|
+
}
|
|
31374
|
+
|
|
31375
|
+
.drawer-more-item > #locate-btn:disabled {
|
|
31376
|
+
opacity: 0.5;
|
|
31377
|
+
cursor: not-allowed;
|
|
31378
|
+
}
|
|
31379
|
+
|
|
31380
|
+
.drawer-more-link {
|
|
31381
|
+
text-decoration: none;
|
|
31382
|
+
box-sizing: border-box;
|
|
31383
|
+
}
|
|
31384
|
+
|
|
31385
|
+
/* ── 7. 骨架屏:首个快照到达前不闪「空」 ───────────────────────────── */
|
|
31386
|
+
.sessions-skeleton {
|
|
31387
|
+
display: grid;
|
|
31388
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
31389
|
+
gap: var(--sp-3);
|
|
31390
|
+
height: 100%;
|
|
31391
|
+
min-height: 300px;
|
|
31392
|
+
}
|
|
31393
|
+
|
|
31394
|
+
.sessions-skeleton-col {
|
|
31395
|
+
display: grid;
|
|
31396
|
+
gap: var(--sp-3);
|
|
31397
|
+
align-content: start;
|
|
31398
|
+
padding: var(--sp-3);
|
|
31399
|
+
border: 1px solid var(--border-soft);
|
|
31400
|
+
border-radius: var(--radius-lg);
|
|
31401
|
+
background: var(--surface-muted);
|
|
31402
|
+
}
|
|
31403
|
+
|
|
31404
|
+
.skel {
|
|
31405
|
+
border-radius: var(--radius-md);
|
|
31406
|
+
background: var(--border-soft);
|
|
31407
|
+
animation: skel-pulse 1.4s ease-in-out infinite;
|
|
31408
|
+
}
|
|
31409
|
+
|
|
31410
|
+
.skel-head {
|
|
31411
|
+
height: 14px;
|
|
31412
|
+
width: 42%;
|
|
31413
|
+
}
|
|
31414
|
+
|
|
31415
|
+
.skel-card {
|
|
31416
|
+
height: 96px;
|
|
31417
|
+
}
|
|
31418
|
+
|
|
31419
|
+
.skel-card-short {
|
|
31420
|
+
height: 72px;
|
|
31421
|
+
width: 88%;
|
|
31422
|
+
}
|
|
31423
|
+
|
|
31424
|
+
@keyframes skel-pulse {
|
|
31425
|
+
0%, 100% { opacity: 1; }
|
|
31426
|
+
50% { opacity: 0.45; }
|
|
31427
|
+
}
|
|
31428
|
+
|
|
31429
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31430
|
+
.skel {
|
|
31431
|
+
animation: none;
|
|
31432
|
+
}
|
|
31433
|
+
}
|
|
31434
|
+
|
|
31435
|
+
/* ── 8. 移动端:筛选条收敛为搜索 + 筛选按钮;骨架单列 ────────────────── */
|
|
31436
|
+
@media (max-width: 720px) {
|
|
31437
|
+
.sessions-page .sessions-toolbar .sessions-quick-view,
|
|
31438
|
+
.sessions-page .sessions-toolbar .sessions-sort-menu,
|
|
31439
|
+
.sessions-page .sessions-toolbar .idle-cleanup-bar {
|
|
31440
|
+
display: none;
|
|
31441
|
+
}
|
|
31442
|
+
|
|
31443
|
+
.sessions-page .sessions-toolbar input[type="search"][name="q"] {
|
|
31444
|
+
flex: 1 1 auto;
|
|
31445
|
+
max-width: none;
|
|
31446
|
+
}
|
|
31447
|
+
|
|
31448
|
+
.sessions-skeleton {
|
|
31449
|
+
grid-template-columns: 1fr;
|
|
31450
|
+
height: auto;
|
|
31451
|
+
}
|
|
31452
|
+
|
|
31453
|
+
.sessions-filter-drawer {
|
|
31454
|
+
width: min(400px, calc(100vw - 24px));
|
|
31455
|
+
}
|
|
31456
|
+
}
|