@polderlabs/bizar 10.7.2 → 10.10.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/.claude/agents/_shared/AGENT_BASELINE.md +48 -243
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +4 -2
- package/.claude/agents/_shared/SKILLS.md +18 -95
- package/.claude/agents/brand-designer.md +7 -5
- package/.claude/agents/debug-specialist.md +68 -0
- package/.claude/agents/exec-assistant.md +2 -1
- package/.claude/agents/help-desk.md +3 -3
- package/.claude/agents/it-lead.md +5 -5
- package/.claude/agents/knowledge-manager.md +2 -2
- package/.claude/agents/office-coordinator.md +3 -4
- package/.claude/agents/office-greeter.md +5 -5
- package/.claude/agents/office-manager.md +127 -42
- package/.claude/agents/planner.md +120 -0
- package/.claude/agents/principal-engineer.md +6 -5
- package/.claude/agents/qa-reviewer.md +4 -4
- package/.claude/agents/research-analyst.md +13 -43
- package/.claude/agents/senior-engineer.md +5 -4
- package/.claude/agents/support-tech.md +21 -73
- package/.claude/agents/ui-designer.md +89 -0
- package/.claude/commands/bizar.md +9 -16
- package/.claude/commands/cron.md +7 -3
- package/.claude/commands/learn.md +4 -2
- package/.claude/commands/plan.md +14 -28
- package/.claude/commands/plow-through.md +19 -38
- package/.claude/commands/pr-review.md +2 -3
- package/.claude/commands/setup-provider.md +15 -88
- package/.claude/commands/sprint.md +3 -3
- package/.claude/commands/tailscale-serve.md +9 -95
- package/.claude/commands/team.md +26 -122
- package/.claude/commands/test.md +3 -3
- package/.claude/commands/use-default.md +53 -0
- package/.claude/commands/use-premium.md +74 -0
- package/.claude/commands/validate.md +13 -61
- package/.claude/hooks/README.md +24 -108
- package/.claude/hooks/advisor-context.mjs +42 -0
- package/.claude/hooks/agent-grounding.mjs +41 -0
- package/.claude/hooks/content-style-guard.mjs +73 -0
- package/.claude/hooks/control-inbox.mjs +48 -0
- package/.claude/hooks/git-workflow-guard.mjs +104 -0
- package/.claude/hooks/learning-extract.mjs +0 -0
- package/.claude/hooks/path-ownership-guard.mjs +89 -0
- package/.claude/hooks/precompact-priorities.sh +11 -0
- package/.claude/hooks/pretooluse-bash.mjs +4 -11
- package/.claude/hooks/sessionend-recall.mjs +0 -0
- package/.claude/hooks/sessionstart-prime.mjs +10 -4
- package/.claude/hooks/simplify-guard.mjs +51 -0
- package/.claude/hooks/telemetry.mjs +69 -0
- package/.claude/hooks/thinking-route.mjs +7 -9
- package/.claude/hooks/worker-suggest.mjs +21 -13
- package/.claude/hooks/worktree-bootstrap.mjs +64 -0
- package/.claude/model-router.json +57 -0
- package/.claude/settings.json +92 -140
- package/AGENTS.md +95 -0
- package/README.md +76 -472
- package/cli/agent-browser-update.mjs +87 -274
- package/cli/atomic.mjs +1 -1
- package/cli/audit.mjs +31 -121
- package/cli/banner.mjs +3 -14
- package/cli/bin.mjs +83 -331
- package/cli/bootstrap.mjs +9 -12
- package/cli/commands/claude-cmd.mjs +45 -309
- package/cli/commands/control.mjs +102 -0
- package/cli/commands/install.mjs +9 -56
- package/cli/commands/rca.mjs +63 -165
- package/cli/commands/sandbox.mjs +89 -183
- package/cli/commands/setup-provider.mjs +65 -423
- package/cli/commands/task.mjs +249 -0
- package/cli/commands/util.mjs +37 -197
- package/cli/commands/validate.mjs +45 -75
- package/cli/control-store.mjs +312 -0
- package/{bizar-dash/src/server → cli/core}/backup-store.mjs +7 -17
- package/cli/doctor.mjs +8 -13
- package/cli/export.mjs +3 -7
- package/cli/init.mjs +1 -135
- package/cli/install/banner.mjs +4 -14
- package/cli/install/paths.mjs +3 -8
- package/cli/install.mjs +2 -7
- package/cli/migrate.mjs +24 -24
- package/{bizar-dash/src/server → cli}/progress-parser.mjs +7 -5
- package/cli/provision.mjs +140 -165
- package/cli/task-ledger.mjs +842 -0
- package/cli/update.mjs +2 -2
- package/cli/utils.mjs +1 -38
- package/config/AGENTS.md +14 -591
- package/config/rules/general.md +1 -1
- package/config/rules/uncertainty.md +2 -2
- package/config/skills/9router/SKILL.md +3 -3
- package/config/skills/9router-tts/SKILL.md +1 -1
- package/config/skills/agent-browser/SKILL.md +53 -0
- package/config/skills/bizar/README.md +3 -3
- package/config/skills/bizar/SKILL.md +31 -431
- package/config/skills/clean-gone-branches/SKILL.md +8 -0
- package/config/skills/commit-staged/SKILL.md +15 -0
- package/config/skills/cpp-coding-standards/README.md +3 -3
- package/config/skills/cpp-testing/README.md +2 -2
- package/config/skills/create-pr/SKILL.md +16 -0
- package/config/skills/cubesandbox/SKILL.md +33 -128
- package/config/skills/embedded-esp-idf/README.md +3 -3
- package/config/skills/harness-engineering/SKILL.md +37 -126
- package/config/skills/read-the-damn-docs/SKILL.md +2 -2
- package/config/skills/resolve-pr-comments/SKILL.md +14 -0
- package/config/skills/review-pr/SKILL.md +10 -0
- package/config/skills/self-improvement/SKILL.md +19 -54
- package/config/skills/simplify/SKILL.md +15 -0
- package/config/skills/update-pr-summary/SKILL.md +8 -0
- package/config/trigger-patterns.json +11 -25
- package/package.json +28 -102
- package/packages/sdk/dist/agent-registry.d.ts +2 -2
- package/packages/sdk/dist/agent-registry.js +2 -2
- package/packages/sdk/dist/consensus/index.d.ts +4 -4
- package/packages/sdk/dist/consensus/index.js +5 -5
- package/packages/sdk/dist/federation/envelope.d.ts +1 -1
- package/packages/sdk/dist/federation/envelope.js +2 -2
- package/packages/sdk/dist/index.d.ts +1 -4
- package/packages/sdk/dist/index.js +1 -4
- package/packages/sdk/dist/mcp/server.d.ts +8 -13
- package/packages/sdk/dist/mcp/server.js +15 -77
- package/packages/sdk/dist/router/index.d.ts +2 -2
- package/packages/sdk/dist/router/index.js +2 -2
- package/packages/sdk/dist/version.d.ts +2 -2
- package/packages/sdk/dist/version.js +2 -2
- package/packages/sdk/package.json +1 -2
- package/scripts/git-hooks/pre-commit +2 -2
- package/scripts/git-hooks/pre-push +3 -3
- package/scripts/install-hooks.sh +2 -2
- package/.claude/agents/vp-engineering.md +0 -54
- package/.claude/commands/goal.md +0 -99
- package/.claude/commands/visual-plan.md +0 -24
- package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +0 -146
- package/.claude/hooks/__tests__/sessionend-recall.test.mjs +0 -256
- package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +0 -325
- package/.claude/hooks/__tests__/thinking-route.test.mjs +0 -319
- package/.claude/hooks/post-merge-audit.sh +0 -93
- package/.claude/skills/9router/SKILL.md +0 -80
- package/.claude/skills/9router-chat/SKILL.md +0 -73
- package/.claude/skills/9router-embeddings/SKILL.md +0 -69
- package/.claude/skills/9router-image/SKILL.md +0 -86
- package/.claude/skills/9router-stt/SKILL.md +0 -79
- package/.claude/skills/9router-tts/SKILL.md +0 -80
- package/.claude/skills/9router-web-fetch/SKILL.md +0 -99
- package/.claude/skills/9router-web-search/SKILL.md +0 -91
- package/.claude/skills/agent-browser/SKILL.md +0 -64
- package/.claude/skills/bizar/README.md +0 -9
- package/.claude/skills/bizar/SKILL.md +0 -447
- package/.claude/skills/cpp-coding-standards/README.md +0 -28
- package/.claude/skills/cpp-coding-standards/SKILL.md +0 -634
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +0 -320
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +0 -229
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +0 -216
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +0 -282
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +0 -96
- package/.claude/skills/cpp-testing/README.md +0 -28
- package/.claude/skills/cpp-testing/SKILL.md +0 -304
- package/.claude/skills/cpp-testing/references/coverage.md +0 -370
- package/.claude/skills/cpp-testing/references/framework-compare.md +0 -175
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +0 -499
- package/.claude/skills/cpp-testing/references/mocking.md +0 -364
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +0 -308
- package/.claude/skills/cubesandbox/SKILL.md +0 -148
- package/.claude/skills/de-sloppify/cleanup.mjs +0 -253
- package/.claude/skills/de-sloppify/cleanup.test.mjs +0 -189
- package/.claude/skills/embedded-esp-idf/README.md +0 -41
- package/.claude/skills/embedded-esp-idf/SKILL.md +0 -439
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +0 -214
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +0 -164
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +0 -157
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +0 -159
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +0 -118
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +0 -137
- package/.claude/skills/embedded-esp-idf/references/nvs.md +0 -121
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +0 -192
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +0 -47
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +0 -77
- package/.claude/skills/glyph/SKILL.md +0 -163
- package/.claude/skills/harness-engineering/SKILL.md +0 -142
- package/.claude/skills/lightrag/SKILL.md +0 -81
- package/.claude/skills/memory-protocol/SKILL.md +0 -105
- package/.claude/skills/obsidian/SKILL.md +0 -306
- package/.claude/skills/read-the-damn-docs/SKILL.md +0 -113
- package/.claude/skills/self-improvement/SKILL.md +0 -64
- package/.claude/skills/skillopt/SKILL.md +0 -129
- package/.claude/skills/thinking-archetypes/SKILL.md +0 -90
- package/.claude/skills/thinking-bayesian/SKILL.md +0 -267
- package/.claude/skills/thinking-bounded-rationality/SKILL.md +0 -406
- package/.claude/skills/thinking-circle-of-competence/SKILL.md +0 -216
- package/.claude/skills/thinking-cynefin/SKILL.md +0 -70
- package/.claude/skills/thinking-debiasing/SKILL.md +0 -192
- package/.claude/skills/thinking-dual-process/SKILL.md +0 -282
- package/.claude/skills/thinking-effectuation/SKILL.md +0 -366
- package/.claude/skills/thinking-feedback-loops/SKILL.md +0 -464
- package/.claude/skills/thinking-fermi-estimation/SKILL.md +0 -263
- package/.claude/skills/thinking-first-principles/SKILL.md +0 -167
- package/.claude/skills/thinking-five-whys-plus/SKILL.md +0 -139
- package/.claude/skills/thinking-inversion/SKILL.md +0 -195
- package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +0 -363
- package/.claude/skills/thinking-kepner-tregoe/SKILL.md +0 -154
- package/.claude/skills/thinking-leverage-points/SKILL.md +0 -390
- package/.claude/skills/thinking-lindy-effect/SKILL.md +0 -331
- package/.claude/skills/thinking-map-territory/SKILL.md +0 -111
- package/.claude/skills/thinking-margin-of-safety/SKILL.md +0 -330
- package/.claude/skills/thinking-model-combination/SKILL.md +0 -406
- package/.claude/skills/thinking-model-router/SKILL.md +0 -360
- package/.claude/skills/thinking-model-selection/SKILL.md +0 -341
- package/.claude/skills/thinking-occams-razor/SKILL.md +0 -129
- package/.claude/skills/thinking-ooda/SKILL.md +0 -127
- package/.claude/skills/thinking-opportunity-cost/SKILL.md +0 -360
- package/.claude/skills/thinking-pre-mortem/SKILL.md +0 -170
- package/.claude/skills/thinking-probabilistic/SKILL.md +0 -324
- package/.claude/skills/thinking-red-team/SKILL.md +0 -142
- package/.claude/skills/thinking-regret-minimization/SKILL.md +0 -335
- package/.claude/skills/thinking-reversibility/SKILL.md +0 -326
- package/.claude/skills/thinking-scientific-method/SKILL.md +0 -162
- package/.claude/skills/thinking-second-order/SKILL.md +0 -184
- package/.claude/skills/thinking-socratic/SKILL.md +0 -198
- package/.claude/skills/thinking-steel-manning/SKILL.md +0 -332
- package/.claude/skills/thinking-systems/SKILL.md +0 -238
- package/.claude/skills/thinking-theory-of-constraints/SKILL.md +0 -338
- package/.claude/skills/thinking-thought-experiment/SKILL.md +0 -354
- package/.claude/skills/thinking-triz/SKILL.md +0 -171
- package/.claude/skills/thinking-via-negativa/SKILL.md +0 -358
- package/bizar-dash/.bizar/graph/.graphify_analysis.json +0 -1540
- package/bizar-dash/.bizar/graph/.graphify_labels.json +0 -1
- package/bizar-dash/.bizar/graph/GRAPH_REPORT.md +0 -404
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/0661b816358db84dfdb7f10443db8a61152fd20b3fee950caf8fbf32920a1790.json +0 -1
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/16da06d774142a6e5d74829ad982531286a6193ef798de8f593db029e123ec32.json +0 -1
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/27e5697c01254c69c64c5a33896669073b40afb5ba88375102ae77fa5404136d.json +0 -1
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/532997898027254aa4c0932243dc71d2f55888181232b65974961934997dc85b.json +0 -1
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/84e3451a64c7f99f0cd6a88b0748d7426780486f53ab4935b7476b28c08f8293.json +0 -1
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/88e5ea5f3e78fa69353fe9e6a8d1a05391d54605e25600cb125531eb5a6432ff.json +0 -1
- package/bizar-dash/.bizar/graph/cache/stat-index.json +0 -1
- package/bizar-dash/.bizar/graph/graph.html +0 -307
- package/bizar-dash/.bizar/graph/graph.json +0 -40267
- package/bizar-dash/.bizar/graph/manifest.json +0 -762
- package/bizar-dash/.graphifyignore +0 -40
- package/bizar-dash/.obsidian/README.md +0 -14
- package/bizar-dash/.obsidian/daily/2026-06-25.md +0 -9
- package/bizar-dash/.obsidian/vault.json +0 -7
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +0 -103
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +0 -338
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +0 -81
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +0 -172
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +0 -44
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +0 -247
- package/bizar-dash/ARCHITECTURE.md +0 -197
- package/bizar-dash/BROWSER_VERIFICATION.md +0 -190
- package/bizar-dash/CHANGELOG.md +0 -807
- package/bizar-dash/CONTROL_SURFACES.md +0 -156
- package/bizar-dash/DESIGN.md +0 -912
- package/bizar-dash/GLYPH.md +0 -418
- package/bizar-dash/PLAN.md +0 -1135
- package/bizar-dash/SETTINGS_AUDIT.md +0 -225
- package/bizar-dash/critique.json +0 -26
- package/bizar-dash/dist/assets/ActivityFeed-Bw4Cai7r.js +0 -11
- package/bizar-dash/dist/assets/ActivityFeed-Bw4Cai7r.js.map +0 -1
- package/bizar-dash/dist/assets/ActivityView-BC0QQ_j9.js +0 -2
- package/bizar-dash/dist/assets/ActivityView-BC0QQ_j9.js.map +0 -1
- package/bizar-dash/dist/assets/AdminView-CLTNKFL4.js +0 -11
- package/bizar-dash/dist/assets/AdminView-CLTNKFL4.js.map +0 -1
- package/bizar-dash/dist/assets/AgentActivity-DBWDByjk.js +0 -67
- package/bizar-dash/dist/assets/AgentActivity-DBWDByjk.js.map +0 -1
- package/bizar-dash/dist/assets/AgentsView-DD6bCIbA.js +0 -15
- package/bizar-dash/dist/assets/AgentsView-DD6bCIbA.js.map +0 -1
- package/bizar-dash/dist/assets/Alert-pzFISNtS.js +0 -6
- package/bizar-dash/dist/assets/Alert-pzFISNtS.js.map +0 -1
- package/bizar-dash/dist/assets/ArtifactsView-BVU5lfo7.js +0 -21
- package/bizar-dash/dist/assets/ArtifactsView-BVU5lfo7.js.map +0 -1
- package/bizar-dash/dist/assets/AuthView-BZ-bPIOM.js +0 -16
- package/bizar-dash/dist/assets/AuthView-BZ-bPIOM.js.map +0 -1
- package/bizar-dash/dist/assets/Avatar-CRW81ewE.js +0 -6
- package/bizar-dash/dist/assets/Avatar-CRW81ewE.js.map +0 -1
- package/bizar-dash/dist/assets/BackgroundJobsView-w8OZtXyI.js +0 -1
- package/bizar-dash/dist/assets/BackgroundJobsView-w8OZtXyI.js.map +0 -1
- package/bizar-dash/dist/assets/BackupView-u_O3j0TG.js +0 -1
- package/bizar-dash/dist/assets/BackupView-u_O3j0TG.js.map +0 -1
- package/bizar-dash/dist/assets/Banner-Du-3l05O.js +0 -1
- package/bizar-dash/dist/assets/Banner-Du-3l05O.js.map +0 -1
- package/bizar-dash/dist/assets/Card-Clkvh43Q.js +0 -1
- package/bizar-dash/dist/assets/Card-Clkvh43Q.js.map +0 -1
- package/bizar-dash/dist/assets/ChatView-BTjb3mIh.js +0 -9
- package/bizar-dash/dist/assets/ChatView-BTjb3mIh.js.map +0 -1
- package/bizar-dash/dist/assets/Chip-B7ovcm01.js +0 -1
- package/bizar-dash/dist/assets/Chip-B7ovcm01.js.map +0 -1
- package/bizar-dash/dist/assets/ClaudeSessionsView-BoZS5ldi.js +0 -1
- package/bizar-dash/dist/assets/ClaudeSessionsView-BoZS5ldi.js.map +0 -1
- package/bizar-dash/dist/assets/ClipboardView-Cb6XgYZI.js +0 -1
- package/bizar-dash/dist/assets/ClipboardView-Cb6XgYZI.js.map +0 -1
- package/bizar-dash/dist/assets/ConfigView-DfTJk1uL.js +0 -1
- package/bizar-dash/dist/assets/ConfigView-DfTJk1uL.js.map +0 -1
- package/bizar-dash/dist/assets/DiagnosticsView-D5Wy9xlJ.js +0 -2
- package/bizar-dash/dist/assets/DiagnosticsView-D5Wy9xlJ.js.map +0 -1
- package/bizar-dash/dist/assets/DialogsView-HVyfrXpq.js +0 -6
- package/bizar-dash/dist/assets/DialogsView-HVyfrXpq.js.map +0 -1
- package/bizar-dash/dist/assets/DoctorView-Dm94WI2z.js +0 -6
- package/bizar-dash/dist/assets/DoctorView-Dm94WI2z.js.map +0 -1
- package/bizar-dash/dist/assets/EmptyState-ccT__JZG.js +0 -1
- package/bizar-dash/dist/assets/EmptyState-ccT__JZG.js.map +0 -1
- package/bizar-dash/dist/assets/EnvVarsView-BhcIuJ6V.js +0 -8
- package/bizar-dash/dist/assets/EnvVarsView-BhcIuJ6V.js.map +0 -1
- package/bizar-dash/dist/assets/ErrorState-BSqf65ka.js +0 -1
- package/bizar-dash/dist/assets/ErrorState-BSqf65ka.js.map +0 -1
- package/bizar-dash/dist/assets/EvalView-2cbWVBUA.js +0 -1
- package/bizar-dash/dist/assets/EvalView-2cbWVBUA.js.map +0 -1
- package/bizar-dash/dist/assets/GoalsView-C3QG5p7T.js +0 -6
- package/bizar-dash/dist/assets/GoalsView-C3QG5p7T.js.map +0 -1
- package/bizar-dash/dist/assets/Grid-Bojq8Sg7.js +0 -1
- package/bizar-dash/dist/assets/Grid-Bojq8Sg7.js.map +0 -1
- package/bizar-dash/dist/assets/HistoryView-Bum2TMMw.js +0 -1
- package/bizar-dash/dist/assets/HistoryView-Bum2TMMw.js.map +0 -1
- package/bizar-dash/dist/assets/Input-DV-vdaV8.js +0 -1
- package/bizar-dash/dist/assets/Input-DV-vdaV8.js.map +0 -1
- package/bizar-dash/dist/assets/LibrariesView-DH2E2uNb.js +0 -6
- package/bizar-dash/dist/assets/LibrariesView-DH2E2uNb.js.map +0 -1
- package/bizar-dash/dist/assets/LightRAGView-BFCcj7Tl.js +0 -6
- package/bizar-dash/dist/assets/LightRAGView-BFCcj7Tl.js.map +0 -1
- package/bizar-dash/dist/assets/ListHeader-CCD_nIHb.js +0 -1
- package/bizar-dash/dist/assets/ListHeader-CCD_nIHb.js.map +0 -1
- package/bizar-dash/dist/assets/MemoryView-Cr-obIQY.js +0 -8
- package/bizar-dash/dist/assets/MemoryView-Cr-obIQY.js.map +0 -1
- package/bizar-dash/dist/assets/MessageBubble-CrCJ0SYG.js +0 -29
- package/bizar-dash/dist/assets/MessageBubble-CrCJ0SYG.js.map +0 -1
- package/bizar-dash/dist/assets/MiscView-CDUQpYuV.js +0 -1
- package/bizar-dash/dist/assets/MiscView-CDUQpYuV.js.map +0 -1
- package/bizar-dash/dist/assets/ModsView-B6OR-a4B.js +0 -6
- package/bizar-dash/dist/assets/ModsView-B6OR-a4B.js.map +0 -1
- package/bizar-dash/dist/assets/NotificationsView-CIqtY6D0.js +0 -6
- package/bizar-dash/dist/assets/NotificationsView-CIqtY6D0.js.map +0 -1
- package/bizar-dash/dist/assets/ObsidianView-Nahah8QC.js +0 -1
- package/bizar-dash/dist/assets/ObsidianView-Nahah8QC.js.map +0 -1
- package/bizar-dash/dist/assets/OverviewView-B6L_wa4M.js +0 -1
- package/bizar-dash/dist/assets/OverviewView-B6L_wa4M.js.map +0 -1
- package/bizar-dash/dist/assets/ProgressBar-KC4VXsl_.js +0 -1
- package/bizar-dash/dist/assets/ProgressBar-KC4VXsl_.js.map +0 -1
- package/bizar-dash/dist/assets/ProjectsView-DgxWiqHb.js +0 -11
- package/bizar-dash/dist/assets/ProjectsView-DgxWiqHb.js.map +0 -1
- package/bizar-dash/dist/assets/ProvidersView-BOqN9omv.js +0 -11
- package/bizar-dash/dist/assets/ProvidersView-BOqN9omv.js.map +0 -1
- package/bizar-dash/dist/assets/SchedulesView-yMaG3Dtd.js +0 -1
- package/bizar-dash/dist/assets/SchedulesView-yMaG3Dtd.js.map +0 -1
- package/bizar-dash/dist/assets/Select-Bf_P0S6H.js +0 -6
- package/bizar-dash/dist/assets/Select-Bf_P0S6H.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsRow-CJb-F94Y.js +0 -1
- package/bizar-dash/dist/assets/SettingsRow-CJb-F94Y.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsView-BvOGcgMS.js +0 -18
- package/bizar-dash/dist/assets/SettingsView-BvOGcgMS.js.map +0 -1
- package/bizar-dash/dist/assets/Sheet-BwMVGN-8.js +0 -1
- package/bizar-dash/dist/assets/Sheet-BwMVGN-8.js.map +0 -1
- package/bizar-dash/dist/assets/Slider-AjjzqI-5.js +0 -1
- package/bizar-dash/dist/assets/Slider-AjjzqI-5.js.map +0 -1
- package/bizar-dash/dist/assets/Sparkline-Z4y0YUZS.js +0 -1
- package/bizar-dash/dist/assets/Sparkline-Z4y0YUZS.js.map +0 -1
- package/bizar-dash/dist/assets/Switch-B79a2t-G.js +0 -10
- package/bizar-dash/dist/assets/Switch-B79a2t-G.js.map +0 -1
- package/bizar-dash/dist/assets/TasksView-G-s_pwwr.js +0 -6
- package/bizar-dash/dist/assets/TasksView-G-s_pwwr.js.map +0 -1
- package/bizar-dash/dist/assets/Textarea-BfXGMXQ7.js +0 -1
- package/bizar-dash/dist/assets/Textarea-BfXGMXQ7.js.map +0 -1
- package/bizar-dash/dist/assets/UpdateView-BKx3u9X8.js +0 -1
- package/bizar-dash/dist/assets/UpdateView-BKx3u9X8.js.map +0 -1
- package/bizar-dash/dist/assets/UsageView-M01G6bZQ.js +0 -1
- package/bizar-dash/dist/assets/UsageView-M01G6bZQ.js.map +0 -1
- package/bizar-dash/dist/assets/ViewHeader-BsnaspKw.js +0 -6
- package/bizar-dash/dist/assets/ViewHeader-BsnaspKw.js.map +0 -1
- package/bizar-dash/dist/assets/VoiceView-rWE8vziD.js +0 -1
- package/bizar-dash/dist/assets/VoiceView-rWE8vziD.js.map +0 -1
- package/bizar-dash/dist/assets/brain-D7k5s8vH.js +0 -6
- package/bizar-dash/dist/assets/brain-D7k5s8vH.js.map +0 -1
- package/bizar-dash/dist/assets/calendar-CAZoDd-l.js +0 -6
- package/bizar-dash/dist/assets/calendar-CAZoDd-l.js.map +0 -1
- package/bizar-dash/dist/assets/circle-D99cZJBr.js +0 -6
- package/bizar-dash/dist/assets/circle-D99cZJBr.js.map +0 -1
- package/bizar-dash/dist/assets/circle-alert-QQTU4Quz.js +0 -6
- package/bizar-dash/dist/assets/circle-alert-QQTU4Quz.js.map +0 -1
- package/bizar-dash/dist/assets/circle-check-BMbe7Kkr.js +0 -6
- package/bizar-dash/dist/assets/circle-check-BMbe7Kkr.js.map +0 -1
- package/bizar-dash/dist/assets/clock-OtT5mvF3.js +0 -6
- package/bizar-dash/dist/assets/clock-OtT5mvF3.js.map +0 -1
- package/bizar-dash/dist/assets/cmdk-C3F6LD6N.js +0 -80
- package/bizar-dash/dist/assets/cmdk-C3F6LD6N.js.map +0 -1
- package/bizar-dash/dist/assets/dnd-kit-BAOLODOI.js +0 -5
- package/bizar-dash/dist/assets/dnd-kit-BAOLODOI.js.map +0 -1
- package/bizar-dash/dist/assets/download-B-mPX5P_.js +0 -6
- package/bizar-dash/dist/assets/download-B-mPX5P_.js.map +0 -1
- package/bizar-dash/dist/assets/external-link-DPDQM1YO.js +0 -6
- package/bizar-dash/dist/assets/external-link-DPDQM1YO.js.map +0 -1
- package/bizar-dash/dist/assets/file-text-BsCrv5aP.js +0 -6
- package/bizar-dash/dist/assets/file-text-BsCrv5aP.js.map +0 -1
- package/bizar-dash/dist/assets/filter-Do63x17E.js +0 -6
- package/bizar-dash/dist/assets/filter-Do63x17E.js.map +0 -1
- package/bizar-dash/dist/assets/git-pull-request-CpRAmERC.js +0 -11
- package/bizar-dash/dist/assets/git-pull-request-CpRAmERC.js.map +0 -1
- package/bizar-dash/dist/assets/index-B1OIS316.js +0 -1
- package/bizar-dash/dist/assets/index-B1OIS316.js.map +0 -1
- package/bizar-dash/dist/assets/index-CR0TeJmc.js +0 -1
- package/bizar-dash/dist/assets/index-CR0TeJmc.js.map +0 -1
- package/bizar-dash/dist/assets/main-BRmJZcHt.js +0 -277
- package/bizar-dash/dist/assets/main-BRmJZcHt.js.map +0 -1
- package/bizar-dash/dist/assets/main-D0TY0myE.css +0 -1
- package/bizar-dash/dist/assets/network-DJnHwHX3.js +0 -6
- package/bizar-dash/dist/assets/network-DJnHwHX3.js.map +0 -1
- package/bizar-dash/dist/assets/pause-HitDUnk_.js +0 -6
- package/bizar-dash/dist/assets/pause-HitDUnk_.js.map +0 -1
- package/bizar-dash/dist/assets/pencil-Dkks7eIC.js +0 -6
- package/bizar-dash/dist/assets/pencil-Dkks7eIC.js.map +0 -1
- package/bizar-dash/dist/assets/play-blqh0msT.js +0 -6
- package/bizar-dash/dist/assets/play-blqh0msT.js.map +0 -1
- package/bizar-dash/dist/assets/plug-DVvSSe40.js +0 -6
- package/bizar-dash/dist/assets/plug-DVvSSe40.js.map +0 -1
- package/bizar-dash/dist/assets/plus-Cps-8lcG.js +0 -6
- package/bizar-dash/dist/assets/plus-Cps-8lcG.js.map +0 -1
- package/bizar-dash/dist/assets/power-DEX4_Xoa.js +0 -6
- package/bizar-dash/dist/assets/power-DEX4_Xoa.js.map +0 -1
- package/bizar-dash/dist/assets/power-off-upZ4xjaG.js +0 -6
- package/bizar-dash/dist/assets/power-off-upZ4xjaG.js.map +0 -1
- package/bizar-dash/dist/assets/refresh-ccw-DN_zCB1h.js +0 -6
- package/bizar-dash/dist/assets/refresh-ccw-DN_zCB1h.js.map +0 -1
- package/bizar-dash/dist/assets/refresh-cw-KGm5eQgv.js +0 -6
- package/bizar-dash/dist/assets/refresh-cw-KGm5eQgv.js.map +0 -1
- package/bizar-dash/dist/assets/rotate-ccw-D5fkDRgk.js +0 -6
- package/bizar-dash/dist/assets/rotate-ccw-D5fkDRgk.js.map +0 -1
- package/bizar-dash/dist/assets/rotate-cw-CClSVUaX.js +0 -6
- package/bizar-dash/dist/assets/rotate-cw-CClSVUaX.js.map +0 -1
- package/bizar-dash/dist/assets/save-BY4ViPku.js +0 -6
- package/bizar-dash/dist/assets/save-BY4ViPku.js.map +0 -1
- package/bizar-dash/dist/assets/send-CaOL1yQD.js +0 -6
- package/bizar-dash/dist/assets/send-CaOL1yQD.js.map +0 -1
- package/bizar-dash/dist/assets/shield-alert-DA9K6uZO.js +0 -6
- package/bizar-dash/dist/assets/shield-alert-DA9K6uZO.js.map +0 -1
- package/bizar-dash/dist/assets/trash-2-B_Y6HrfN.js +0 -6
- package/bizar-dash/dist/assets/trash-2-B_Y6HrfN.js.map +0 -1
- package/bizar-dash/dist/assets/trending-up-qKTUQKIT.js +0 -6
- package/bizar-dash/dist/assets/trending-up-qKTUQKIT.js.map +0 -1
- package/bizar-dash/dist/assets/triangle-alert-BeY8LAv6.js +0 -6
- package/bizar-dash/dist/assets/triangle-alert-BeY8LAv6.js.map +0 -1
- package/bizar-dash/dist/assets/upload-BZCtmqIh.js +0 -6
- package/bizar-dash/dist/assets/upload-BZCtmqIh.js.map +0 -1
- package/bizar-dash/dist/assets/zap-Bz1Z8y1Q.js +0 -6
- package/bizar-dash/dist/assets/zap-Bz1Z8y1Q.js.map +0 -1
- package/bizar-dash/dist/index.html +0 -19
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/bizar-dash/plans/debug-plan/comments.json +0 -1
- package/bizar-dash/plans/debug-plan/meta.json +0 -10
- package/bizar-dash/plans/debug-plan/plan.json +0 -174
- package/bizar-dash/scripts/smoke-bg-retry.mjs +0 -246
- package/bizar-dash/skills/agent-baseline/SKILL.md +0 -80
- package/bizar-dash/skills/agent-browser/SKILL.md +0 -181
- package/bizar-dash/skills/bizar/SKILL.md +0 -116
- package/bizar-dash/skills/chat/SKILL.md +0 -74
- package/bizar-dash/skills/eval/SKILL.md +0 -237
- package/bizar-dash/skills/lightrag/SKILL.md +0 -86
- package/bizar-dash/skills/minimax/SKILL.md +0 -80
- package/bizar-dash/skills/obsidian/SKILL.md +0 -68
- package/bizar-dash/skills/providers/SKILL.md +0 -75
- package/bizar-dash/skills/publishing/SKILL.md +0 -147
- package/bizar-dash/skills/sdk/SKILL.md +0 -138
- package/bizar-dash/skills/self-improvement/SKILL.md +0 -53
- package/bizar-dash/skills/skills-cli/SKILL.md +0 -94
- package/bizar-dash/skills/usage/SKILL.md +0 -62
- package/bizar-dash/src/cli/dashboard-ports.mjs +0 -488
- package/bizar-dash/src/cli.mjs +0 -537
- package/bizar-dash/src/server/activity-log.mjs +0 -174
- package/bizar-dash/src/server/agent-bus.mjs +0 -485
- package/bizar-dash/src/server/agents-store.mjs +0 -466
- package/bizar-dash/src/server/api.mjs +0 -246
- package/bizar-dash/src/server/artifact-mint.mjs +0 -69
- package/bizar-dash/src/server/artifact-template.html +0 -810
- package/bizar-dash/src/server/artifacts-store.mjs +0 -839
- package/bizar-dash/src/server/auth.mjs +0 -548
- package/bizar-dash/src/server/background-store.mjs +0 -446
- package/bizar-dash/src/server/bg-poller.mjs +0 -375
- package/bizar-dash/src/server/bg-poller.test.mjs +0 -28
- package/bizar-dash/src/server/bg-retry.mjs +0 -446
- package/bizar-dash/src/server/bg-spawner.mjs +0 -390
- package/bizar-dash/src/server/browser.mjs +0 -40
- package/bizar-dash/src/server/claude-artifacts.mjs +0 -281
- package/bizar-dash/src/server/claude-bg-spawner.mjs +0 -390
- package/bizar-dash/src/server/claude-info.mjs +0 -412
- package/bizar-dash/src/server/claude-runner.mjs +0 -289
- package/bizar-dash/src/server/claude-sdk.mjs +0 -191
- package/bizar-dash/src/server/diagnostics-store.mjs +0 -568
- package/bizar-dash/src/server/dialog-poller.mjs +0 -105
- package/bizar-dash/src/server/dialog-store.mjs +0 -259
- package/bizar-dash/src/server/digest-store.mjs +0 -558
- package/bizar-dash/src/server/eval-store.mjs +0 -281
- package/bizar-dash/src/server/eval.mjs +0 -500
- package/bizar-dash/src/server/glyphs/mdx-compiler.mjs +0 -596
- package/bizar-dash/src/server/lib/path-safe.mjs +0 -283
- package/bizar-dash/src/server/lib/rate-limit.mjs +0 -122
- package/bizar-dash/src/server/logger.mjs +0 -71
- package/bizar-dash/src/server/loop-runtime.mjs +0 -429
- package/bizar-dash/src/server/memory-consolidator.mjs +0 -225
- package/bizar-dash/src/server/memory-distillation.mjs +0 -296
- package/bizar-dash/src/server/memory-git.mjs +0 -473
- package/bizar-dash/src/server/memory-lightrag.mjs +0 -1483
- package/bizar-dash/src/server/memory-obsidian.mjs +0 -230
- package/bizar-dash/src/server/memory-schema.mjs +0 -145
- package/bizar-dash/src/server/memory-secrets.mjs +0 -84
- package/bizar-dash/src/server/memory-store.mjs +0 -1093
- package/bizar-dash/src/server/metrics.mjs +0 -268
- package/bizar-dash/src/server/minimax-usage-store.mjs +0 -372
- package/bizar-dash/src/server/minimax.mjs +0 -683
- package/bizar-dash/src/server/mod-security.mjs +0 -397
- package/bizar-dash/src/server/mods-loader.mjs +0 -1243
- package/bizar-dash/src/server/notifications-store.mjs +0 -243
- package/bizar-dash/src/server/obsidian-store.mjs +0 -318
- package/bizar-dash/src/server/ocr.mjs +0 -55
- package/bizar-dash/src/server/otel.mjs +0 -260
- package/bizar-dash/src/server/pair-store.mjs +0 -138
- package/bizar-dash/src/server/progress-parser.test.mjs +0 -129
- package/bizar-dash/src/server/projects-store.mjs +0 -364
- package/bizar-dash/src/server/providers-store.mjs +0 -1801
- package/bizar-dash/src/server/routes/_shared.mjs +0 -430
- package/bizar-dash/src/server/routes/activity.mjs +0 -215
- package/bizar-dash/src/server/routes/admin.mjs +0 -163
- package/bizar-dash/src/server/routes/agent-bus.mjs +0 -185
- package/bizar-dash/src/server/routes/agents-cc.mjs +0 -551
- package/bizar-dash/src/server/routes/agents-cc.test.mjs +0 -35
- package/bizar-dash/src/server/routes/agents.mjs +0 -149
- package/bizar-dash/src/server/routes/artifacts.mjs +0 -315
- package/bizar-dash/src/server/routes/audit.mjs +0 -79
- package/bizar-dash/src/server/routes/auth.mjs +0 -69
- package/bizar-dash/src/server/routes/background.mjs +0 -422
- package/bizar-dash/src/server/routes/backup.mjs +0 -112
- package/bizar-dash/src/server/routes/chat.mjs +0 -727
- package/bizar-dash/src/server/routes/claude-session-detail.mjs +0 -367
- package/bizar-dash/src/server/routes/claude-sessions.mjs +0 -259
- package/bizar-dash/src/server/routes/clipboard.mjs +0 -173
- package/bizar-dash/src/server/routes/config.mjs +0 -180
- package/bizar-dash/src/server/routes/decisions.mjs +0 -78
- package/bizar-dash/src/server/routes/diagnostics.mjs +0 -50
- package/bizar-dash/src/server/routes/dialogs.mjs +0 -134
- package/bizar-dash/src/server/routes/digests.mjs +0 -82
- package/bizar-dash/src/server/routes/distill.mjs +0 -129
- package/bizar-dash/src/server/routes/doctor.mjs +0 -71
- package/bizar-dash/src/server/routes/env-vars.mjs +0 -231
- package/bizar-dash/src/server/routes/eval.mjs +0 -187
- package/bizar-dash/src/server/routes/fs.mjs +0 -429
- package/bizar-dash/src/server/routes/goal-planner.mjs +0 -236
- package/bizar-dash/src/server/routes/goals.mjs +0 -428
- package/bizar-dash/src/server/routes/history.mjs +0 -78
- package/bizar-dash/src/server/routes/lightrag.mjs +0 -169
- package/bizar-dash/src/server/routes/loops.mjs +0 -138
- package/bizar-dash/src/server/routes/memory.mjs +0 -1524
- package/bizar-dash/src/server/routes/minimax.mjs +0 -133
- package/bizar-dash/src/server/routes/misc.mjs +0 -90
- package/bizar-dash/src/server/routes/model-router.mjs +0 -158
- package/bizar-dash/src/server/routes/model-router.test.mjs +0 -104
- package/bizar-dash/src/server/routes/mods.mjs +0 -359
- package/bizar-dash/src/server/routes/notifications.mjs +0 -54
- package/bizar-dash/src/server/routes/obsidian.mjs +0 -239
- package/bizar-dash/src/server/routes/ocr.mjs +0 -182
- package/bizar-dash/src/server/routes/overview.mjs +0 -219
- package/bizar-dash/src/server/routes/overview.test.mjs +0 -65
- package/bizar-dash/src/server/routes/pair.mjs +0 -67
- package/bizar-dash/src/server/routes/projects.mjs +0 -175
- package/bizar-dash/src/server/routes/providers.mjs +0 -361
- package/bizar-dash/src/server/routes/schedules.mjs +0 -159
- package/bizar-dash/src/server/routes/sessions.mjs +0 -80
- package/bizar-dash/src/server/routes/settings.mjs +0 -51
- package/bizar-dash/src/server/routes/skills.mjs +0 -70
- package/bizar-dash/src/server/routes/spawn.mjs +0 -59
- package/bizar-dash/src/server/routes/tailscale.mjs +0 -46
- package/bizar-dash/src/server/routes/tasks.mjs +0 -579
- package/bizar-dash/src/server/routes/themes.mjs +0 -51
- package/bizar-dash/src/server/routes/update.mjs +0 -367
- package/bizar-dash/src/server/routes/usage.mjs +0 -136
- package/bizar-dash/src/server/routes/users.mjs +0 -102
- package/bizar-dash/src/server/routes/voice.mjs +0 -167
- package/bizar-dash/src/server/routes/workspaces.mjs +0 -299
- package/bizar-dash/src/server/routes-v2/auth.mjs +0 -59
- package/bizar-dash/src/server/routes-v2/events.mjs +0 -121
- package/bizar-dash/src/server/routes-v2/health.mjs +0 -21
- package/bizar-dash/src/server/routes-v2/index.mjs +0 -90
- package/bizar-dash/src/server/routes-v2/sessions.mjs +0 -111
- package/bizar-dash/src/server/schedules-runner.mjs +0 -556
- package/bizar-dash/src/server/schedules-store.mjs +0 -268
- package/bizar-dash/src/server/search-store.mjs +0 -220
- package/bizar-dash/src/server/serve-info.mjs +0 -1110
- package/bizar-dash/src/server/server.mjs +0 -951
- package/bizar-dash/src/server/settings-store.mjs +0 -45
- package/bizar-dash/src/server/skills-store.mjs +0 -192
- package/bizar-dash/src/server/sprint.test.mjs +0 -163
- package/bizar-dash/src/server/state.mjs +0 -437
- package/bizar-dash/src/server/tailscale-store.mjs +0 -113
- package/bizar-dash/src/server/task-delegator.mjs +0 -969
- package/bizar-dash/src/server/task-splitter.mjs +0 -241
- package/bizar-dash/src/server/tasks-store.mjs +0 -556
- package/bizar-dash/src/server/tui.mjs +0 -923
- package/bizar-dash/src/server/update-store.mjs +0 -168
- package/bizar-dash/src/server/v2-auth-file.mjs +0 -99
- package/bizar-dash/src/server/v2-event-bus.mjs +0 -128
- package/bizar-dash/src/server/voice-store.mjs +0 -229
- package/bizar-dash/src/server/voice-transcribe.mjs +0 -72
- package/bizar-dash/src/server/watcher.mjs +0 -81
- package/bizar-dash/src/server/workers/transcription-worker.mjs +0 -213
- package/bizar-dash/src/server/workspaces.mjs +0 -626
- package/bizar-dash/src/server/yaml.mjs +0 -238
- package/bizar-dash/src/web/index.html +0 -17
- package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/bizar-dash/src/web/v8/App.tsx +0 -426
- package/bizar-dash/src/web/v8/__tests__/App.test.tsx +0 -102
- package/bizar-dash/src/web/v8/__tests__/AppShell.test.tsx +0 -79
- package/bizar-dash/src/web/v8/__tests__/BackgroundJobsView.test.tsx +0 -172
- package/bizar-dash/src/web/v8/__tests__/MemoryView.test.tsx +0 -91
- package/bizar-dash/src/web/v8/__tests__/NotificationsPopover.test.tsx +0 -91
- package/bizar-dash/src/web/v8/__tests__/PageSkeleton.test.tsx +0 -12
- package/bizar-dash/src/web/v8/__tests__/SchedulesView.test.tsx +0 -157
- package/bizar-dash/src/web/v8/__tests__/SettingsView.test.tsx +0 -84
- package/bizar-dash/src/web/v8/__tests__/Sidebar.test.tsx +0 -95
- package/bizar-dash/src/web/v8/__tests__/Topbar.test.tsx +0 -86
- package/bizar-dash/src/web/v8/__tests__/activity.test.tsx +0 -63
- package/bizar-dash/src/web/v8/__tests__/admin-view.test.tsx +0 -105
- package/bizar-dash/src/web/v8/__tests__/agent-card-metrics.test.tsx +0 -54
- package/bizar-dash/src/web/v8/__tests__/agent-detail-tasks.test.tsx +0 -68
- package/bizar-dash/src/web/v8/__tests__/agent-hierarchy.test.tsx +0 -79
- package/bizar-dash/src/web/v8/__tests__/agents-stuck-banner.test.tsx +0 -142
- package/bizar-dash/src/web/v8/__tests__/agents.test.tsx +0 -90
- package/bizar-dash/src/web/v8/__tests__/artifacts-view.test.tsx +0 -102
- package/bizar-dash/src/web/v8/__tests__/audit-fixes.test.tsx +0 -139
- package/bizar-dash/src/web/v8/__tests__/auth-view.test.tsx +0 -94
- package/bizar-dash/src/web/v8/__tests__/changelog.test.tsx +0 -79
- package/bizar-dash/src/web/v8/__tests__/chat-types.test.ts +0 -55
- package/bizar-dash/src/web/v8/__tests__/chat-view.test.tsx +0 -142
- package/bizar-dash/src/web/v8/__tests__/claude-sessions-view.test.tsx +0 -159
- package/bizar-dash/src/web/v8/__tests__/clipboard-view.test.tsx +0 -90
- package/bizar-dash/src/web/v8/__tests__/config-view.test.tsx +0 -111
- package/bizar-dash/src/web/v8/__tests__/control-plane.test.tsx +0 -104
- package/bizar-dash/src/web/v8/__tests__/controls.test.tsx +0 -135
- package/bizar-dash/src/web/v8/__tests__/cx.test.ts +0 -25
- package/bizar-dash/src/web/v8/__tests__/data.test.tsx +0 -293
- package/bizar-dash/src/web/v8/__tests__/dialogs-view.test.tsx +0 -81
- package/bizar-dash/src/web/v8/__tests__/env-vars-view.test.tsx +0 -123
- package/bizar-dash/src/web/v8/__tests__/feedback.test.tsx +0 -213
- package/bizar-dash/src/web/v8/__tests__/goals-cc-roundtrip.test.tsx +0 -94
- package/bizar-dash/src/web/v8/__tests__/goals.test.tsx +0 -105
- package/bizar-dash/src/web/v8/__tests__/history-view.test.tsx +0 -96
- package/bizar-dash/src/web/v8/__tests__/kanban.test.tsx +0 -176
- package/bizar-dash/src/web/v8/__tests__/libraries.test.tsx +0 -70
- package/bizar-dash/src/web/v8/__tests__/lightrag-view.test.tsx +0 -90
- package/bizar-dash/src/web/v8/__tests__/memory.test.tsx +0 -60
- package/bizar-dash/src/web/v8/__tests__/misc-view.test.tsx +0 -79
- package/bizar-dash/src/web/v8/__tests__/mods-view.test.tsx +0 -123
- package/bizar-dash/src/web/v8/__tests__/navigation.test.tsx +0 -137
- package/bizar-dash/src/web/v8/__tests__/new-views.test.tsx +0 -160
- package/bizar-dash/src/web/v8/__tests__/obsidian-view.test.tsx +0 -82
- package/bizar-dash/src/web/v8/__tests__/overview-trends.test.tsx +0 -87
- package/bizar-dash/src/web/v8/__tests__/projects-view.test.tsx +0 -134
- package/bizar-dash/src/web/v8/__tests__/providers-view.test.tsx +0 -100
- package/bizar-dash/src/web/v8/__tests__/settings.test.tsx +0 -104
- package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +0 -104
- package/bizar-dash/src/web/v8/__tests__/update-view.test.tsx +0 -89
- package/bizar-dash/src/web/v8/__tests__/useFetch.test.ts +0 -92
- package/bizar-dash/src/web/v8/__tests__/useWebSocket.test.ts +0 -87
- package/bizar-dash/src/web/v8/__tests__/views.test.tsx +0 -188
- package/bizar-dash/src/web/v8/__tests__/voice-view.test.tsx +0 -80
- package/bizar-dash/src/web/v8/data/fetcher.ts +0 -59
- package/bizar-dash/src/web/v8/data/types.ts +0 -239
- package/bizar-dash/src/web/v8/data/useFetch.ts +0 -62
- package/bizar-dash/src/web/v8/data/useViewNavigate.ts +0 -54
- package/bizar-dash/src/web/v8/data/useWebSocket.ts +0 -206
- package/bizar-dash/src/web/v8/main.tsx +0 -28
- package/bizar-dash/src/web/v8/shell/AppShell.tsx +0 -126
- package/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +0 -29
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +0 -515
- package/bizar-dash/src/web/v8/shell/StatusBar.tsx +0 -63
- package/bizar-dash/src/web/v8/shell/Topbar.tsx +0 -330
- package/bizar-dash/src/web/v8/shell/index.ts +0 -15
- package/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +0 -137
- package/bizar-dash/src/web/v8/ui/activity/ActivityLane.tsx +0 -315
- package/bizar-dash/src/web/v8/ui/activity/ActivityLanes.tsx +0 -51
- package/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +0 -101
- package/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +0 -239
- package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +0 -439
- package/bizar-dash/src/web/v8/ui/agents/AgentLiveOutput.tsx +0 -252
- package/bizar-dash/src/web/v8/ui/agents/AgentStreamPanel.tsx +0 -371
- package/bizar-dash/src/web/v8/ui/chat/ChatDrawer.tsx +0 -208
- package/bizar-dash/src/web/v8/ui/chat/EventStream.tsx +0 -83
- package/bizar-dash/src/web/v8/ui/chat/MessageBubble.tsx +0 -174
- package/bizar-dash/src/web/v8/ui/controls/Button.tsx +0 -141
- package/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +0 -32
- package/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +0 -49
- package/bizar-dash/src/web/v8/ui/controls/Field.tsx +0 -78
- package/bizar-dash/src/web/v8/ui/controls/Form.tsx +0 -23
- package/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +0 -112
- package/bizar-dash/src/web/v8/ui/controls/Input.tsx +0 -94
- package/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +0 -74
- package/bizar-dash/src/web/v8/ui/controls/Select.tsx +0 -171
- package/bizar-dash/src/web/v8/ui/controls/Slider.tsx +0 -68
- package/bizar-dash/src/web/v8/ui/controls/Switch.tsx +0 -56
- package/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +0 -64
- package/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +0 -36
- package/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +0 -85
- package/bizar-dash/src/web/v8/ui/data/Accordion.tsx +0 -134
- package/bizar-dash/src/web/v8/ui/data/Avatar.tsx +0 -175
- package/bizar-dash/src/web/v8/ui/data/Badge.tsx +0 -93
- package/bizar-dash/src/web/v8/ui/data/BarList.tsx +0 -101
- package/bizar-dash/src/web/v8/ui/data/Card.tsx +0 -140
- package/bizar-dash/src/web/v8/ui/data/Chip.tsx +0 -96
- package/bizar-dash/src/web/v8/ui/data/Kbd.tsx +0 -42
- package/bizar-dash/src/web/v8/ui/data/ListHeader.tsx +0 -94
- package/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +0 -93
- package/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +0 -98
- package/bizar-dash/src/web/v8/ui/data/StatTile.tsx +0 -150
- package/bizar-dash/src/web/v8/ui/data/Table.tsx +0 -170
- package/bizar-dash/src/web/v8/ui/data/Timeline.tsx +0 -130
- package/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +0 -122
- package/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +0 -95
- package/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +0 -39
- package/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +0 -143
- package/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +0 -149
- package/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +0 -8
- package/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +0 -231
- package/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +0 -48
- package/bizar-dash/src/web/v8/ui/feedback/ErrorState.tsx +0 -116
- package/bizar-dash/src/web/v8/ui/feedback/NotificationsPopover.tsx +0 -242
- package/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +0 -56
- package/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +0 -103
- package/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +0 -67
- package/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +0 -30
- package/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +0 -66
- package/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +0 -89
- package/bizar-dash/src/web/v8/ui/feedback/useFocusTrap.ts +0 -58
- package/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +0 -176
- package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +0 -278
- package/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +0 -115
- package/bizar-dash/src/web/v8/ui/index.ts +0 -369
- package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +0 -117
- package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +0 -391
- package/bizar-dash/src/web/v8/ui/kanban/KanbanCardBadges.tsx +0 -111
- package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +0 -181
- package/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +0 -126
- package/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +0 -638
- package/bizar-dash/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +0 -43
- package/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +0 -130
- package/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +0 -141
- package/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +0 -291
- package/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +0 -90
- package/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +0 -30
- package/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +0 -161
- package/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +0 -144
- package/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +0 -225
- package/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +0 -81
- package/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +0 -164
- package/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +0 -128
- package/bizar-dash/src/web/v8/ui/navigation/useCommandPaletteHotkey.test.ts +0 -79
- package/bizar-dash/src/web/v8/ui/primitives/Box.tsx +0 -144
- package/bizar-dash/src/web/v8/ui/primitives/Center.tsx +0 -40
- package/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +0 -67
- package/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +0 -104
- package/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +0 -77
- package/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +0 -33
- package/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +0 -62
- package/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +0 -42
- package/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +0 -73
- package/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +0 -49
- package/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +0 -91
- package/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +0 -88
- package/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +0 -109
- package/bizar-dash/src/web/v8/ui/styles/globals.css +0 -265
- package/bizar-dash/src/web/v8/ui/styles/reset.css +0 -57
- package/bizar-dash/src/web/v8/ui/styles/tokens.css +0 -238
- package/bizar-dash/src/web/v8/ui/tasks/TaskDetail.tsx +0 -313
- package/bizar-dash/src/web/v8/ui/theme/DensityProvider.test.tsx +0 -74
- package/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +0 -66
- package/bizar-dash/src/web/v8/ui/theme/ThemeProvider.test.tsx +0 -86
- package/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +0 -94
- package/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +0 -93
- package/bizar-dash/src/web/v8/ui/theme/useDensity.ts +0 -15
- package/bizar-dash/src/web/v8/ui/theme/useTheme.ts +0 -16
- package/bizar-dash/src/web/v8/ui/utils/cx.ts +0 -19
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +0 -457
- package/bizar-dash/src/web/v8/views/Admin/AdminView.tsx +0 -237
- package/bizar-dash/src/web/v8/views/Agents/AgentHierarchy.tsx +0 -212
- package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +0 -511
- package/bizar-dash/src/web/v8/views/Artifacts/ArtifactsView.tsx +0 -452
- package/bizar-dash/src/web/v8/views/Artifacts/ClaudeArtifactView.tsx +0 -179
- package/bizar-dash/src/web/v8/views/Auth/AuthView.tsx +0 -179
- package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +0 -467
- package/bizar-dash/src/web/v8/views/Backup/BackupView.tsx +0 -204
- package/bizar-dash/src/web/v8/views/Chat/ChatView.tsx +0 -368
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionDetail.tsx +0 -144
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionsView.tsx +0 -331
- package/bizar-dash/src/web/v8/views/ClaudeSessions/NewSessionModal.tsx +0 -136
- package/bizar-dash/src/web/v8/views/Clipboard/ClipboardView.tsx +0 -210
- package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.test.tsx +0 -142
- package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +0 -272
- package/bizar-dash/src/web/v8/views/Config/ConfigView.tsx +0 -364
- package/bizar-dash/src/web/v8/views/Diagnostics/DiagnosticsView.tsx +0 -203
- package/bizar-dash/src/web/v8/views/Dialogs/DialogsView.tsx +0 -196
- package/bizar-dash/src/web/v8/views/Doctor/DoctorView.tsx +0 -181
- package/bizar-dash/src/web/v8/views/EnvVars/EnvVarsView.tsx +0 -365
- package/bizar-dash/src/web/v8/views/Eval/EvalView.tsx +0 -278
- package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +0 -351
- package/bizar-dash/src/web/v8/views/History/HistoryView.tsx +0 -227
- package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +0 -123
- package/bizar-dash/src/web/v8/views/LightRAG/LightRAGView.tsx +0 -204
- package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +0 -258
- package/bizar-dash/src/web/v8/views/Misc/MiscView.tsx +0 -159
- package/bizar-dash/src/web/v8/views/Mods/ModsView.tsx +0 -348
- package/bizar-dash/src/web/v8/views/Notifications/NotificationsView.tsx +0 -247
- package/bizar-dash/src/web/v8/views/Obsidian/ObsidianView.tsx +0 -193
- package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +0 -274
- package/bizar-dash/src/web/v8/views/Projects/ProjectsView.tsx +0 -273
- package/bizar-dash/src/web/v8/views/Providers/ProvidersView.tsx +0 -371
- package/bizar-dash/src/web/v8/views/Router.tsx +0 -202
- package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +0 -462
- package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +0 -1039
- package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +0 -386
- package/bizar-dash/src/web/v8/views/Update/UpdateView.tsx +0 -270
- package/bizar-dash/src/web/v8/views/Usage/UsageView.tsx +0 -210
- package/bizar-dash/src/web/v8/views/Voice/VoiceView.tsx +0 -192
- package/bizar-dash/src/web/v8/vite-env.d.ts +0 -15
- package/bizar-dash/templates/mod/FORMAT.md +0 -76
- package/bizar-dash/templates/mod/hello-mod/README.md +0 -19
- package/bizar-dash/templates/mod/hello-mod/agents/greeter.md +0 -8
- package/bizar-dash/templates/mod/hello-mod/commands/hello.md +0 -6
- package/bizar-dash/templates/mod/hello-mod/mod.json +0 -20
- package/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +0 -9
- package/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +0 -10
- package/bizar-dash/tests/_update-test-helpers.mjs +0 -13
- package/bizar-dash/tests/admin-labels.test.mjs +0 -42
- package/bizar-dash/tests/admin-run-grouping.test.mjs +0 -42
- package/bizar-dash/tests/agent-bus.test.mjs +0 -289
- package/bizar-dash/tests/agents-preview-truncate.test.mjs +0 -35
- package/bizar-dash/tests/agents-summary-sanitize.test.ts +0 -51
- package/bizar-dash/tests/auth-inputs-labels.test.mjs +0 -45
- package/bizar-dash/tests/background-jobs-action-labels.test.mjs +0 -41
- package/bizar-dash/tests/background-jobs-states.test.mjs +0 -80
- package/bizar-dash/tests/background-pause-resume.test.mjs +0 -46
- package/bizar-dash/tests/background-sdk-session.test.mjs +0 -94
- package/bizar-dash/tests/background-session-events.test.mjs +0 -74
- package/bizar-dash/tests/background-spawn-from-ui.test.mjs +0 -36
- package/bizar-dash/tests/background-steer-sdk.test.mjs +0 -71
- package/bizar-dash/tests/background-steer.test.mjs +0 -60
- package/bizar-dash/tests/backup-restore.test.mjs +0 -217
- package/bizar-dash/tests/backup-store.test.mjs +0 -300
- package/bizar-dash/tests/banner-tones.test.mjs +0 -50
- package/bizar-dash/tests/bundle-analysis.test.mjs +0 -74
- package/bizar-dash/tests/callout-tokens.test.mjs +0 -30
- package/bizar-dash/tests/chat-new-session.test.mjs +0 -63
- package/bizar-dash/tests/claude-session-detail-states.test.mjs +0 -67
- package/bizar-dash/tests/cli-bugfixes.test.mjs +0 -151
- package/bizar-dash/tests/cli-error-visibility.test.mjs +0 -153
- package/bizar-dash/tests/cli-refactor.test.mjs +0 -183
- package/bizar-dash/tests/cli-tailscale.test.mjs +0 -113
- package/bizar-dash/tests/clipboard.test.mjs +0 -147
- package/bizar-dash/tests/components/BackgroundJobsSkeleton.test.tsx +0 -38
- package/bizar-dash/tests/components/Button.test.tsx +0 -78
- package/bizar-dash/tests/components/Card.test.tsx +0 -59
- package/bizar-dash/tests/components/Dialog.test.tsx +0 -80
- package/bizar-dash/tests/components/Toast.test.tsx +0 -61
- package/bizar-dash/tests/dash-cli-load.test.mjs +0 -44
- package/bizar-dash/tests/dashboard-ports.test.mjs +0 -138
- package/bizar-dash/tests/density-tokens.test.mjs +0 -46
- package/bizar-dash/tests/deploy-templates.test.mjs +0 -100
- package/bizar-dash/tests/diagnostics-store.test.mjs +0 -205
- package/bizar-dash/tests/digest-generation.test.mjs +0 -191
- package/bizar-dash/tests/digest-store.test.mjs +0 -264
- package/bizar-dash/tests/docker-build.test.mjs +0 -96
- package/bizar-dash/tests/doctor-route-shape.test.mjs +0 -67
- package/bizar-dash/tests/empty-state-docs.test.mjs +0 -55
- package/bizar-dash/tests/env-vars-extended.test.mjs +0 -190
- package/bizar-dash/tests/env-vars-store.test.mjs +0 -216
- package/bizar-dash/tests/errorstate-retry.test.mjs +0 -42
- package/bizar-dash/tests/eval/fixtures-extra.test.mjs +0 -285
- package/bizar-dash/tests/eval/fixtures.test.mjs +0 -141
- package/bizar-dash/tests/eval/report.test.mjs +0 -284
- package/bizar-dash/tests/eval/runner.test.mjs +0 -471
- package/bizar-dash/tests/eval-csv.test.mjs +0 -67
- package/bizar-dash/tests/eval-scheduled.test.mjs +0 -84
- package/bizar-dash/tests/focus-visible.test.mjs +0 -30
- package/bizar-dash/tests/frontend-bugfixes.test.mjs +0 -151
- package/bizar-dash/tests/goals-decompose.test.mjs +0 -179
- package/bizar-dash/tests/kanban-empty-column.test.mjs +0 -56
- package/bizar-dash/tests/layout-spacing.test.mjs +0 -101
- package/bizar-dash/tests/library-dedupe.test.mjs +0 -62
- package/bizar-dash/tests/lightrag-defaults.node.test.mjs +0 -118
- package/bizar-dash/tests/lightrag-skeleton.test.mjs +0 -31
- package/bizar-dash/tests/lightrag-startup-hook.test.mjs +0 -238
- package/bizar-dash/tests/lightrag-states.test.mjs +0 -60
- package/bizar-dash/tests/logger.test.mjs +0 -207
- package/bizar-dash/tests/loop-runtime.test.mjs +0 -312
- package/bizar-dash/tests/loops-agent-bus-routes.test.mjs +0 -293
- package/bizar-dash/tests/memory-auto-reindex.test.mjs +0 -196
- package/bizar-dash/tests/memory-cli-readlistdelete.test.mjs +0 -405
- package/bizar-dash/tests/memory-cli-setup.test.mjs +0 -382
- package/bizar-dash/tests/memory-cli.test.mjs +0 -596
- package/bizar-dash/tests/memory-config.test.mjs +0 -422
- package/bizar-dash/tests/memory-conflicts.test.mjs +0 -229
- package/bizar-dash/tests/memory-default-vault.test.mjs +0 -185
- package/bizar-dash/tests/memory-git.test.mjs +0 -264
- package/bizar-dash/tests/memory-graph.test.mjs +0 -95
- package/bizar-dash/tests/memory-install-bootstrap.test.mjs +0 -129
- package/bizar-dash/tests/memory-lightrag-extended.test.mjs +0 -293
- package/bizar-dash/tests/memory-lightrag.test.mjs +0 -153
- package/bizar-dash/tests/memory-link.test.mjs +0 -134
- package/bizar-dash/tests/memory-namespace.test.mjs +0 -404
- package/bizar-dash/tests/memory-obsidian.test.mjs +0 -269
- package/bizar-dash/tests/memory-path-safety.test.mjs +0 -427
- package/bizar-dash/tests/memory-protocol-drift.test.mjs +0 -52
- package/bizar-dash/tests/memory-roundtrip.test.mjs +0 -219
- package/bizar-dash/tests/memory-schema.test.mjs +0 -198
- package/bizar-dash/tests/memory-secrets.test.mjs +0 -121
- package/bizar-dash/tests/memory-status-root.test.mjs +0 -144
- package/bizar-dash/tests/memory-store.test.mjs +0 -493
- package/bizar-dash/tests/memory-sync.test.mjs +0 -141
- package/bizar-dash/tests/memory-tab.test.mjs +0 -322
- package/bizar-dash/tests/memory-vault-config-endpoint.test.mjs +0 -173
- package/bizar-dash/tests/metrics.test.mjs +0 -183
- package/bizar-dash/tests/minimax-bar.test.tsx +0 -113
- package/bizar-dash/tests/minimax-chat-usage.test.mjs +0 -253
- package/bizar-dash/tests/minimax-models.test.mjs +0 -123
- package/bizar-dash/tests/minimax-usage-store.node.test.mjs +0 -293
- package/bizar-dash/tests/mod-instructions.node.test.mjs +0 -188
- package/bizar-dash/tests/mod-security.test.mjs +0 -273
- package/bizar-dash/tests/mod-upgrade.node.test.mjs +0 -357
- package/bizar-dash/tests/modal-focus-trap.test.mjs +0 -114
- package/bizar-dash/tests/no-browser-harness.node.test.mjs +0 -98
- package/bizar-dash/tests/notifications-dismiss-restore.test.mjs +0 -85
- package/bizar-dash/tests/obsidian-back-compat.test.mjs +0 -199
- package/bizar-dash/tests/ocr.test.mjs +0 -87
- package/bizar-dash/tests/orphan-tests-audit.test.mjs +0 -80
- package/bizar-dash/tests/otel-spans.test.mjs +0 -253
- package/bizar-dash/tests/otel.test.mjs +0 -188
- package/bizar-dash/tests/palette-keyboard-nav.test.mjs +0 -123
- package/bizar-dash/tests/palette-shortcut-hint.test.mjs +0 -58
- package/bizar-dash/tests/path-safe.test.mjs +0 -108
- package/bizar-dash/tests/projects-filter.test.mjs +0 -48
- package/bizar-dash/tests/providers-store-backup-keys.node.test.mjs +0 -809
- package/bizar-dash/tests/providers-store-search.node.test.mjs +0 -166
- package/bizar-dash/tests/rate-limit.test.mjs +0 -298
- package/bizar-dash/tests/routes-doctor.test.mjs +0 -159
- package/bizar-dash/tests/schedules-skeleton.test.mjs +0 -25
- package/bizar-dash/tests/schedules-states.test.mjs +0 -67
- package/bizar-dash/tests/schedules-templates.test.mjs +0 -144
- package/bizar-dash/tests/server-bugfixes.test.mjs +0 -318
- package/bizar-dash/tests/settings-labels.test.mjs +0 -80
- package/bizar-dash/tests/setup.ts +0 -84
- package/bizar-dash/tests/sidebar-collapse-animation.test.mjs +0 -37
- package/bizar-dash/tests/sidebar-distinct-icons.test.mjs +0 -28
- package/bizar-dash/tests/sidebar-responsive.test.tsx +0 -48
- package/bizar-dash/tests/sidebar-section-styles.test.mjs +0 -55
- package/bizar-dash/tests/sidebar-section-toggle.test.tsx +0 -63
- package/bizar-dash/tests/skeleton-height.test.mjs +0 -47
- package/bizar-dash/tests/skills-list.test.mjs +0 -232
- package/bizar-dash/tests/skills-search.test.mjs +0 -222
- package/bizar-dash/tests/smoke-v2.mjs +0 -212
- package/bizar-dash/tests/space-tokens.test.mjs +0 -36
- package/bizar-dash/tests/stattile-loading.test.mjs +0 -28
- package/bizar-dash/tests/strip-thinking.test.mjs +0 -175
- package/bizar-dash/tests/submit-feedback.test.mjs +0 -353
- package/bizar-dash/tests/task-splitter.test.mjs +0 -268
- package/bizar-dash/tests/tasks-create.test.mjs +0 -187
- package/bizar-dash/tests/tasks-patch-routes.test.mjs +0 -194
- package/bizar-dash/tests/theme-toggle-icon.test.mjs +0 -28
- package/bizar-dash/tests/tmux-wrap.test.mjs +0 -145
- package/bizar-dash/tests/topbar-design-system.test.mjs +0 -56
- package/bizar-dash/tests/topbar-popover-styles.test.mjs +0 -53
- package/bizar-dash/tests/ui/primitives/VisuallyHidden.test.tsx +0 -42
- package/bizar-dash/tests/update-channels.test.mjs +0 -67
- package/bizar-dash/tests/update-check.test.mjs +0 -132
- package/bizar-dash/tests/update-packages.test.mjs +0 -154
- package/bizar-dash/tests/update-run.test.mjs +0 -203
- package/bizar-dash/tests/users.test.mjs +0 -108
- package/bizar-dash/tests/v7-archive/BackgroundAgents.test.tsx +0 -160
- package/bizar-dash/tests/v7-archive/a11y/forms.test.tsx +0 -191
- package/bizar-dash/tests/v7-archive/a11y.test.tsx +0 -206
- package/bizar-dash/tests/v7-archive/autosave.test.tsx +0 -276
- package/bizar-dash/tests/v7-archive/backup-restore.test.tsx +0 -141
- package/bizar-dash/tests/v7-archive/chat-composer.test.tsx +0 -140
- package/bizar-dash/tests/v7-archive/communication-log.test.tsx +0 -67
- package/bizar-dash/tests/v7-archive/components/Modal.test.tsx +0 -104
- package/bizar-dash/tests/v7-archive/components/Spinner.test.tsx +0 -32
- package/bizar-dash/tests/v7-archive/components/StatusBadge.test.tsx +0 -35
- package/bizar-dash/tests/v7-archive/components/doctor-panel.test.tsx +0 -105
- package/bizar-dash/tests/v7-archive/components/screenshot-ocr.test.tsx +0 -75
- package/bizar-dash/tests/v7-archive/components/settings-search.test.tsx +0 -180
- package/bizar-dash/tests/v7-archive/components/workspace-selector.test.tsx +0 -73
- package/bizar-dash/tests/v7-archive/controls/Button.test.tsx +0 -50
- package/bizar-dash/tests/v7-archive/controls/Checkbox.test.tsx +0 -44
- package/bizar-dash/tests/v7-archive/controls/IconButton.test.tsx +0 -37
- package/bizar-dash/tests/v7-archive/controls/Kbd.test.tsx +0 -39
- package/bizar-dash/tests/v7-archive/controls/NumberInput.test.tsx +0 -56
- package/bizar-dash/tests/v7-archive/controls/RadioGroup.test.tsx +0 -58
- package/bizar-dash/tests/v7-archive/controls/SearchInput.test.tsx +0 -52
- package/bizar-dash/tests/v7-archive/controls/Select.test.tsx +0 -66
- package/bizar-dash/tests/v7-archive/controls/Slider.test.tsx +0 -41
- package/bizar-dash/tests/v7-archive/controls/TextInput.test.tsx +0 -44
- package/bizar-dash/tests/v7-archive/controls/Textarea.test.tsx +0 -56
- package/bizar-dash/tests/v7-archive/controls/Toggle.test.tsx +0 -39
- package/bizar-dash/tests/v7-archive/data/BarChart.test.tsx +0 -55
- package/bizar-dash/tests/v7-archive/data/DataTable.test.tsx +0 -112
- package/bizar-dash/tests/v7-archive/data/EmptyState.test.tsx +0 -57
- package/bizar-dash/tests/v7-archive/data/ErrorState.test.tsx +0 -47
- package/bizar-dash/tests/v7-archive/data/KeyValueList.test.tsx +0 -59
- package/bizar-dash/tests/v7-archive/data/LoadingState.test.tsx +0 -37
- package/bizar-dash/tests/v7-archive/data/Sparkline.test.tsx +0 -56
- package/bizar-dash/tests/v7-archive/data/StatTile.test.tsx +0 -69
- package/bizar-dash/tests/v7-archive/dep-graph.test.tsx +0 -40
- package/bizar-dash/tests/v7-archive/eval-web-ui.test.tsx +0 -220
- package/bizar-dash/tests/v7-archive/event-log.test.tsx +0 -61
- package/bizar-dash/tests/v7-archive/feedback/Badge.test.tsx +0 -41
- package/bizar-dash/tests/v7-archive/feedback/Dialog.test.tsx +0 -99
- package/bizar-dash/tests/v7-archive/feedback/ProgressBar.test.tsx +0 -66
- package/bizar-dash/tests/v7-archive/feedback/StatusDot.test.tsx +0 -41
- package/bizar-dash/tests/v7-archive/feedback/Toast.test.tsx +0 -124
- package/bizar-dash/tests/v7-archive/feedback/Tooltip.test.tsx +0 -102
- package/bizar-dash/tests/v7-archive/goal-input.test.tsx +0 -72
- package/bizar-dash/tests/v7-archive/goap-planner.test.ts +0 -68
- package/bizar-dash/tests/v7-archive/hooks/useModal.test.tsx +0 -84
- package/bizar-dash/tests/v7-archive/hooks/useToast.test.tsx +0 -50
- package/bizar-dash/tests/v7-archive/layout/AppShell.test.tsx +0 -50
- package/bizar-dash/tests/v7-archive/layout/Breadcrumbs.test.tsx +0 -85
- package/bizar-dash/tests/v7-archive/layout/Panel.test.tsx +0 -52
- package/bizar-dash/tests/v7-archive/layout/PanelHeader.test.tsx +0 -32
- package/bizar-dash/tests/v7-archive/layout/Sidebar.test.tsx +0 -95
- package/bizar-dash/tests/v7-archive/layout/Tabs.test.tsx +0 -87
- package/bizar-dash/tests/v7-archive/layout/Topbar.test.tsx +0 -41
- package/bizar-dash/tests/v7-archive/layout/ViewHeader.test.tsx +0 -47
- package/bizar-dash/tests/v7-archive/lib/i18n.test.ts +0 -46
- package/bizar-dash/tests/v7-archive/lib/search-fuzzy.test.ts +0 -149
- package/bizar-dash/tests/v7-archive/lib/utils.test.ts +0 -194
- package/bizar-dash/tests/v7-archive/memory-graph-view.test.tsx +0 -69
- package/bizar-dash/tests/v7-archive/mobile-chat.test.tsx +0 -82
- package/bizar-dash/tests/v7-archive/mobile-layout.test.tsx +0 -332
- package/bizar-dash/tests/v7-archive/mobile-tasks.test.tsx +0 -162
- package/bizar-dash/tests/v7-archive/navigation/NavGroup.test.tsx +0 -55
- package/bizar-dash/tests/v7-archive/navigation/NavLink.test.tsx +0 -61
- package/bizar-dash/tests/v7-archive/quality-gates.test.tsx +0 -59
- package/bizar-dash/tests/v7-archive/settings-layout.test.tsx +0 -129
- package/bizar-dash/tests/v7-archive/settings-mode-wiring.test.tsx +0 -151
- package/bizar-dash/tests/v7-archive/ui/primitives/Box.test.tsx +0 -49
- package/bizar-dash/tests/v7-archive/ui/primitives/Grid.test.tsx +0 -37
- package/bizar-dash/tests/v7-archive/ui/primitives/Inline.test.tsx +0 -33
- package/bizar-dash/tests/v7-archive/ui/primitives/Separator.test.tsx +0 -34
- package/bizar-dash/tests/v7-archive/ui/primitives/Stack.test.tsx +0 -45
- package/bizar-dash/tests/v7-archive/views/Agents.test.tsx +0 -359
- package/bizar-dash/tests/v7-archive/views/Memory.test.tsx +0 -274
- package/bizar-dash/tests/v7-archive/views/Tasks.test.tsx +0 -250
- package/bizar-dash/tests/v7-archive/views/sidebar.test.tsx +0 -116
- package/bizar-dash/tests/v7-archive/views/topbar.test.tsx +0 -87
- package/bizar-dash/tests/v7-archive/voice-recorder.test.tsx +0 -95
- package/bizar-dash/tests/voice-store.test.mjs +0 -148
- package/bizar-dash/tests/voice-transcribe-worker.test.mjs +0 -343
- package/bizar-dash/tests/voice-transcribe.test.mjs +0 -87
- package/bizar-dash/tests/workspaces.test.mjs +0 -527
- package/bizar-dash/tests/yaml.test.mjs +0 -128
- package/bizar-dash/tsconfig.json +0 -23
- package/bizar-dash/vite.config.ts +0 -82
- package/bizar-dash/vitest.config.ts +0 -20
- package/cli/__tests__/cost-gate.test.mjs +0 -301
- package/cli/__tests__/esm-no-require.test.mjs +0 -97
- package/cli/__tests__/feature-list-bridge.test.mjs +0 -371
- package/cli/agent-browser-up.sh +0 -152
- package/cli/agent-browser-update.test.mjs +0 -86
- package/cli/artifact-cli.mjs +0 -605
- package/cli/artifact-render.mjs +0 -621
- package/cli/artifact-server.mjs +0 -847
- package/cli/artifact-templates.mjs +0 -523
- package/cli/artifact.mjs +0 -63
- package/cli/artifact.test.mjs +0 -2331
- package/cli/bg.mjs +0 -471
- package/cli/cli-commands-validation.test.mjs +0 -106
- package/cli/commands/artifact.mjs +0 -20
- package/cli/commands/clip.mjs +0 -163
- package/cli/commands/dash.mjs +0 -193
- package/cli/commands/deploy/cloudflare.mjs +0 -250
- package/cli/commands/deploy/docker.mjs +0 -219
- package/cli/commands/deploy/fly.mjs +0 -161
- package/cli/commands/deploy/vercel.mjs +0 -225
- package/cli/commands/deploy.mjs +0 -240
- package/cli/commands/eval.mjs +0 -396
- package/cli/commands/lightrag.mjs +0 -170
- package/cli/commands/marketplace.mjs +0 -64
- package/cli/commands/memory.mjs +0 -25
- package/cli/commands/minimax.mjs +0 -288
- package/cli/commands/mod.mjs +0 -185
- package/cli/commands/ocr.mjs +0 -182
- package/cli/commands/plugin.mjs +0 -358
- package/cli/commands/rca.test.mjs +0 -99
- package/cli/commands/service.mjs +0 -79
- package/cli/commands/setup-provider.test.mjs +0 -311
- package/cli/commands/tailscale.mjs +0 -256
- package/cli/commands/usage.mjs +0 -113
- package/cli/commands/voice.mjs +0 -211
- package/cli/commands/workspace.mjs +0 -247
- package/cli/copy.mjs +0 -540
- package/cli/dev-link.mjs +0 -191
- package/cli/dev-link.test.mjs +0 -310
- package/cli/digest.mjs +0 -149
- package/cli/install/banner.test.mjs +0 -39
- package/cli/install/index.test.mjs +0 -61
- package/cli/install/paths.test.mjs +0 -77
- package/cli/install/plugin.mjs +0 -161
- package/cli/install/postinstall.mjs +0 -137
- package/cli/install/postinstall.test.mjs +0 -98
- package/cli/install.test.mjs +0 -272
- package/cli/memory-constants.mjs +0 -76
- package/cli/memory.mjs +0 -1850
- package/cli/migrate.test.mjs +0 -85
- package/cli/plow-through.test.mjs +0 -56
- package/cli/plugin-runtime-deps.mjs +0 -250
- package/cli/plugin-runtime-deps.test.mjs +0 -378
- package/cli/post-install-smoke.mjs +0 -256
- package/cli/post-install-smoke.test.mjs +0 -72
- package/cli/prompts.mjs +0 -168
- package/cli/providers-detect.mjs +0 -233
- package/cli/provision.test.mjs +0 -324
- package/cli/service-controller.mjs +0 -735
- package/cli/service-controller.test.mjs +0 -191
- package/cli/service-env.mjs +0 -130
- package/cli/service.mjs +0 -492
- package/cli/tests/minimax-cli.test.mjs +0 -79
- package/cli/worker-dispatcher.test.mjs +0 -204
- package/config/skills/glyph/SKILL.md +0 -163
- package/config/skills/lightrag/SKILL.md +0 -81
- package/config/skills/memory-protocol/SKILL.md +0 -105
- package/config/skills/obsidian/SKILL.md +0 -306
- package/packages/sdk/${HOME}/.bizar_home/memory/projects/sdk/sessions/2026-07-16-e16c2f59.md +0 -14
- package/packages/sdk/.bizar/learning/instincts.jsonl +0 -5
- package/packages/sdk/LICENSE +0 -21
- package/packages/sdk/dist/memory/index.d.ts +0 -43
- package/packages/sdk/dist/memory/index.js +0 -159
- package/packages/sdk/dist/router/memory-distillation.d.ts +0 -58
- package/packages/sdk/dist/router/memory-distillation.js +0 -195
- package/packages/sdk/vitest.config.ts +0 -9
- package/plugins/bizar/LICENSE +0 -21
- package/plugins/bizar/dist/index.d.ts +0 -25
- package/plugins/bizar/dist/index.js +0 -32
- package/plugins/bizar/package.json +0 -18
- package/scripts/audit.mjs +0 -388
- package/scripts/audit.test.mjs +0 -149
- package/scripts/bh-full-e2e.mjs +0 -300
- package/scripts/check-agents.mjs +0 -76
- package/scripts/check-arch.sh +0 -80
- package/scripts/check-deps.mjs +0 -468
- package/scripts/clean-state-check.sh +0 -81
- package/scripts/eval-gate.mjs +0 -134
- package/scripts/eval-gate.test.mjs +0 -138
- package/scripts/feature-state-machine.mjs +0 -178
- package/scripts/feature-state-machine.test.mjs +0 -135
- package/scripts/git-hooks/__tests__/commit-msg.test.mjs +0 -61
- package/scripts/install-curl.sh +0 -17
- package/scripts/install-service.mjs +0 -190
- package/scripts/loop-log.txt +0 -29
- package/scripts/loop-tasks.md +0 -79
- package/scripts/mirror-claude-md.sh +0 -78
- package/scripts/overnight-loop.mjs +0 -60
- package/scripts/run-dev.mjs +0 -84
- package/scripts/session-trace.sh +0 -52
- package/scripts/spec-dedup.test.mjs +0 -124
- package/scripts/sprint.mjs +0 -213
- package/scripts/sync-skills-mirror.mjs +0 -113
- package/scripts/test-in-container.sh +0 -157
- package/scripts/verify-feature.sh +0 -102
- package/scripts/verify-thinking-skills.mjs +0 -135
- package/scripts/worktree-setup.sh +0 -79
- package/templates/clean-state-checklist.md +0 -55
- package/templates/deploy/cloudflare/README.md +0 -32
- package/templates/deploy/cloudflare/functions-index.template.js +0 -15
- package/templates/deploy/cloudflare/wrangler.toml.template +0 -9
- package/templates/deploy/docker/.env.template +0 -16
- package/templates/deploy/docker/README.md +0 -58
- package/templates/deploy/docker/docker-compose.template.yml +0 -23
- package/templates/deploy/fly/README.md +0 -35
- package/templates/deploy/fly/fly.toml.template +0 -28
- package/templates/deploy/vercel/README.md +0 -29
- package/templates/deploy/vercel/api-index.template.js +0 -18
- package/templates/deploy/vercel/vercel.json.template +0 -16
- package/templates/eval-fixtures/README.md +0 -58
- package/templates/eval-fixtures/citation.json +0 -16
- package/templates/eval-fixtures/code-review.json +0 -16
- package/templates/eval-fixtures/code-search-basic.json +0 -28
- package/templates/eval-fixtures/concise-output.json +0 -16
- package/templates/eval-fixtures/context-window.json +0 -16
- package/templates/eval-fixtures/error-recovery.json +0 -16
- package/templates/eval-fixtures/json-output.json +0 -20
- package/templates/eval-fixtures/latency-bounds.json +0 -16
- package/templates/eval-fixtures/multi-language.json +0 -16
- package/templates/eval-fixtures/regression-suite.json +0 -79
- package/templates/eval-fixtures/response-format.json +0 -30
- package/templates/eval-fixtures/safe-paths.json +0 -16
- package/templates/eval-fixtures/tool-call-correctness.json +0 -24
- package/templates/eval-fixtures/tool-call-multi-step.json +0 -18
- package/templates/eval-fixtures/unicode-handling.json +0 -16
- package/templates/evaluator-rubric.md +0 -50
- package/templates/plan/htmx.min.js +0 -1
- package/templates/plan/library/bug-investigation.mdx +0 -79
- package/templates/plan/library/decision-record.mdx +0 -71
- package/templates/plan/library/feature-design.mdx +0 -92
- package/templates/plan/meta.json.template +0 -8
- package/templates/plan/plan.mdx.template +0 -46
- package/templates/plugin-template/README.md +0 -121
- package/templates/plugin-template/index.js +0 -66
- package/templates/plugin-template/plugin.json +0 -42
- package/templates/plugin-template/tests/plugin.test.js +0 -83
- package/templates/schedules/daily-backup.json +0 -12
- package/templates/schedules/daily-cleanup.json +0 -12
- package/templates/schedules/hourly-health-check.json +0 -12
- package/templates/schedules/webhook-on-push.json +0 -13
- package/templates/schedules/weekly-digest.json +0 -13
- package/templates/sprint-contract.md +0 -47
- /package/{.claude → config}/skills/de-sloppify/SKILL.md +0 -0
package/bizar-dash/DESIGN.md
DELETED
|
@@ -1,912 +0,0 @@
|
|
|
1
|
-
# DESIGN.md — Bizar Dashboard v8 (Dashboard Rewrite)
|
|
2
|
-
|
|
3
|
-
> **Scope.** This document replaces the v7.0.0 design system (F-040)
|
|
4
|
-
> and the in-progress mobile pass (F-041) in their entirety. The old
|
|
5
|
-
> dashboard, its `src/web/ui/` primitives, its Norse-pantheon dark
|
|
6
|
-
> aesthetic, its views, and its previous `DESIGN.md` are all **deleted**
|
|
7
|
-
> under the rewrite. v8 ships a new file tree, a new component
|
|
8
|
-
> library, a new theme, a new layout, and a new feature scope.
|
|
9
|
-
>
|
|
10
|
-
> **Read order.** If you only read three sections, read
|
|
11
|
-
> [§1 Principles](#1--principles), [§3 Tokens](#3--design-tokens), and
|
|
12
|
-
> [§7 Layout](#7--layout). Everything else is the supporting cast.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Table of contents
|
|
17
|
-
|
|
18
|
-
1. [Principles](#1--principles)
|
|
19
|
-
2. [Brand & voice](#2--brand--voice)
|
|
20
|
-
3. [Design tokens](#3--design-tokens)
|
|
21
|
-
4. [Typography](#4--typography)
|
|
22
|
-
5. [Spacing & layout](#5--spacing--layout)
|
|
23
|
-
6. [Motion & elevation](#6--motion--elevation)
|
|
24
|
-
7. [Layout](#7--layout)
|
|
25
|
-
8. [Component library](#8--component-library)
|
|
26
|
-
9. [Interaction patterns](#9--interaction-patterns)
|
|
27
|
-
10. [Settings model](#10--settings-model)
|
|
28
|
-
11. [Accessibility](#11--accessibility)
|
|
29
|
-
12. [Banned tropes](#12--banned-tropes)
|
|
30
|
-
13. [Visual contract for new screens](#13--visual-contract-for-new-screens)
|
|
31
|
-
14. [Pre-merge checklist](#14--pre-merge-checklist)
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 1 · Principles
|
|
36
|
-
|
|
37
|
-
Five rules govern every visual decision. When in doubt, follow them
|
|
38
|
-
in order; if two conflict, the higher rule wins.
|
|
39
|
-
|
|
40
|
-
1. **Data first, chrome last.** Every pixel earns its place by
|
|
41
|
-
carrying information. Whitespace is spent on legibility, not
|
|
42
|
-
decoration. Density targets a desktop operator running two
|
|
43
|
-
external monitors — never a marketing screenshot.
|
|
44
|
-
2. **One accent, used with intent.** The accent is the green primary
|
|
45
|
-
token (`--accent`). It signals primary action, active state,
|
|
46
|
-
live data, and selection — nothing else. There is exactly one
|
|
47
|
-
accent across the entire product.
|
|
48
|
-
3. **State is signal, not decoration.** Active, streaming, awaiting,
|
|
49
|
-
error, success, offline — every state must be distinguishable at a glance without reading copy. Weight, fill, motion, and shape are the four channels. **Never gradients.** Never `border-left` accent stripes on containers.
|
|
50
|
-
4. **Type does hierarchy.** A single sans family for UI, a single mono family for data. Size and weight carry the hierarchy; color is secondary. Tabular figures on every number.
|
|
51
|
-
5. **Native over invented.** The browser already has menus, focus rings, scrollbars, and shortcuts. We add right-click context menus, command palettes, and keyboard shortcuts that wrap the platform — we never replace it.
|
|
52
|
-
|
|
53
|
-
**Anti-target.** v7's Norse-pantheon, dark-by-default, accent-stripe look is rejected. v8 is light-by-default, dark-mode peer, single accent (green), gradient-free, dense by intent.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 2 · Brand & voice
|
|
58
|
-
|
|
59
|
-
| | |
|
|
60
|
-
|--|--|
|
|
61
|
-
| **Wordmark** | `Bizar` set in `Inter` SemiBold, 16px, `var(--fg)` |
|
|
62
|
-
| **Product glyph** | A minimal `ᛒ` (runic Berkanan) in `var(--accent)` for logo and favicon |
|
|
63
|
-
| **Voice** | Direct, technical, never marketing. Numbers with units. Inline code for IDs. |
|
|
64
|
-
| **Tab labels** | Single noun (`Tasks`, `Goals`, `Agents`). No emoji decorations. |
|
|
65
|
-
| **Status copy** | "Streaming" not "Loading…". "13 of 47" not "Lots". "Awaiting reply" not "Ready". |
|
|
66
|
-
| **Errors** | One sentence: what happened + one action the user can take. No "Oops!". |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## 3 · Design tokens
|
|
71
|
-
|
|
72
|
-
All values live in `:root` (light) and `.dark` (dark) in `bizar-dash/src/web/ui/styles/tokens.css`. Components consume the CSS custom properties only — never raw color values. New tokens get added to this section **before** any component uses them.
|
|
73
|
-
|
|
74
|
-
The user-supplied shadcn preset theme is the source of truth for color tokens. Every other token (spacing, radius, motion, typography) is layered on top.
|
|
75
|
-
|
|
76
|
-
### 3.1 Surface scale
|
|
77
|
-
|
|
78
|
-
| Token | Light (oklch) | Dark (oklch) | Use |
|
|
79
|
-
|--|--|--|--|
|
|
80
|
-
| `--bg` | `oklch(1 0 0)` | `oklch(0.141 0.005 285.823)` | Page canvas |
|
|
81
|
-
| `--surface-1` | `oklch(1 0 0)` | `oklch(0.21 0.006 285.885)` | Cards, topbar, sidebar, dialogs |
|
|
82
|
-
| `--surface-2` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` | Nested surfaces, table rows, hover bg |
|
|
83
|
-
| `--surface-3` | `oklch(0.92 0.004 286.32)` | `oklch(0.37 0.013 285.805)` | Pressed, selected, drag-over |
|
|
84
|
-
| `--surface-popover` | `oklch(1 0 0)` | `oklch(0.21 0.006 285.885)` | Popovers, context menus, command palette |
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### 3.2 Foreground scale
|
|
88
|
-
|
|
89
|
-
| Token | Light | Dark | Use |
|
|
90
|
-
|--|--|--|--|
|
|
91
|
-
| `--fg` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` | Primary text |
|
|
92
|
-
| `--fg-muted` | `oklch(0.552 0.016 285.938)` | `oklch(0.705 0.015 286.067)` | Secondary text, captions, helper |
|
|
93
|
-
| `--fg-subtle` | `oklch(0.705 0.015 286.067)` | `oklch(0.552 0.016 285.938)` | Tertiary, placeholder, disabled |
|
|
94
|
-
| `--fg-on-accent` | `oklch(0.982 0.018 155.826)` | `oklch(0.982 0.018 155.826)` | Text on `--accent` backgrounds |
|
|
95
|
-
| `--fg-link` | `var(--accent)` | `var(--accent)` | Inline links, breadcrumbs |
|
|
96
|
-
|
|
97
|
-
### 3.3 Accent (the only color that gets to be loud)
|
|
98
|
-
|
|
99
|
-
| Token | Light | Dark | Use |
|
|
100
|
-
|--|--|--|--|
|
|
101
|
-
| `--accent` | `oklch(0.527 0.154 150.069)` | `oklch(0.448 0.119 151.328)` | Primary buttons, active state, focus ring tint, live indicator |
|
|
102
|
-
| `--accent-hover` | `oklch(0.477 0.154 150.069)` | `oklch(0.398 0.119 151.328)` | Hover on `--accent` |
|
|
103
|
-
| `--accent-soft` | `color-mix(in oklch, var(--accent) 12%, transparent)` | same | Selected row tint, badge bg |
|
|
104
|
-
| `--accent-ring` | `color-mix(in oklch, var(--accent) 35%, transparent)` | same | Focus ring |
|
|
105
|
-
|
|
106
|
-
### 3.4 Semantic colors
|
|
107
|
-
|
|
108
|
-
| Token | Light | Dark | Use |
|
|
109
|
-
|--|--|--|--|
|
|
110
|
-
| `--success` | `oklch(0.527 0.154 150.069)` | `oklch(0.723 0.219 149.579)` | Passed, succeeded, completed |
|
|
111
|
-
| `--warning` | `oklch(0.7 0.15 75)` | `oklch(0.75 0.15 75)` | Awaiting, paused, queued |
|
|
112
|
-
| `--danger` | `oklch(0.577 0.245 27.325)` | `oklch(0.704 0.191 22.216)` | Failed, error, destructive |
|
|
113
|
-
| `--info` | `oklch(0.6 0.13 240)` | `oklch(0.7 0.13 240)` | Informational, neutral highlight |
|
|
114
|
-
|
|
115
|
-
### 3.5 Borders & inputs
|
|
116
|
-
|
|
117
|
-
| Token | Light | Dark | Use |
|
|
118
|
-
|--|--|--|--|
|
|
119
|
-
| `--border` | `oklch(0.92 0.004 286.32)` | `oklch(1 0 0 / 10%)` | Default 1px border |
|
|
120
|
-
| `--border-strong` | `oklch(0.85 0.005 286)` | `oklch(1 0 0 / 18%)` | Hover, dividers |
|
|
121
|
-
| `--input-bg` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` | Form control fill |
|
|
122
|
-
| `--focus-ring` | `oklch(0.705 0.015 286.067)` | `oklch(0.552 0.016 285.938)` | Outer focus ring |
|
|
123
|
-
|
|
124
|
-
### 3.6 Charts (categorical, sequential, status)
|
|
125
|
-
|
|
126
|
-
| Token | Value | Use |
|
|
127
|
-
|--|--|--|
|
|
128
|
-
| `--chart-1` | `oklch(0.871 0.006 286.286)` | First series, neutral |
|
|
129
|
-
| `--chart-2` | `oklch(0.552 0.016 285.938)` | Second series |
|
|
130
|
-
| `--chart-3` | `oklch(0.442 0.017 285.786)` | Third series |
|
|
131
|
-
| `--chart-4` | `oklch(0.37 0.013 285.805)` | Fourth series |
|
|
132
|
-
| `--chart-5` | `oklch(0.274 0.006 286.033)` | Fifth series |
|
|
133
|
-
| `--chart-accent` | `var(--accent)` | Highlighted series |
|
|
134
|
-
|
|
135
|
-
Chart colors intentionally **do not match `--accent`** — they form a neutral grayscale ramp so that the green primary is reserved for interactive state. When a chart needs to highlight a single series (e.g. "errors over time"), it switches to `--danger` or `--success`, not `--accent`.
|
|
136
|
-
|
|
137
|
-
### 3.7 Sidebar
|
|
138
|
-
|
|
139
|
-
| Token | Light | Dark | Use |
|
|
140
|
-
|--|--|--|--|
|
|
141
|
-
| `--sidebar-bg` | `oklch(0.985 0 0)` | `oklch(0.21 0.006 285.885)` | Sidebar canvas |
|
|
142
|
-
| `--sidebar-fg` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` | Sidebar text |
|
|
143
|
-
| `--sidebar-accent` | `oklch(0.627 0.194 149.214)` | `oklch(0.723 0.219 149.579)` | Active nav item, primary sidebar button |
|
|
144
|
-
| `--sidebar-accent-fg` | `oklch(0.982 0.018 155.826)` | `oklch(0.982 0.018 155.826)` | Text on sidebar accent |
|
|
145
|
-
| `--sidebar-hover` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` | Nav hover bg |
|
|
146
|
-
| `--sidebar-border` | `oklch(0.92 0.004 286.32)` | `oklch(1 0 0 / 10%)` | Sidebar right border |
|
|
147
|
-
|
|
148
|
-
### 3.8 Geometry
|
|
149
|
-
|
|
150
|
-
| Token | Value | Use |
|
|
151
|
-
|--|--|--|
|
|
152
|
-
| `--radius` | `0.625rem` (10px) | Buttons, inputs, cards, popovers |
|
|
153
|
-
| `--radius-sm` | `0.375rem` (6px) | Chips, badges, small buttons |
|
|
154
|
-
| `--radius-lg` | `0.875rem` (14px) | Dialogs, sheets, large cards |
|
|
155
|
-
| `--radius-pill` | `9999px` | Avatars, pills, toggle switches |
|
|
156
|
-
|
|
157
|
-
### 3.9 Elevation
|
|
158
|
-
|
|
159
|
-
| Token | Value | Use |
|
|
160
|
-
|--|--|--|
|
|
161
|
-
| `--shadow-1` | `0 1px 2px oklch(0 0 0 / 0.04)` | Resting cards |
|
|
162
|
-
| `--shadow-2` | `0 4px 12px oklch(0 0 0 / 0.08)` | Hover cards, popovers |
|
|
163
|
-
| `--shadow-3` | `0 12px 32px oklch(0 0 0 / 0.12)` | Drag overlay, dialogs |
|
|
164
|
-
| `--shadow-4` | `0 24px 64px oklch(0 0 0 / 0.16)` | Sheets, command palette |
|
|
165
|
-
|
|
166
|
-
Dark mode multiplies each shadow by `1.25` because shadows are weaker on dark surfaces.
|
|
167
|
-
|
|
168
|
-
### 3.10 Motion
|
|
169
|
-
|
|
170
|
-
| Token | Value | Use |
|
|
171
|
-
|--|--|--|
|
|
172
|
-
| `--motion-instant` | `50ms` | Hover color shift, focus ring |
|
|
173
|
-
| `--motion-fast` | `120ms` | Small UI: button press, chip toggle |
|
|
174
|
-
| `--motion-base` | `200ms` | Default: popovers, menus, sidebar collapse |
|
|
175
|
-
| `--motion-slow` | `320ms` | Page transitions, drag overlays |
|
|
176
|
-
| `--ease-out` | `cubic-bezier(0.16, 1, 0.3, 1)` | 90% of motion — feels like Linear |
|
|
177
|
-
| `--ease-in-out` | `cubic-bezier(0.65, 0, 0.35, 1)` | Sidebar collapse, sheet slide |
|
|
178
|
-
| `--ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Success micro-bounces |
|
|
179
|
-
|
|
180
|
-
`prefers-reduced-motion: reduce` zeroes every `--motion-*` token.
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## 4 · Typography
|
|
185
|
-
|
|
186
|
-
Two families, six sizes, five weights. That is the whole type system.
|
|
187
|
-
|
|
188
|
-
### 4.1 Families
|
|
189
|
-
|
|
190
|
-
| Token | Family | Use |
|
|
191
|
-
|--|--|--|
|
|
192
|
-
| `--font-sans` | `Inter Variable`, system-ui fallback | UI, body, headings |
|
|
193
|
-
| `--font-mono` | `JetBrains Mono Variable`, `ui-monospace` fallback | IDs, paths, code, numerics |
|
|
194
|
-
| `--font-display` | `Inter Variable` (tight tracking) | Hero text, empty states |
|
|
195
|
-
|
|
196
|
-
### 4.2 Sizes (modular scale 1.125)
|
|
197
|
-
|
|
198
|
-
| Token | Size / line-height | Use |
|
|
199
|
-
|--|--|--|
|
|
200
|
-
| `--text-xs` | `0.75rem / 1rem` (12/16) | Captions, helper, table footnotes |
|
|
201
|
-
| `--text-sm` | `0.8125rem / 1.125rem` (13/18) | Default body, table cells |
|
|
202
|
-
| `--text-base` | `0.875rem / 1.25rem` (14/20) | Default body on wide screens |
|
|
203
|
-
| `--text-md` | `1rem / 1.5rem` (16/24) | Card titles, section headers |
|
|
204
|
-
| `--text-lg` | `1.125rem / 1.625rem` (18/26) | Page titles |
|
|
205
|
-
| `--text-xl` | `1.375rem / 1.75rem` (22/28) | Hero, empty-state title |
|
|
206
|
-
|
|
207
|
-
### 4.3 Weights
|
|
208
|
-
|
|
209
|
-
| Token | Value | Use |
|
|
210
|
-
|--|--|--|
|
|
211
|
-
| `--weight-regular` | `400` | Body |
|
|
212
|
-
| `--weight-medium` | `500` | Nav labels, button text |
|
|
213
|
-
| `--weight-semibold` | `600` | Card titles, table headers |
|
|
214
|
-
| `--weight-bold` | `700` | Page titles only |
|
|
215
|
-
|
|
216
|
-
### 4.4 Numerics
|
|
217
|
-
|
|
218
|
-
All numeric cells use `font-variant-numeric: tabular-nums` so columns of figures align. The `mono` family is reserved for IDs, paths, and raw code; numerics stay in `sans` unless they are an ID.
|
|
219
|
-
|
|
220
|
-
### 4.5 Long content
|
|
221
|
-
|
|
222
|
-
Body copy uses `text-wrap: pretty`; headings use `text-wrap: balance`. Code blocks, table cells, and IDs use `text-wrap: nowrap` with `overflow: hidden; text-overflow: ellipsis` and a tooltip on hover.
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## 5 · Spacing & layout
|
|
227
|
-
|
|
228
|
-
### 5.1 Spacing scale (4px base)
|
|
229
|
-
|
|
230
|
-
| Token | px | Use |
|
|
231
|
-
|--|--|--|
|
|
232
|
-
| `--space-0` | `0` | Reset |
|
|
233
|
-
| `--space-1` | `4px` | Tight stack, chip padding-y |
|
|
234
|
-
| `--space-2` | `8px` | Inline gap, button padding-y |
|
|
235
|
-
| `--space-3` | `12px` | Default inline gap, control padding |
|
|
236
|
-
| `--space-4` | `16px` | Card padding, stack gap, control padding-x |
|
|
237
|
-
| `--space-5` | `20px` | Section padding |
|
|
238
|
-
| `--space-6` | `24px` | Page section gap |
|
|
239
|
-
| `--space-8` | `32px` | Page padding |
|
|
240
|
-
| `--space-10` | `40px` | Hero vertical rhythm |
|
|
241
|
-
| `--space-12` | `48px` | Page-level separators |
|
|
242
|
-
| `--space-16` | `64px` | Empty-state padding |
|
|
243
|
-
|
|
244
|
-
### 5.2 Layout grid
|
|
245
|
-
|
|
246
|
-
- Desktop default: **12-column, 16px gutter, max 1440px content.**
|
|
247
|
-
- Sidebar: **260px expanded, 60px collapsed**, `--motion-base` ease.
|
|
248
|
-
- Topbar: **56px tall**, single row.
|
|
249
|
-
- Right detail drawer: **360px** when open, slides over content on <1280px, pushes content on ≥1280px.
|
|
250
|
-
|
|
251
|
-
### 5.3 Density
|
|
252
|
-
|
|
253
|
-
Two density modes, user-toggleable per workspace:
|
|
254
|
-
|
|
255
|
-
| Mode | Row height | Padding-y | Use |
|
|
256
|
-
|--|--|--|--|
|
|
257
|
-
| **Compact** (default) | `32px` | `4px` | Power-user, screen-fillers |
|
|
258
|
-
| **Comfortable** | `40px` | `8px` | Touch, lower-resolution |
|
|
259
|
-
|
|
260
|
-
Density is a single CSS class on `<html>`: `data-density="compact"` or `"comfortable"`. Every list, table, and tree honors it. Card padding does not change with density.
|
|
261
|
-
|
|
262
|
-
### 5.4 Z-index scale
|
|
263
|
-
|
|
264
|
-
| Layer | Value | Use |
|
|
265
|
-
|--|--|--|
|
|
266
|
-
| `--z-base` | `0` | Content |
|
|
267
|
-
| `--z-sticky` | `10` | Table headers, sticky filters |
|
|
268
|
-
| `--z-dropdown` | `1000` | Dropdowns, autocomplete |
|
|
269
|
-
| `--z-sticky-nav` | `1100` | Topbar, sidebar |
|
|
270
|
-
| `--z-overlay` | `1300` | Modal backdrop |
|
|
271
|
-
| `--z-modal` | `1400` | Dialogs, sheets |
|
|
272
|
-
| `--z-popover` | `1500` | Context menus, command palette |
|
|
273
|
-
| `--z-toast` | `1600` | Toasts, notifications |
|
|
274
|
-
| `--z-tooltip` | `1700` | Tooltips |
|
|
275
|
-
|
|
276
|
-
No z-index above `1700`. If you need it, you have mis-designed.
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
|
-
## 6 · Motion & elevation
|
|
281
|
-
|
|
282
|
-
### 6.1 Default transitions
|
|
283
|
-
|
|
284
|
-
| Element | Property | Duration | Easing |
|
|
285
|
-
|--|--|--|--|
|
|
286
|
-
| Button bg | `background-color` | `--motion-instant` | `--ease-out` |
|
|
287
|
-
| Button press | `transform` | `--motion-fast` | `--ease-out` |
|
|
288
|
-
| Card hover | `box-shadow, transform` | `--motion-base` | `--ease-out` |
|
|
289
|
-
| Popover open | `opacity, transform` | `--motion-base` | `--ease-out` |
|
|
290
|
-
| Sidebar collapse | `width` | `--motion-base` | `--ease-in-out` |
|
|
291
|
-
| Page transition | `opacity` | `--motion-slow` | `--ease-out` |
|
|
292
|
-
| Drag overlay enter | `opacity, transform` | `--motion-fast` | `--ease-spring` |
|
|
293
|
-
| Toast | `transform` | `--motion-base` | `--ease-spring` |
|
|
294
|
-
|
|
295
|
-
### 6.2 Micro-interactions
|
|
296
|
-
|
|
297
|
-
- **Live indicator:** green dot, 1.6s pulse animation (`opacity` 1→0.4→1, `--motion-slow`). Respects `prefers-reduced-motion`.
|
|
298
|
-
- **Streaming text:** no special animation. Cursor blinks at end of last token, 1s cadence.
|
|
299
|
-
- **Drag:** cursor changes to `grabbing` on `mousedown`. Drag overlay uses `--shadow-3` and `transform: rotate(1.5deg) scale(1.02)` for a "lifted" feel.
|
|
300
|
-
- **Save:** inline checkmark flash, `--motion-fast`, `--ease-spring`. No modal.
|
|
301
|
-
- **Error:** subtle 2px left border inside the input + focus ring tint `--danger`. No shake animation.
|
|
302
|
-
|
|
303
|
-
### 6.3 Reduced motion
|
|
304
|
-
|
|
305
|
-
When `prefers-reduced-motion: reduce`:
|
|
306
|
-
- All `--motion-*` tokens set to `0ms`.
|
|
307
|
-
- Drag overlay: no rotation/scale, only opacity.
|
|
308
|
-
- Page transitions: instant.
|
|
309
|
-
- Live indicator: static dot, no pulse.
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## 7 · Layout
|
|
314
|
-
|
|
315
|
-
### 7.1 App shell
|
|
316
|
-
|
|
317
|
-
The app shell is a fixed two-column layout: a sticky topbar on top, a sidebar on the left, and the main content area (SidebarInset) on the right. An optional status bar lives at the bottom on desktop and is hidden by default; it surfaces when there is an active alert.
|
|
318
|
-
|
|
319
|
-
```
|
|
320
|
-
┌─────────────────────────────────────────────────────────────────────┐
|
|
321
|
-
│ TOPBAR 56px workspace · breadcrumb · status · search · user │
|
|
322
|
-
├──────────┬──────────────────────────────────────────────────────────┤
|
|
323
|
-
│ │ │
|
|
324
|
-
│ SIDEBAR │ SIDEBAR INSET │
|
|
325
|
-
│ 260px │ max 1440px, centered │
|
|
326
|
-
│ │ │
|
|
327
|
-
│ nav │ page content │
|
|
328
|
-
│ groups │ │
|
|
329
|
-
│ │ │
|
|
330
|
-
├──────────┴──────────────────────────────────────────────────────────┤
|
|
331
|
-
│ STATUS BAR 28px (optional) online · tokens · latency · build │
|
|
332
|
-
└─────────────────────────────────────────────────────────────────────┘
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
### 7.2 Topbar
|
|
336
|
-
|
|
337
|
-
| Slot | Width | Contents |
|
|
338
|
-
|--|--|--|
|
|
339
|
-
| Left | 320px | Bizar logo · workspace switcher · project picker |
|
|
340
|
-
| Center | flex | breadcrumb (route) + inline search (Cmd+K opens palette; inline search is for quick find) |
|
|
341
|
-
| Right | auto | Status pills (agents online · tokens · queue) · notifications bell · theme toggle · user menu |
|
|
342
|
-
|
|
343
|
-
The topbar is sticky (`--z-sticky-nav`). It is **not** a tab bar — tabs live inside views when needed.
|
|
344
|
-
|
|
345
|
-
### 7.3 Sidebar
|
|
346
|
-
|
|
347
|
-
| Slot | Contents |
|
|
348
|
-
|--|--|
|
|
349
|
-
| Header | Workspace switcher (240px), collapse toggle (right edge) |
|
|
350
|
-
| Section: **Workspace** | Overview, Tasks, Goals |
|
|
351
|
-
| Section: **Operations** | Agents, Activity, Memory |
|
|
352
|
-
| Section: **Libraries** | Skills, MCP servers, Hooks |
|
|
353
|
-
| Section: **System** | Settings |
|
|
354
|
-
| Footer | Status indicator (online/offline), build SHA, version |
|
|
355
|
-
|
|
356
|
-
Each section has an 11px uppercase label in `--fg-subtle` with `letter-spacing: 0.04em`. Items are 32px tall, single line, with a 16x16 Lucide icon, label, and an optional count badge (right-aligned, `--fg-muted`). The active item uses `--sidebar-accent` background with `--sidebar-accent-fg` text and a 2px left-edge bar in `--sidebar-accent` (a single permitted use of an edge bar — it is the *only* navigation primitive allowed to use one).
|
|
357
|
-
|
|
358
|
-
### 7.4 Content area
|
|
359
|
-
|
|
360
|
-
The `SidebarInset` is a 1440px-max container with `--space-8` horizontal padding and `--space-6` top padding (topbar adds the rest). Pages render their own header (ViewHeader primitive — see §8.4) and then their content.
|
|
361
|
-
|
|
362
|
-
### 7.5 Optional right detail drawer
|
|
363
|
-
|
|
364
|
-
The kanban and agents views can open a right-side **DetailDrawer** (360px). It slides in from the right with `--motion-base` and pushes content (≥1280px) or overlays it (<1280px). It contains:
|
|
365
|
-
- Read view: title, metadata, body, activity, comments
|
|
366
|
-
- Edit view: same + editable fields inline
|
|
367
|
-
|
|
368
|
-
### 7.6 Routes
|
|
369
|
-
|
|
370
|
-
| Path | Page | Default view |
|
|
371
|
-
|--|--|--|
|
|
372
|
-
| `/` | Overview | Dashboard summary |
|
|
373
|
-
| `/tasks` | Tasks | Kanban (the main focus) |
|
|
374
|
-
| `/tasks/list` | Tasks | List view |
|
|
375
|
-
| `/tasks/calendar` | Tasks | Calendar view |
|
|
376
|
-
| `/goals` | Goals | Active goals |
|
|
377
|
-
| `/goals/:id` | Goal detail | Single goal |
|
|
378
|
-
| `/agents` | Agents | Roster |
|
|
379
|
-
| `/agents/:id` | Agent detail | Single agent |
|
|
380
|
-
| `/activity` | Activity | Event log |
|
|
381
|
-
| `/memory` | Memory | Vault browser |
|
|
382
|
-
| `/libraries/skills` | Skills | Library |
|
|
383
|
-
| `/libraries/mcps` | MCP servers | Library |
|
|
384
|
-
| `/libraries/hooks` | Hooks | Library |
|
|
385
|
-
| `/settings/*` | Settings | Hierarchical |
|
|
386
|
-
|
|
387
|
-
The nav stays at **6 top-level items** (Workspace, Operations, Libraries, System — the rest are sub-routes of the existing items). The user explicitly said "I do not want too many tabs", so we surface items as nav groups with secondary tabs inside the page.
|
|
388
|
-
|
|
389
|
-
### 7.7 Empty states
|
|
390
|
-
|
|
391
|
-
Every collection view has an `EmptyState` (see §8.5) with:
|
|
392
|
-
- A 24px Lucide icon in `--fg-subtle`
|
|
393
|
-
- A one-line title in `--text-md` `--weight-medium`
|
|
394
|
-
- A one-sentence body in `--fg-muted`
|
|
395
|
-
- One primary CTA button (`--accent`)
|
|
396
|
-
- Optional secondary text link
|
|
397
|
-
|
|
398
|
-
No illustrations, no emoji, no "celebrate your first task" copy.
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## 8 · Component library
|
|
403
|
-
|
|
404
|
-
The library lives at `bizar-dash/src/web/ui/`. Every component is named with PascalCase, lives in its own file, exports a named function, and has a colocated `.test.tsx` file. No default exports.
|
|
405
|
-
|
|
406
|
-
### 8.1 `ui/primitives/` — no business logic
|
|
407
|
-
|
|
408
|
-
- **Box** — `div` with tokens (bg, fg, padding, radius)
|
|
409
|
-
- **Stack** — vertical flex with `--space-N` gap
|
|
410
|
-
- **Inline** — horizontal flex with `--space-N` gap
|
|
411
|
-
- **Cluster** — wraps inline elements that pack
|
|
412
|
-
- **Grid** — CSS grid wrapper with col/row gap
|
|
413
|
-
- **Center** — centers content (empty states)
|
|
414
|
-
- **Separator** — 1px horizontal/vertical rule
|
|
415
|
-
- **ScrollArea** — themed scroll wrapper, hides scrollbars unless scrolling
|
|
416
|
-
- **Resizable** — wraps `react-resizable-panels`
|
|
417
|
-
- **VisuallyHidden** — `sr-only` helper
|
|
418
|
-
- **Portal** — Radix Portal wrapper
|
|
419
|
-
|
|
420
|
-
### 8.2 `ui/controls/` — form & input
|
|
421
|
-
|
|
422
|
-
- **Button** (variants: `primary | secondary | ghost | outline | danger | link`, sizes: `xs | sm | md | lg | icon`)
|
|
423
|
-
- **ButtonGroup** — stacked buttons with shared borders
|
|
424
|
-
- **IconButton** — square, icon-only, requires `aria-label`
|
|
425
|
-
- **Input** — single-line text, optional left/right slots
|
|
426
|
-
- **Textarea** — multi-line, autoresize
|
|
427
|
-
- **InputOTP** — segmented code input
|
|
428
|
-
- **Select** — Radix Select wrapper (single)
|
|
429
|
-
- **MultiSelect** — Radix Popover + command list (multi)
|
|
430
|
-
- **Combobox** — Radix Popover + list + input (async-capable)
|
|
431
|
-
- **Checkbox** — Radix Checkbox
|
|
432
|
-
- **RadioGroup** — Radix RadioGroup
|
|
433
|
-
- **Switch** — Radix Switch
|
|
434
|
-
- **Toggle** — single toggle button
|
|
435
|
-
- **ToggleGroup** — Radix ToggleGroup
|
|
436
|
-
- **Slider** — Radix Slider
|
|
437
|
-
- **DatePicker** — single date
|
|
438
|
-
- **DateRangePicker** — two dates
|
|
439
|
-
- **TimePicker** — single time
|
|
440
|
-
- **ColorPicker** — popover with swatches + input
|
|
441
|
-
- **Field** — label + control + error + helper wrapper
|
|
442
|
-
- **Form** — React Hook Form + Zod integration
|
|
443
|
-
|
|
444
|
-
### 8.3 `ui/feedback/` — feedback & status
|
|
445
|
-
|
|
446
|
-
- **Alert** — inline banner, variants `info | success | warning | danger`
|
|
447
|
-
- **Toast** — Sonner wrapper, top-right, auto-dismiss 5s
|
|
448
|
-
- **Dialog** — Radix Dialog (modal)
|
|
449
|
-
- **AlertDialog** — destructive confirm
|
|
450
|
-
- **Sheet** — Radix Dialog with side prop (right/left/top/bottom)
|
|
451
|
-
- **Drawer** — bottom-sheet variant for mobile
|
|
452
|
-
- **Popover** — Radix Popover
|
|
453
|
-
- **HoverCard** — Radix HoverCard (preview on hover)
|
|
454
|
-
- **Tooltip** — Radix Tooltip, 4-side aware
|
|
455
|
-
- **Progress** — linear bar
|
|
456
|
-
- **ProgressCircle** — circular determinate/indeterminate
|
|
457
|
-
- **Spinner** — single-element rotating arc
|
|
458
|
-
- **Skeleton** — shimmering placeholder
|
|
459
|
-
- **EmptyState** — see §7.7
|
|
460
|
-
- **ErrorBoundary** — React error boundary
|
|
461
|
-
- **Banner** — full-width inline banner
|
|
462
|
-
|
|
463
|
-
### 8.4 `ui/data/` — data display
|
|
464
|
-
|
|
465
|
-
- **Card** — generic container with optional header/footer slots
|
|
466
|
-
- **StatTile** — single metric, optional delta indicator
|
|
467
|
-
- **StatGrid** — N-up grid of StatTiles
|
|
468
|
-
- **Table** — semantic `<table>` (low-level)
|
|
469
|
-
- **DataTable** — TanStack Table wrapper (sort, filter, paginate, select, resize, virtualize)
|
|
470
|
-
- **Badge** — small label, variants `default | accent | success | warning | danger | neutral`
|
|
471
|
-
- **Chip** — removable tag with avatar/icon
|
|
472
|
-
- **Avatar** — image or initials, with optional status dot
|
|
473
|
-
- **AvatarStack** — overlapping avatars
|
|
474
|
-
- **Timeline** — vertical event list with timestamps
|
|
475
|
-
- **Accordion** — Radix Accordion
|
|
476
|
-
- **Collapsible** — single show/hide
|
|
477
|
-
- **Chart** — Recharts wrapper (LineChart, BarChart, AreaChart, PieChart) bound to chart tokens
|
|
478
|
-
- **Sparkline** — inline mini-chart
|
|
479
|
-
- **MetricRing** — circular progress with label
|
|
480
|
-
- **BarList** — horizontal ranked list (used in activity feeds)
|
|
481
|
-
- **TreeView** — Radix Accordion-based tree
|
|
482
|
-
- **VirtualList** — TanStack Virtual wrapper
|
|
483
|
-
- **Kbd** — keyboard key cap
|
|
484
|
-
- **CountBadge** — numeric pill, optional max cap (e.g. "99+")
|
|
485
|
-
- **ViewHeader** — page title + description + actions slot (used at top of every page)
|
|
486
|
-
|
|
487
|
-
### 8.5 `ui/navigation/` — navigation
|
|
488
|
-
|
|
489
|
-
- **Sidebar** (root + provider) — wraps `nav`, handles collapse
|
|
490
|
-
- **SidebarProvider** — context, persisted collapsed state
|
|
491
|
-
- **SidebarInset** — content slot inside SidebarProvider
|
|
492
|
-
- **SidebarSection** — labeled section
|
|
493
|
-
- **SidebarItem** — single nav row
|
|
494
|
-
- **SidebarGroup** — collapsible group
|
|
495
|
-
- **Topbar** — top bar slot composition
|
|
496
|
-
- **Breadcrumb** — list of links
|
|
497
|
-
- **NavLink** — Radix-styled anchor with active state
|
|
498
|
-
- **Tabs** — Radix Tabs wrapper
|
|
499
|
-
- **TabBar** — styled tab strip
|
|
500
|
-
- **TabPanel** — content slot
|
|
501
|
-
- **Menu** — Radix DropdownMenu with shortcut display
|
|
502
|
-
- **ContextMenu** — Radix ContextMenu (right-click trigger)
|
|
503
|
-
- **DropdownMenu** — Radix DropdownMenu
|
|
504
|
-
- **Menubar** — Radix Menubar
|
|
505
|
-
- **Pagination** — page + per-page controls
|
|
506
|
-
- **Stepper** — multi-step progress
|
|
507
|
-
- **CommandPalette** — Cmd+K overlay (see §9.4)
|
|
508
|
-
- **CommandBar** — inline command (Ctrl+K for filter focus)
|
|
509
|
-
- **NavSection** — labeled section for sidebar
|
|
510
|
-
- **NavItem** — sidebar row primitive
|
|
511
|
-
- **NavGroup** — collapsible section in sidebar
|
|
512
|
-
- **ViewTabs** — tab strip below ViewHeader
|
|
513
|
-
|
|
514
|
-
### 8.6 `ui/kanban/` — the main feature
|
|
515
|
-
|
|
516
|
-
This directory is the largest and most important. The kanban is the centerpiece of the dashboard.
|
|
517
|
-
|
|
518
|
-
- **KanbanBoard** — root container, owns DnD context
|
|
519
|
-
- **KanbanColumn** — column with header (title, count, actions), droppable body, add-task footer
|
|
520
|
-
- **KanbanCard** — task card, draggable, with all metadata visible
|
|
521
|
-
- **KanbanCardCompact** — minimal card for high-density mode
|
|
522
|
-
- **KanbanCardExpanded** — preview-on-hover or detail-drawer card
|
|
523
|
-
- **KanbanDetail** — right-side drawer content
|
|
524
|
-
- **KanbanFilters** — filter bar (assignee, label, priority, due, search)
|
|
525
|
-
- **KanbanGroupBy** — group-by selector (status / assignee / label / priority / due / project)
|
|
526
|
-
- **KanbanSort** — sort selector
|
|
527
|
-
- **KanbanDensity** — compact/comfortable toggle
|
|
528
|
-
- **KanbanEmptyState** — column empty state
|
|
529
|
-
- **KanbanKeyboardShortcuts** — helper component showing available shortcuts
|
|
530
|
-
- **KanbanQuickAdd** — inline add input at top of each column
|
|
531
|
-
- **KanbanContextMenu** — right-click menu (see §9.2)
|
|
532
|
-
- **KanbanDragOverlay** — drag preview
|
|
533
|
-
|
|
534
|
-
### 8.7 `ui/popups/` — right-click & custom popups
|
|
535
|
-
|
|
536
|
-
All popups are Radix-based or custom portals. **Browser default context menus are suppressed on all interactive surfaces** (`oncontextmenu` returns `false`); right-click opens our `ContextMenu`.
|
|
537
|
-
|
|
538
|
-
- **ContextMenu** — Radix ContextMenu (right-click + Shift+F10)
|
|
539
|
-
- **ActionMenu** — vertical list of actions with icons + shortcuts
|
|
540
|
-
- **SubActionMenu** — nested action menu (Radix Sub)
|
|
541
|
-
- **QuickAction** — single-action right-click shortcut
|
|
542
|
-
- **CommandBar** — Cmd+K overlay
|
|
543
|
-
- **DetailDrawer** — right-side drawer with read/edit toggle
|
|
544
|
-
- **ConfirmDialog** — destructive confirmation
|
|
545
|
-
- **InfoPopover** — hover/click popover with rich content
|
|
546
|
-
|
|
547
|
-
### 8.8 `ui/theme/` — theming
|
|
548
|
-
|
|
549
|
-
- **ThemeProvider** — light/dark/system, persists to `localStorage`
|
|
550
|
-
- **useTheme** — hook returning `{ theme, setTheme, resolvedTheme }`
|
|
551
|
-
- **ThemeToggle** — dropdown trigger
|
|
552
|
-
- **DensityProvider** — compact/comfortable
|
|
553
|
-
- **useDensity** — hook
|
|
554
|
-
|
|
555
|
-
### 8.9 `ui/utils/`
|
|
556
|
-
|
|
557
|
-
- **cx** — `clsx` + `tailwind-merge` wrapper
|
|
558
|
-
- **formatNumber**, **formatPercent**, **formatBytes**, **formatDuration**, **formatRelativeTime** — display formatters
|
|
559
|
-
- **useHotkeys** — global hotkey registry (see §9.3)
|
|
560
|
-
- **useFocusTrap** — focus trap for popovers
|
|
561
|
-
- **useMediaQuery** — responsive hook
|
|
562
|
-
- **useReducedMotion** — accessibility hook
|
|
563
|
-
- **useDebouncedValue** — search input debounce
|
|
564
|
-
- **useLocalStorage** — typed localStorage hook
|
|
565
|
-
|
|
566
|
-
### 8.10 `ui/hooks/` — cross-cutting hooks
|
|
567
|
-
|
|
568
|
-
- **useWebSocket** — typed WS subscriber
|
|
569
|
-
- **useAgents** — agent roster query
|
|
570
|
-
- **useTasks** — task query/mutation
|
|
571
|
-
- **useGoals** — goal query/mutation
|
|
572
|
-
- **useShortcuts** — keyboard shortcut dispatcher
|
|
573
|
-
- **useContextMenu** — opens Radix ContextMenu at cursor
|
|
574
|
-
- **useDragAndDrop** — dnd-kit wrapper
|
|
575
|
-
|
|
576
|
-
---
|
|
577
|
-
|
|
578
|
-
## 9 · Interaction patterns
|
|
579
|
-
|
|
580
|
-
### 9.1 The five inviolable rules
|
|
581
|
-
|
|
582
|
-
1. **Right-click is sacred.** Every interactive surface has a `ContextMenu`. No element falls back to the browser default.
|
|
583
|
-
2. **Keyboard parity.** Every action has a shortcut. Every menu item shows the shortcut right-aligned in `Kbd` style.
|
|
584
|
-
3. **Cmd+K is everything.** Cmd+K opens the command palette, which contains every page, every action, every setting, every shortcut reference.
|
|
585
|
-
4. **Optimistic by default.** Mutations apply instantly; rollback on error with a toast. No spinners on the user's own actions.
|
|
586
|
-
5. **Real-time by default.** Live data refreshes via WS without user action; the green pulse indicator shows the connection is live.
|
|
587
|
-
|
|
588
|
-
### 9.2 Right-click context menus
|
|
589
|
-
|
|
590
|
-
Right-click menus replace browser defaults everywhere except in `<input>`, `<textarea>`, and `[contenteditable]`. The trigger is `onContextMenu` on the element, opening a Radix `ContextMenu`.
|
|
591
|
-
|
|
592
|
-
```tsx
|
|
593
|
-
<KanbanCard onContextMenu={(e) => {
|
|
594
|
-
e.preventDefault();
|
|
595
|
-
openContextMenu(task.id, e);
|
|
596
|
-
}}>
|
|
597
|
-
...
|
|
598
|
-
</KanbanCard>
|
|
599
|
-
```
|
|
600
|
-
|
|
601
|
-
Every context menu follows this structure:
|
|
602
|
-
|
|
603
|
-
```
|
|
604
|
-
┌─────────────────────────────────────┐
|
|
605
|
-
│ Open in drawer ⌘↵ │
|
|
606
|
-
│ Edit E │
|
|
607
|
-
│ Duplicate ⇧D │
|
|
608
|
-
│ Copy link ⌥L │
|
|
609
|
-
│ ──────────────────────────────── │
|
|
610
|
-
│ Assign to agent ▸ │
|
|
611
|
-
│ Move to column ▸ │
|
|
612
|
-
│ Set priority ▸ │
|
|
613
|
-
│ ──────────────────────────────── │
|
|
614
|
-
│ Archive ⌘⇧A │
|
|
615
|
-
│ Delete (danger) ⌫ │
|
|
616
|
-
└─────────────────────────────────────┘
|
|
617
|
-
```
|
|
618
|
-
|
|
619
|
-
The keyboard equivalent is **Shift+F10** when the element has focus. We render the same menu for both triggers.
|
|
620
|
-
|
|
621
|
-
### 9.3 Keyboard shortcuts
|
|
622
|
-
|
|
623
|
-
Every shortcut is registered in `ui/utils/shortcuts.ts` and bound through `useHotkeys`. Shortcuts are scoped:
|
|
624
|
-
|
|
625
|
-
| Scope | Modifiers | Examples |
|
|
626
|
-
|--|--|--|
|
|
627
|
-
| **Global** | `Cmd`/`Ctrl` | `Cmd+K` palette, `Cmd+B` sidebar, `Cmd+/` shortcuts |
|
|
628
|
-
| **Tasks view** | none (when focused) | `C` new, `E` edit, `/` search, `1-9` jump column |
|
|
629
|
-
| **Anywhere** | `Cmd` | `Cmd+S` save (if open editor), `Cmd+,` settings |
|
|
630
|
-
|
|
631
|
-
Shortcuts ignore typing when an `<input>` or `<textarea>` has focus unless the modifier is `Cmd`/`Ctrl`. The Command Palette shows all available shortcuts and is searchable.
|
|
632
|
-
|
|
633
|
-
### 9.4 Command Palette (Cmd+K)
|
|
634
|
-
|
|
635
|
-
Built on `cmdk` (the same library Linear uses). Triggers:
|
|
636
|
-
|
|
637
|
-
| Command | Description |
|
|
638
|
-
|--|--|
|
|
639
|
-
| `Cmd+K` (Mac) / `Ctrl+K` (Win/Linux) | Open |
|
|
640
|
-
| `Esc` | Close |
|
|
641
|
-
| `↑↓` | Navigate |
|
|
642
|
-
| `↵` | Execute |
|
|
643
|
-
| `Tab` | Switch scope (Actions / Pages / Settings) |
|
|
644
|
-
|
|
645
|
-
Three scopes (tabs):
|
|
646
|
-
1. **Actions** — quick mutations on the current selection. If nothing is selected, falls back to general actions.
|
|
647
|
-
2. **Navigate** — every page, with breadcrumbs.
|
|
648
|
-
3. **Settings** — every settings key, jump to its setting page.
|
|
649
|
-
|
|
650
|
-
The palette has a fuzzy-search input at the top, a list of matches, and a footer showing the current scope + scope-switch hint.
|
|
651
|
-
|
|
652
|
-
### 9.5 Optimistic mutations
|
|
653
|
-
|
|
654
|
-
Every mutation goes through `useMutation` from TanStack Query:
|
|
655
|
-
|
|
656
|
-
```ts
|
|
657
|
-
const updateTask = useMutation({
|
|
658
|
-
mutationFn: api.tasks.update,
|
|
659
|
-
onMutate: (newTask) => {
|
|
660
|
-
queryClient.setQueryData(['tasks'], applyUpdate(old, newTask));
|
|
661
|
-
return { previous: old };
|
|
662
|
-
},
|
|
663
|
-
onError: (_err, _vars, ctx) => {
|
|
664
|
-
queryClient.setQueryData(['tasks'], ctx?.previous);
|
|
665
|
-
toast.error('Could not save — reverted');
|
|
666
|
-
},
|
|
667
|
-
onSettled: () => queryClient.invalidateQueries(['tasks']),
|
|
668
|
-
});
|
|
669
|
-
```
|
|
670
|
-
|
|
671
|
-
The UI updates instantly; the toast confirms or reverts. No spinners on user-initiated mutations.
|
|
672
|
-
|
|
673
|
-
### 9.6 Real-time updates
|
|
674
|
-
|
|
675
|
-
The dashboard maintains a single WebSocket connection (`/ws/dashboard`) that streams:
|
|
676
|
-
|
|
677
|
-
- `tasks:change` — task created/updated/deleted
|
|
678
|
-
- `agents:change` — agent registered/deregistered
|
|
679
|
-
- `goals:change` — goal progress tick
|
|
680
|
-
- `activity:event` — new event in activity log
|
|
681
|
-
- `routing:decision` — new routing decision
|
|
682
|
-
- `cost:tick` — cost reservation update
|
|
683
|
-
- `system:status` — health, version, build
|
|
684
|
-
|
|
685
|
-
All hooks consume these via `useWebSocket` + React Query cache invalidation. The connection state shows in the topbar's status pill (green pulse = connected, amber = reconnecting, red = offline).
|
|
686
|
-
|
|
687
|
-
### 9.7 Hover & focus
|
|
688
|
-
|
|
689
|
-
- Hover previews use `HoverCard` with a 400ms delay, 200ms close.
|
|
690
|
-
- Focus rings: `--focus-ring` 2px outline + 2px offset, always visible on keyboard focus, never on mouse click.
|
|
691
|
-
- Tooltip: 4-side aware, 200ms delay, `--motion-base` ease.
|
|
692
|
-
|
|
693
|
-
### 9.8 Empty states
|
|
694
|
-
|
|
695
|
-
(See §7.7.) Every collection has a deliberate empty state with one CTA. We never say "Nothing to see here." We always say what to do next.
|
|
696
|
-
|
|
697
|
-
---
|
|
698
|
-
|
|
699
|
-
## 10 · Settings model
|
|
700
|
-
|
|
701
|
-
Settings is hierarchical, scoped, and always findable. The full settings surface lives at `/settings/*` with a sidebar in the page itself (not the global sidebar).
|
|
702
|
-
|
|
703
|
-
### 10.1 Section structure
|
|
704
|
-
|
|
705
|
-
```
|
|
706
|
-
/settings
|
|
707
|
-
├── /general Workspace name, logo, default project
|
|
708
|
-
├── /appearance Theme, density, accent color (future)
|
|
709
|
-
├── /agents Default agent roster, max concurrency
|
|
710
|
-
├── /goals Goal cadence, review interval
|
|
711
|
-
├── /tasks Default workflow, custom statuses, kanban config
|
|
712
|
-
├── /skills Skill library, default skill, auto-suggest
|
|
713
|
-
├── /mcps MCP servers, auth, per-tool permissions
|
|
714
|
-
├── /hooks Hook config (Pre/Post/UserPrompt)
|
|
715
|
-
├── /routing Model tiers, cost ceiling, fallback
|
|
716
|
-
├── /memory Vault location, retention, distillation
|
|
717
|
-
├── /notifications Per-event toggles, channels
|
|
718
|
-
├── /security Webhook secrets, HMAC keys, PII mode
|
|
719
|
-
├── /integrations GitHub, Slack, webhooks
|
|
720
|
-
├── /billing Cost gate, room budget, alerts
|
|
721
|
-
├── /team Members, roles (future)
|
|
722
|
-
└── /advanced Debug, traces, export/import, reset
|
|
723
|
-
```
|
|
724
|
-
|
|
725
|
-
### 10.2 Settings page pattern
|
|
726
|
-
|
|
727
|
-
Every settings page follows the same skeleton:
|
|
728
|
-
|
|
729
|
-
```
|
|
730
|
-
┌─ ViewHeader ────────────────────────────────────────────────────┐
|
|
731
|
-
│ Settings · Agents [ Save changes ] │
|
|
732
|
-
│ Default roster and concurrency for new sessions. │
|
|
733
|
-
├────────────────────────────────────────────────────────────────┤
|
|
734
|
-
│ ┌─ FieldGroup ──────────────────────────────────────────────┐ │
|
|
735
|
-
│ │ Default roster size [ 8 ] — help text │ │
|
|
736
|
-
│ │ Max concurrent agents [ 16 ] — help text │ │
|
|
737
|
-
│ │ Agent types [ multi-select ] — help text │ │
|
|
738
|
-
│ │ Auto-spawn on session [ toggle ON ] — help text │ │
|
|
739
|
-
│ └──────────────────────────────────────────────────────────┘ │
|
|
740
|
-
│ ┌─ FieldGroup ──────────────────────────────────────────────┐ │
|
|
741
|
-
│ │ Restart agents on config change [ toggle OFF ] │ │
|
|
742
|
-
│ └──────────────────────────────────────────────────────────┘ │
|
|
743
|
-
└────────────────────────────────────────────────────────────────┘
|
|
744
|
-
```
|
|
745
|
-
|
|
746
|
-
A field group is a `Card` containing one or more `Field` rows. Each field has a label, control, and helper text (one short sentence). Fields auto-save on blur with an inline checkmark; an explicit "Save changes" button is reserved for grouped forms.
|
|
747
|
-
|
|
748
|
-
### 10.3 Settings discovery
|
|
749
|
-
|
|
750
|
-
- Every setting is reachable via Cmd+K (palette).
|
|
751
|
-
- Every setting is reachable via `/settings` breadcrumb.
|
|
752
|
-
- The settings sidebar is **the only** place that lives in the page (not the global sidebar) so it has room to breathe.
|
|
753
|
-
|
|
754
|
-
---
|
|
755
|
-
|
|
756
|
-
## 11 · Accessibility
|
|
757
|
-
|
|
758
|
-
WCAG 2.2 AA is the floor. We aim higher where it does not cost.
|
|
759
|
-
|
|
760
|
-
### 11.1 Color & contrast
|
|
761
|
-
|
|
762
|
-
- All text/background pairs meet **AA 4.5:1** (body) and **AA 3:1** (large text, icons).
|
|
763
|
-
- Charts use shape + color (never color alone).
|
|
764
|
-
- Status indicators always have a shape or label in addition to color (green dot + "live"; red dot + "errored").
|
|
765
|
-
|
|
766
|
-
### 11.2 Keyboard
|
|
767
|
-
|
|
768
|
-
- Every interactive element is reachable via Tab.
|
|
769
|
-
- Focus order is visual order.
|
|
770
|
-
- Focus ring is always visible on keyboard focus.
|
|
771
|
-
- Modals trap focus; popovers return focus on close.
|
|
772
|
-
- Drag-and-drop has a keyboard alternative (`Space` to pick up, arrows to move, `Enter` to drop, `Esc` to cancel).
|
|
773
|
-
|
|
774
|
-
### 11.3 Screen readers
|
|
775
|
-
|
|
776
|
-
- Every icon-only button has `aria-label`.
|
|
777
|
-
- Every form control has a `<label>` (visible or sr-only).
|
|
778
|
-
- Live regions (`aria-live="polite"`) for activity updates and toasts.
|
|
779
|
-
- Tables use `<th scope="col">`; data tables announce sort state.
|
|
780
|
-
|
|
781
|
-
### 11.4 Motion
|
|
782
|
-
|
|
783
|
-
- `prefers-reduced-motion` zeroes motion tokens (§6.3).
|
|
784
|
-
- Auto-playing animations have a pause control.
|
|
785
|
-
- Drag/drop has a non-motion alternative.
|
|
786
|
-
|
|
787
|
-
### 11.5 Touch & pointer
|
|
788
|
-
|
|
789
|
-
- Minimum target size: **44x44px** for touch (mobile/tablet), **24x24px** for desktop.
|
|
790
|
-
- Right-click has a long-press alternative on touch (650ms hold).
|
|
791
|
-
- Hover-only patterns have a focus equivalent.
|
|
792
|
-
|
|
793
|
-
---
|
|
794
|
-
|
|
795
|
-
## 12 · Banned tropes
|
|
796
|
-
|
|
797
|
-
Audited before every PR via `scripts/check-design-tropes.sh`.
|
|
798
|
-
|
|
799
|
-
- **No gradients.** Anywhere. As backgrounds, as fills, as borders, as button hovers. The accent color is solid. Charts use solid fills. Period.
|
|
800
|
-
- **No vertical accent stripes on containers.** Active state uses background tint + weight + motion. The single permitted edge bar is the 2px active-item bar inside `SidebarItem` (§7.3).
|
|
801
|
-
- **No purple, blue, or rainbow washes.** The accent is green. Charts are grayscale. Status colors are semantic.
|
|
802
|
-
- **No emoji in UI copy.** Use Lucide icons.
|
|
803
|
-
- **No "Lorem ipsum".** Every placeholder is realistic.
|
|
804
|
-
- **No "Feature One / Feature Two".** Labels are real.
|
|
805
|
-
- **No "Loading…" spinners as primary state.** Use skeleton or streaming copy ("Fetching agents…").
|
|
806
|
-
- **No default browser context menus** on any interactive surface.
|
|
807
|
-
- **No modal-on-modal stacking.** A modal cannot open another modal without an explicit close.
|
|
808
|
-
- **No tooltips on disabled buttons.** Tooltip on hover only when the action is enabled; if disabled, helper text appears inline.
|
|
809
|
-
- **No invented metrics.** Real numbers or "—" placeholder.
|
|
810
|
-
- **No glass / blur / noise effects.** Surfaces are solid fills.
|
|
811
|
-
- **No animated icons** except the live indicator pulse.
|
|
812
|
-
|
|
813
|
-
---
|
|
814
|
-
|
|
815
|
-
## 13 · Visual contract for new screens
|
|
816
|
-
|
|
817
|
-
A new screen must:
|
|
818
|
-
|
|
819
|
-
1. Pick one of the seven layouts from §7 (default: topbar + sidebar).
|
|
820
|
-
2. Use tokens from §3 only — never raw colors.
|
|
821
|
-
3. Use type from §4 only — never custom families.
|
|
822
|
-
4. Use motion from §6 only — never bespoke easings.
|
|
823
|
-
5. Use icons from `lucide-react` — never emoji or custom SVGs (unless domain-specific, in which case it goes in `ui/icons/`).
|
|
824
|
-
6. Use components from `ui/` only — never rebuild primitives.
|
|
825
|
-
7. Honor density mode (§5.3).
|
|
826
|
-
8. Honor `prefers-reduced-motion`.
|
|
827
|
-
9. Honor `prefers-color-scheme` via the theme system.
|
|
828
|
-
10. Have right-click context menus on every interactive element.
|
|
829
|
-
11. Have keyboard shortcuts for every action.
|
|
830
|
-
12. Have an empty state, a loading state, and an error state.
|
|
831
|
-
13. Have at least one place where the green accent earns its keep.
|
|
832
|
-
14. Document its data shape in `bizar-dash/src/web/views/<name>/README.md`.
|
|
833
|
-
15. Have a colocated `.test.tsx` file with the AAA pattern.
|
|
834
|
-
|
|
835
|
-
---
|
|
836
|
-
|
|
837
|
-
## 14 · Pre-merge checklist
|
|
838
|
-
|
|
839
|
-
Run before opening a PR that touches UI:
|
|
840
|
-
|
|
841
|
-
```sh
|
|
842
|
-
pnpm check:design-tropes # grep for banned patterns (§12)
|
|
843
|
-
pnpm check:a11y # axe-core on every new page
|
|
844
|
-
pnpm check:visual # screenshot diff at 1440/1100/768/390
|
|
845
|
-
pnpm test -- ui # component tests
|
|
846
|
-
pnpm e2e # full app boots, no console errors
|
|
847
|
-
pnpm check:keyboard # manual keyboard-only walkthrough (CI recorded)
|
|
848
|
-
```
|
|
849
|
-
|
|
850
|
-
All five must pass. The visual diff must not regress at any of the four widths. The keyboard walkthrough must reach every interactive element via Tab only.
|
|
851
|
-
|
|
852
|
-
---
|
|
853
|
-
|
|
854
|
-
## Appendix A · shadcn preset `b7kBsBkh7b`
|
|
855
|
-
|
|
856
|
-
The dashboard is initialized with:
|
|
857
|
-
|
|
858
|
-
```sh
|
|
859
|
-
pnpm dlx shadcn@latest init --preset b7kBsBkh7b
|
|
860
|
-
```
|
|
861
|
-
|
|
862
|
-
Per the [shadcn CLI v4 changelog](https://ui.shadcn.com/docs/changelog/2026-03-cli-v4), presets are opaque codes resolved by the CLI. The `b7kBsBkh7b` preset ships:
|
|
863
|
-
|
|
864
|
-
- Pre-configured `components.json` (style: `new-york`, base color: `neutral`, CSS variables: `yes`, icon library: `lucide`).
|
|
865
|
-
- Pre-tuned `tailwind.config.ts` with the OKLch color ramp.
|
|
866
|
-
- Pre-installed primitives matching the foundation in §3.
|
|
867
|
-
|
|
868
|
-
If the preset resolves to a different package set than expected, the plan still holds: §3 is the contract, the preset is the bootstrap. Any preset mismatch is resolved by overriding `components.json` and running `pnpm dlx shadcn@latest add <component>` for each missing primitive in §8.
|
|
869
|
-
|
|
870
|
-
The provided OKLch theme in the user's brief maps directly to §3 — every token in `:root` (light) and `.dark` is taken verbatim from the brief, then extended with the geometry, motion, and z-index tokens that the preset does not cover.
|
|
871
|
-
|
|
872
|
-
---
|
|
873
|
-
|
|
874
|
-
## Appendix B · File map
|
|
875
|
-
|
|
876
|
-
```
|
|
877
|
-
bizar-dash/src/web/
|
|
878
|
-
├── App.tsx
|
|
879
|
-
├── main.tsx
|
|
880
|
-
├── ui/
|
|
881
|
-
│ ├── index.ts # barrel export
|
|
882
|
-
│ ├── primitives/
|
|
883
|
-
│ ├── controls/
|
|
884
|
-
│ ├── feedback/
|
|
885
|
-
│ ├── data/
|
|
886
|
-
│ ├── navigation/
|
|
887
|
-
│ ├── kanban/
|
|
888
|
-
│ ├── popups/
|
|
889
|
-
│ ├── theme/
|
|
890
|
-
│ ├── hooks/
|
|
891
|
-
│ ├── utils/
|
|
892
|
-
│ └── styles/
|
|
893
|
-
│ ├── reset.css
|
|
894
|
-
│ ├── tokens.css # the entire §3, generated from JSON
|
|
895
|
-
│ └── globals.css
|
|
896
|
-
├── views/
|
|
897
|
-
│ ├── Overview/
|
|
898
|
-
│ ├── Tasks/
|
|
899
|
-
│ ├── Goals/
|
|
900
|
-
│ ├── Agents/
|
|
901
|
-
│ ├── Activity/
|
|
902
|
-
│ ├── Memory/
|
|
903
|
-
│ ├── Libraries/
|
|
904
|
-
│ └── Settings/
|
|
905
|
-
├── icons/ # domain-specific Lucide extensions
|
|
906
|
-
├── routes.tsx # TanStack Router route tree
|
|
907
|
-
└── server/ # existing REST API (unchanged)
|
|
908
|
-
```
|
|
909
|
-
|
|
910
|
-
---
|
|
911
|
-
|
|
912
|
-
**End of DESIGN.md — v8.0.0**
|