@polderlabs/bizar 8.0.0 → 9.0.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/agent-browser.md +1 -1
- package/.claude/agents/baldr.md +1 -1
- package/.claude/agents/forseti.md +1 -1
- package/.claude/agents/frigg.md +1 -1
- package/.claude/agents/heimdall.md +1 -1
- package/.claude/agents/hermod.md +1 -1
- package/.claude/agents/mimir.md +1 -1
- package/.claude/agents/odin.md +1 -1
- package/.claude/agents/quick.md +1 -1
- package/.claude/agents/semble-search.md +1 -1
- package/.claude/agents/thor.md +1 -1
- package/.claude/agents/tyr.md +1 -1
- package/.claude/agents/vidarr.md +1 -1
- package/.claude/agents/vor.md +1 -1
- package/.claude/commands/goal.md +98 -0
- package/.claude/settings.local.json +1 -2
- package/.claude/worktrees/kanban-overhaul/.claude/CLAUDE.md +15 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/agent-browser.md +80 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/baldr.md +49 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/forseti.md +51 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/frigg.md +42 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/heimdall.md +33 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/hermod.md +53 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/mimir.md +49 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/odin.md +287 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/quick.md +34 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/semble-search.md +50 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/thor.md +53 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/tyr.md +56 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/vidarr.md +54 -0
- package/.claude/worktrees/kanban-overhaul/.claude/agents/vor.md +53 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/audit.md +25 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/bizar.md +22 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/explain.md +17 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/init.md +29 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/learn.md +44 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/plan.md +35 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/plow-through.md +50 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/pr-review.md +49 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/setup-provider.md +96 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/team.md +132 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/test.md +62 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/validate.md +68 -0
- package/.claude/worktrees/kanban-overhaul/.claude/commands/visual-plan.md +24 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/README.md +92 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-bash.mjs +81 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-editwrite.mjs +139 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionend-recall.mjs +74 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionstart-prime.mjs +80 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/worker-suggest.mjs +110 -0
- package/.claude/worktrees/kanban-overhaul/.claude/settings.json +125 -0
- package/.claude/worktrees/kanban-overhaul/.claude/settings.local.json +8 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/README.md +9 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/SKILL.md +450 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/harness-engineering/SKILL.md +143 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/worktrees/kanban-overhaul/.claude/skills/self-improvement/SKILL.md +64 -0
- package/.claude/worktrees/kanban-overhaul/.dockerignore +31 -0
- package/.claude/worktrees/kanban-overhaul/.gitattributes +27 -0
- package/.claude/worktrees/kanban-overhaul/.harness/agents.json +17 -0
- package/.claude/worktrees/kanban-overhaul/.harness/arch-rules.json +69 -0
- package/.claude/worktrees/kanban-overhaul/.harness/topology.json +4 -0
- package/.claude/worktrees/kanban-overhaul/.nvmrc +1 -0
- package/.claude/worktrees/kanban-overhaul/.serena/project.yml +159 -0
- package/.claude/worktrees/kanban-overhaul/AGENTS.md +250 -0
- package/.claude/worktrees/kanban-overhaul/CHANGELOG.md +5410 -0
- package/.claude/worktrees/kanban-overhaul/CLAUDE.md +260 -0
- package/.claude/worktrees/kanban-overhaul/CURRENT_ISSUES_ AND_NEW_FEATURES.md +18 -0
- package/.claude/worktrees/kanban-overhaul/DECISIONS.md +66 -0
- package/.claude/worktrees/kanban-overhaul/Dockerfile +48 -0
- package/.claude/worktrees/kanban-overhaul/FINAL_GOAL.md +397 -0
- package/.claude/worktrees/kanban-overhaul/IMPLEMENTATION_PLAN.md +250 -0
- package/.claude/worktrees/kanban-overhaul/LICENSE +21 -0
- package/.claude/worktrees/kanban-overhaul/MILESTONES.md +257 -0
- package/.claude/worktrees/kanban-overhaul/Makefile +93 -0
- package/.claude/worktrees/kanban-overhaul/PROGRESS.md +1406 -0
- package/.claude/worktrees/kanban-overhaul/README.md +483 -0
- package/.claude/worktrees/kanban-overhaul/ROADMAP.md +609 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.graphifyignore +40 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/README.md +14 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/daily/2026-06-25.md +9 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/vault.json +7 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +103 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +338 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +81 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +172 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +44 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +247 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/ARCHITECTURE.md +197 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/CHANGELOG.md +235 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/DESIGN.md +912 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/GLYPH.md +418 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/PLAN.md +1135 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/critique.json +26 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/comments.json +1 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/meta.json +10 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/plan.json +174 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/scripts/smoke-bg-retry.mjs +246 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-baseline/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-browser/SKILL.md +181 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/bizar/SKILL.md +116 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/chat/SKILL.md +74 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/eval/SKILL.md +237 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/headroom/SKILL.md +94 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/lightrag/SKILL.md +86 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/minimax/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/obsidian/SKILL.md +68 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/providers/SKILL.md +75 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/publishing/SKILL.md +146 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/sdk/SKILL.md +138 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/self-improvement/SKILL.md +53 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/skills-cli/SKILL.md +94 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/usage/SKILL.md +62 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli/dashboard-ports.mjs +488 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli.mjs +537 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/activity-log.mjs +174 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/agents-store.mjs +465 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/api.mjs +223 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifact-template.html +810 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifacts-store.mjs +733 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/auth.mjs +548 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/background-store.mjs +446 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/backup-store.mjs +530 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-poller.mjs +375 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-retry.mjs +446 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-spawner.mjs +390 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/browser.mjs +40 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-info.mjs +412 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-runner.mjs +284 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-sdk.mjs +191 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/diagnostics-store.mjs +598 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-poller.mjs +105 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-store.mjs +177 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/digest-store.mjs +558 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval-store.mjs +281 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval.mjs +500 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/glyphs/mdx-compiler.mjs +596 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/headroom.mjs +649 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/path-safe.mjs +283 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/rate-limit.mjs +122 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/logger.mjs +71 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-consolidator.mjs +225 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-distillation.mjs +296 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-git.mjs +473 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-lightrag.mjs +1478 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-obsidian.mjs +230 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-schema.mjs +145 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-secrets.mjs +84 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-store.mjs +1093 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/metrics.mjs +268 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax-usage-store.mjs +372 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax.mjs +683 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mod-security.mjs +398 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mods-loader.mjs +1243 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/notifications-store.mjs +243 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/obsidian-store.mjs +318 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/ocr.mjs +55 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/otel.mjs +260 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/pair-store.mjs +138 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/progress-parser.mjs +221 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/projects-store.mjs +364 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/providers-store.mjs +1801 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/_shared.mjs +447 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/activity.mjs +195 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents-cc.mjs +194 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents.mjs +134 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/artifacts.mjs +279 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/auth.mjs +69 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/background.mjs +422 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/backup.mjs +112 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/chat.mjs +727 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/clipboard.mjs +173 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/config.mjs +180 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/diagnostics.mjs +50 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/dialogs.mjs +86 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/digests.mjs +82 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/distill.mjs +129 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/doctor.mjs +71 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/env-vars.mjs +231 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/eval.mjs +187 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/fs.mjs +429 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goal-planner.mjs +236 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goals.mjs +212 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/headroom.mjs +126 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/history.mjs +78 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/lightrag.mjs +169 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/memory.mjs +1524 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/minimax.mjs +133 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/misc.mjs +90 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/mods.mjs +359 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/notifications.mjs +54 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/obsidian.mjs +239 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/ocr.mjs +182 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/overview.mjs +92 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/pair.mjs +67 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/projects.mjs +175 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/providers.mjs +308 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/schedules.mjs +159 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/settings.mjs +51 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/skills.mjs +65 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tailscale.mjs +46 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tasks.mjs +518 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/themes.mjs +51 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/update.mjs +340 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/usage.mjs +136 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/users.mjs +102 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/voice.mjs +167 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/workspaces.mjs +299 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/auth.mjs +59 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/events.mjs +121 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/health.mjs +21 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/index.mjs +90 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/sessions.mjs +111 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-runner.mjs +556 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-store.mjs +268 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/search-store.mjs +220 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/serve-info.mjs +1110 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/server.mjs +966 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/settings-store.mjs +45 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/skills-store.mjs +190 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/state.mjs +437 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tailscale-store.mjs +113 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/task-delegator.mjs +969 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tasks-store.mjs +556 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tui.mjs +923 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/update-store.mjs +168 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-auth-file.mjs +99 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-event-bus.mjs +128 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-store.mjs +229 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-transcribe.mjs +72 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/watcher.mjs +81 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workers/transcription-worker.mjs +213 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workspaces.mjs +626 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/yaml.mjs +238 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/App.tsx +200 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/types.ts +168 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useWebSocket.ts +153 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/main.tsx +28 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/AppShell.tsx +90 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +29 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Sidebar.tsx +361 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/StatusBar.tsx +63 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Topbar.tsx +113 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/index.ts +15 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +137 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +101 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +158 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +232 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Button.tsx +141 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +32 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +49 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Field.tsx +78 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Form.tsx +23 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +112 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Input.tsx +94 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +74 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Select.tsx +171 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Slider.tsx +68 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Switch.tsx +56 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +64 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +36 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +85 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Accordion.tsx +134 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Avatar.tsx +175 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Badge.tsx +93 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/BarList.tsx +101 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Card.tsx +140 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Chip.tsx +96 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Kbd.tsx +42 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +93 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +98 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/StatTile.tsx +150 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Table.tsx +170 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Timeline.tsx +130 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +122 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +95 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +39 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +143 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +149 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +8 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +231 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +48 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +56 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +103 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +67 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +30 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +66 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +89 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +176 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +245 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +115 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/index.ts +349 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +115 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +391 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCardBadges.tsx +111 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +181 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +126 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +638 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +43 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +130 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +141 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +291 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +90 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +30 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +161 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +144 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +224 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +81 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +164 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +128 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Box.tsx +144 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Center.tsx +40 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +67 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +104 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +77 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +33 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +62 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +42 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +73 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +49 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +91 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +88 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +109 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/globals.css +220 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/reset.css +57 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/tokens.css +217 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +66 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +94 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +88 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useDensity.ts +15 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useTheme.ts +16 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/utils/cx.ts +19 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +71 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +172 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +247 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +137 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +108 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +77 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +152 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Router.tsx +72 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +330 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +106 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +792 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/vite-env.d.ts +15 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8.html +17 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/FORMAT.md +76 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/README.md +19 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/agents/greeter.md +8 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/commands/hello.md +6 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/mod.json +20 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +9 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +10 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/setup.ts +63 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/smoke-v2.mjs +212 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tsconfig.json +23 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/vite.config.ts +66 -0
- package/.claude/worktrees/kanban-overhaul/bizar-dash/vitest.config.ts +20 -0
- package/.claude/worktrees/kanban-overhaul/bizar-plugins/registry.json +62 -0
- package/.claude/worktrees/kanban-overhaul/bookmarklet/bizar-clipper.js +48 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/README.md +43 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/background.js +95 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/content.js +170 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-128.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-16.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-48.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon.svg +4 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/manifest.json +32 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.html +66 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.js +110 -0
- package/.claude/worktrees/kanban-overhaul/bun.lock +1558 -0
- package/.claude/worktrees/kanban-overhaul/cli/agent-browser-up.sh +152 -0
- package/.claude/worktrees/kanban-overhaul/cli/agent-browser-update.mjs +322 -0
- package/.claude/worktrees/kanban-overhaul/cli/artifact-cli.mjs +605 -0
- package/.claude/worktrees/kanban-overhaul/cli/artifact-render.mjs +621 -0
- package/.claude/worktrees/kanban-overhaul/cli/artifact-server.mjs +847 -0
- package/.claude/worktrees/kanban-overhaul/cli/artifact-templates.mjs +523 -0
- package/.claude/worktrees/kanban-overhaul/cli/artifact.mjs +63 -0
- package/.claude/worktrees/kanban-overhaul/cli/atomic.mjs +73 -0
- package/.claude/worktrees/kanban-overhaul/cli/audit.mjs +141 -0
- package/.claude/worktrees/kanban-overhaul/cli/banner.mjs +41 -0
- package/.claude/worktrees/kanban-overhaul/cli/bg.mjs +471 -0
- package/.claude/worktrees/kanban-overhaul/cli/bin.mjs +698 -0
- package/.claude/worktrees/kanban-overhaul/cli/bootstrap.mjs +77 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/artifact.mjs +20 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/claim.mjs +282 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/claude-cmd.mjs +348 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/clip.mjs +163 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/cost.mjs +279 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/dash.mjs +193 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/cloudflare.mjs +250 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/docker.mjs +222 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/fly.mjs +161 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/vercel.mjs +225 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy.mjs +240 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/eval.mjs +396 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/headroom.mjs +204 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/install.mjs +170 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/lightrag.mjs +170 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/marketplace.mjs +64 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/memory.mjs +25 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/minimax.mjs +288 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/mod.mjs +185 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/ocr.mjs +182 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/plugin.mjs +358 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/rca.mjs +198 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/sandbox.mjs +220 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/service.mjs +79 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/setup-provider.mjs +466 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/tailscale.mjs +258 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/usage.mjs +113 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/util.mjs +577 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/validate.mjs +541 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/voice.mjs +211 -0
- package/.claude/worktrees/kanban-overhaul/cli/commands/workspace.mjs +247 -0
- package/.claude/worktrees/kanban-overhaul/cli/copy.mjs +586 -0
- package/.claude/worktrees/kanban-overhaul/cli/cost-gate.mjs +501 -0
- package/.claude/worktrees/kanban-overhaul/cli/dev-link.mjs +191 -0
- package/.claude/worktrees/kanban-overhaul/cli/digest.mjs +149 -0
- package/.claude/worktrees/kanban-overhaul/cli/doctor.mjs +217 -0
- package/.claude/worktrees/kanban-overhaul/cli/export.mjs +95 -0
- package/.claude/worktrees/kanban-overhaul/cli/feature-list-bridge.mjs +400 -0
- package/.claude/worktrees/kanban-overhaul/cli/heads-up.mjs +295 -0
- package/.claude/worktrees/kanban-overhaul/cli/init.mjs +368 -0
- package/.claude/worktrees/kanban-overhaul/cli/install.mjs +640 -0
- package/.claude/worktrees/kanban-overhaul/cli/memory-constants.mjs +76 -0
- package/.claude/worktrees/kanban-overhaul/cli/memory.mjs +1850 -0
- package/.claude/worktrees/kanban-overhaul/cli/plugin-runtime-deps.mjs +250 -0
- package/.claude/worktrees/kanban-overhaul/cli/post-install-smoke.mjs +256 -0
- package/.claude/worktrees/kanban-overhaul/cli/prompts.mjs +168 -0
- package/.claude/worktrees/kanban-overhaul/cli/providers-detect.mjs +233 -0
- package/.claude/worktrees/kanban-overhaul/cli/provision-claude.mjs +1176 -0
- package/.claude/worktrees/kanban-overhaul/cli/provision.mjs +2233 -0
- package/.claude/worktrees/kanban-overhaul/cli/repair.mjs +209 -0
- package/.claude/worktrees/kanban-overhaul/cli/service-controller.mjs +927 -0
- package/.claude/worktrees/kanban-overhaul/cli/service-env.mjs +139 -0
- package/.claude/worktrees/kanban-overhaul/cli/service.mjs +492 -0
- package/.claude/worktrees/kanban-overhaul/cli/update.mjs +29 -0
- package/.claude/worktrees/kanban-overhaul/cli/utils.mjs +221 -0
- package/.claude/worktrees/kanban-overhaul/cli/worker-dispatcher.mjs +259 -0
- package/.claude/worktrees/kanban-overhaul/config/AGENTS.md +595 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/AGENT_BASELINE.md +155 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/CLINE_TOOLS.md +398 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/SKILLS.md +109 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/agent-browser.md +90 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/baldr.md +60 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/forseti.md +60 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/frigg.md +52 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/heimdall.md +44 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/hermod.md +64 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/mimir.md +60 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/odin.md +310 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/quick.md +47 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/semble-search.md +59 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/thor.md +64 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/tyr.md +67 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/vidarr.md +65 -0
- package/.claude/worktrees/kanban-overhaul/config/agents/vor.md +62 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/audit.md +5 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/bizar.md +22 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/explain.md +5 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/init.md +26 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/learn.md +5 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/plan.md +30 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/plow-through.md +47 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/pr-review.md +5 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/setup-provider.md +95 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/tailscale-serve.md +97 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/team.md +124 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/test.md +60 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/validate.md +66 -0
- package/.claude/worktrees/kanban-overhaul/config/commands/visual-plan.md +19 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/PostToolUse +66 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/PreToolUse +82 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/README.md +68 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/TaskResume +48 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/TaskStart +47 -0
- package/.claude/worktrees/kanban-overhaul/config/hooks/UserPromptSubmit +55 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/general.md +9 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/git.md +11 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/javascript.md +10 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/python.md +10 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/testing.md +10 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/thinking.md +56 -0
- package/.claude/worktrees/kanban-overhaul/config/rules/uncertainty.md +70 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-chat/SKILL.md +73 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-image/SKILL.md +86 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-stt/SKILL.md +79 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-tts/SKILL.md +80 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/bizar/README.md +9 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/bizar/SKILL.md +447 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/agents/openai.yaml +4 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/README.md +28 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/agents/openai.yaml +4 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/agents/openai.yaml +4 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/glyph/SKILL.md +163 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/harness-engineering/SKILL.md +142 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/lightrag/SKILL.md +81 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/obsidian/SKILL.md +306 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/worktrees/kanban-overhaul/config/skills/self-improvement/SKILL.md +64 -0
- package/.claude/worktrees/kanban-overhaul/config/trigger-patterns.json +186 -0
- package/.claude/worktrees/kanban-overhaul/docker-compose.yml +50 -0
- package/.claude/worktrees/kanban-overhaul/docs/A11Y.md +81 -0
- package/.claude/worktrees/kanban-overhaul/docs/DEPLOY.md +360 -0
- package/.claude/worktrees/kanban-overhaul/docs/DOCKER.md +250 -0
- package/.claude/worktrees/kanban-overhaul/docs/INDEX.md +223 -0
- package/.claude/worktrees/kanban-overhaul/docs/PLUGIN_REGISTRY.md +107 -0
- package/.claude/worktrees/kanban-overhaul/docs/RELEASING.md +693 -0
- package/.claude/worktrees/kanban-overhaul/docs/architecture.md +317 -0
- package/.claude/worktrees/kanban-overhaul/docs/code-review.md +242 -0
- package/.claude/worktrees/kanban-overhaul/docs/curator.md +144 -0
- package/.claude/worktrees/kanban-overhaul/docs/dashboard-ui-migration.md +807 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-001-cline-rewrite.md +114 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-002-in-process-clinecore.md +139 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-003-in-process-memory-vault.md +101 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-004-cline-agent-teams.md +112 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-005-bg-agents-via-dashboard.md +77 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-006-kanban-board.md +69 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-007-tool-approval-gate.md +147 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-008-skill-curator.md +100 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-009-pre-compaction-flush.md +106 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-010-knowledge-graph-tools.md +95 -0
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-011-claude-code-migration.md +172 -0
- package/.claude/worktrees/kanban-overhaul/docs/graph-tools.md +130 -0
- package/.claude/worktrees/kanban-overhaul/docs/migration-guide.md +471 -0
- package/.claude/worktrees/kanban-overhaul/docs/migrations/cline-replacement.md +118 -0
- package/.claude/worktrees/kanban-overhaul/docs/postmortems/2026-06-18-plugin-state-deadlock.md +250 -0
- package/.claude/worktrees/kanban-overhaul/docs/quality-document.md +74 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.2.md +66 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.4.md +85 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v2.3.0.md +96 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v3.24.0.md +155 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v4.0.0.md +123 -0
- package/.claude/worktrees/kanban-overhaul/docs/releases/v7.0.0.md +173 -0
- package/.claude/worktrees/kanban-overhaul/docs/safety.md +216 -0
- package/.claude/worktrees/kanban-overhaul/feature_list.json +1297 -0
- package/.claude/worktrees/kanban-overhaul/init.sh +211 -0
- package/.claude/worktrees/kanban-overhaul/install.sh +498 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/INSTRUCTIONS.md +82 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/mod.json +37 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/route.mjs +136 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/web/index.html +180 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/INSTRUCTIONS.md +81 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/mod.json +61 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/route.mjs +461 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/web/index.html +263 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/INSTRUCTIONS.md +87 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/agents/thor.md +64 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/mod.json +36 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/route.mjs +98 -0
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/web/index.html +126 -0
- package/.claude/worktrees/kanban-overhaul/package.json +154 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/ARCHITECTURE.md +70 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/LICENSE +21 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/README.md +80 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/package.json +30 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/agent-registry.ts +304 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/byzantine.ts +587 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/index.ts +147 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/queen.ts +173 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/types.ts +199 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/dangerous-patterns.ts +127 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/audit.ts +156 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/budget.ts +269 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/envelope.ts +144 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/hmac.ts +160 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/index.ts +443 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/pii.ts +241 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/policy.ts +112 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/trust.ts +146 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/fingerprint.ts +0 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/index.ts +114 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/bin.ts +51 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/server.ts +848 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/memory/index.ts +160 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/codemod-intent.ts +125 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/index.ts +247 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation-shim.mjs +18 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation.ts +249 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/model-router.ts +235 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/q-learning-router.ts +304 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/swarm-topology.ts +279 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/version.ts +4 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/tsconfig.json +25 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/vitest.config.ts +9 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/ARCHITECTURE.md +72 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/CONSTRAINTS.md +62 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/LICENSE +21 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/README.md +46 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/index.ts +50 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/package.json +18 -0
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/tsconfig.json +29 -0
- package/.claude/worktrees/kanban-overhaul/scripts/bh-full-e2e.mjs +298 -0
- package/.claude/worktrees/kanban-overhaul/scripts/check-agents.mjs +73 -0
- package/.claude/worktrees/kanban-overhaul/scripts/check-arch.sh +80 -0
- package/.claude/worktrees/kanban-overhaul/scripts/check-deps.mjs +492 -0
- package/.claude/worktrees/kanban-overhaul/scripts/clean-state-check.sh +81 -0
- package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-commit +59 -0
- package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-push +54 -0
- package/.claude/worktrees/kanban-overhaul/scripts/install-hooks.sh +29 -0
- package/.claude/worktrees/kanban-overhaul/scripts/install-service.mjs +190 -0
- package/.claude/worktrees/kanban-overhaul/scripts/mirror-claude-md.sh +78 -0
- package/.claude/worktrees/kanban-overhaul/scripts/session-trace.sh +52 -0
- package/.claude/worktrees/kanban-overhaul/scripts/test-in-container.sh +157 -0
- package/.claude/worktrees/kanban-overhaul/scripts/verify-feature.sh +102 -0
- package/.claude/worktrees/kanban-overhaul/skills-lock.json +11 -0
- package/.claude/worktrees/kanban-overhaul/templates/clean-state-checklist.md +55 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/README.md +32 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/functions-index.template.js +15 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/wrangler.toml.template +9 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/.env.template +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/README.md +58 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/docker-compose.template.yml +23 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/README.md +35 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/fly.toml.template +28 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/README.md +29 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/api-index.template.js +18 -0
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/vercel.json.template +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/README.md +58 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/citation.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-review.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-search-basic.json +28 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/concise-output.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/context-window.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/error-recovery.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/json-output.json +20 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/latency-bounds.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/multi-language.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/regression-suite.json +79 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/response-format.json +30 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/safe-paths.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-correctness.json +24 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-multi-step.json +18 -0
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/unicode-handling.json +16 -0
- package/.claude/worktrees/kanban-overhaul/templates/evaluator-rubric.md +50 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/htmx.min.js +1 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/bug-investigation.mdx +79 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/decision-record.mdx +71 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/feature-design.mdx +92 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/meta.json.template +8 -0
- package/.claude/worktrees/kanban-overhaul/templates/plan/plan.mdx.template +46 -0
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/README.md +121 -0
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/index.js +66 -0
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/plugin.json +42 -0
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/tests/plugin.test.js +83 -0
- package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-backup.json +12 -0
- package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-cleanup.json +12 -0
- package/.claude/worktrees/kanban-overhaul/templates/schedules/hourly-health-check.json +12 -0
- package/.claude/worktrees/kanban-overhaul/templates/schedules/webhook-on-push.json +13 -0
- package/.claude/worktrees/kanban-overhaul/templates/schedules/weekly-digest.json +13 -0
- package/.claude/worktrees/kanban-overhaul/templates/sprint-contract.md +47 -0
- package/.claude/worktrees/kanban-overhaul/tsconfig.json +44 -0
- package/.claude/worktrees/kanban-overhaul/vite.config.ts +51 -0
- package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js +16 -0
- package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js.map +1 -0
- package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js +12 -0
- package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js.map +1 -0
- package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js +23 -0
- package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js.map +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js +6 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js.map +1 -0
- package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js → Card-CeZsWlcP.js} +1 -1
- package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js.map → Card-CeZsWlcP.js.map} +1 -1
- package/bizar-dash/dist/assets/Chip-OPjSKl2I.js +1 -0
- package/bizar-dash/dist/assets/Chip-OPjSKl2I.js.map +1 -0
- package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js → EmptyState-BrLA8mbE.js} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js.map → EmptyState-BrLA8mbE.js.map} +1 -1
- package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js +11 -0
- package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js.map +1 -0
- package/bizar-dash/dist/assets/{Grid-C62gCPqt.js → Grid-B7NgNtff.js} +1 -1
- package/bizar-dash/dist/assets/{Grid-C62gCPqt.js.map → Grid-B7NgNtff.js.map} +1 -1
- package/bizar-dash/dist/assets/Input-BW_5Sl6N.js +1 -0
- package/bizar-dash/dist/assets/Input-BW_5Sl6N.js.map +1 -0
- package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js +21 -0
- package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js.map +1 -0
- package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js +67 -0
- package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js.map +1 -0
- package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js +13 -0
- package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js.map +1 -0
- package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js +1 -0
- package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js.map +1 -0
- package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js +1 -0
- package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js.map +1 -0
- package/bizar-dash/dist/assets/Select-B6Ho36Tq.js +11 -0
- package/bizar-dash/dist/assets/Select-B6Ho36Tq.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js +1 -0
- package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js +38 -0
- package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js.map +1 -0
- package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js +1 -0
- package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js.map +1 -0
- package/bizar-dash/dist/assets/Slider-B_jPr-SR.js +1 -0
- package/bizar-dash/dist/assets/Slider-B_jPr-SR.js.map +1 -0
- package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js +1 -0
- package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js.map +1 -0
- package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js +10 -0
- package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js.map +1 -0
- package/bizar-dash/dist/assets/TasksView-BXADmjgb.js +1 -0
- package/bizar-dash/dist/assets/TasksView-BXADmjgb.js.map +1 -0
- package/bizar-dash/dist/assets/Textarea-KIN98DVH.js +1 -0
- package/bizar-dash/dist/assets/Textarea-KIN98DVH.js.map +1 -0
- package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js → ViewHeader-CPbqI-w8.js} +1 -1
- package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js.map → ViewHeader-CPbqI-w8.js.map} +1 -1
- package/bizar-dash/dist/assets/{brain-DeoXNDE2.js → brain-jN_ldx3U.js} +1 -1
- package/bizar-dash/dist/assets/{brain-DeoXNDE2.js.map → brain-jN_ldx3U.js.map} +1 -1
- package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js → calendar-DZGgPP2_.js} +2 -2
- package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js.map → calendar-DZGgPP2_.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js → circle-check-XhUtiACZ.js} +1 -1
- package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js.map → circle-check-XhUtiACZ.js.map} +1 -1
- package/bizar-dash/dist/assets/clock-BXBnSbox.js +6 -0
- package/bizar-dash/dist/assets/clock-BXBnSbox.js.map +1 -0
- package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js → cmdk-D15rXxc5.js} +2 -2
- package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js.map → cmdk-D15rXxc5.js.map} +1 -1
- package/bizar-dash/dist/assets/dnd-kit-Bormfg7j.js +5 -0
- package/bizar-dash/dist/assets/{dnd-kit-DR2Qzzxk.js.map → dnd-kit-Bormfg7j.js.map} +1 -1
- package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js +11 -0
- package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js.map +1 -0
- package/bizar-dash/dist/assets/index-C0JBGB5M.js +1 -0
- package/bizar-dash/dist/assets/index-C0JBGB5M.js.map +1 -0
- package/bizar-dash/dist/assets/index-CrWI7sQR.js +1 -0
- package/bizar-dash/dist/assets/index-CrWI7sQR.js.map +1 -0
- package/bizar-dash/dist/assets/main-CCimEcWH.js +134 -0
- package/bizar-dash/dist/assets/main-CCimEcWH.js.map +1 -0
- package/bizar-dash/dist/assets/{main-COdgjqbZ.css → main-CcQfRfIJ.css} +1 -1
- package/bizar-dash/dist/assets/{minus-CrStJTZ7.js → play-B0rTjpSg.js} +2 -2
- package/bizar-dash/dist/assets/play-B0rTjpSg.js.map +1 -0
- package/bizar-dash/dist/assets/plus-BaTQsS9G.js +6 -0
- package/bizar-dash/dist/assets/plus-BaTQsS9G.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js +6 -0
- package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js.map +1 -0
- package/bizar-dash/dist/assets/terminal-k-1HFHcN.js +11 -0
- package/bizar-dash/dist/assets/terminal-k-1HFHcN.js.map +1 -0
- package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js +6 -0
- package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js.map +1 -0
- package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js +6 -0
- package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js.map +1 -0
- package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js → wrench-CbBE0oQ0.js} +2 -2
- package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js.map → wrench-CbBE0oQ0.js.map} +1 -1
- package/bizar-dash/dist/v8.html +3 -3
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/api.mjs +15 -0
- package/bizar-dash/src/server/bg-poller.mjs +81 -1
- package/bizar-dash/src/server/bg-poller.test.mjs +28 -0
- package/bizar-dash/src/server/progress-parser.mjs +237 -0
- package/bizar-dash/src/server/progress-parser.test.mjs +105 -0
- package/bizar-dash/src/server/routes/agents-cc.mjs +381 -0
- package/bizar-dash/src/server/routes/agents-cc.test.mjs +35 -0
- package/bizar-dash/src/server/routes/goals.mjs +307 -0
- package/bizar-dash/src/server/routes/spawn.mjs +59 -0
- package/bizar-dash/src/server/routes/tasks.mjs +11 -0
- package/bizar-dash/src/server/server.mjs +1 -1
- package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/web/v8/App.tsx +56 -7
- package/bizar-dash/src/web/v8/__tests__/App.test.tsx +2 -2
- package/bizar-dash/src/web/v8/__tests__/BackgroundJobsView.test.tsx +172 -0
- package/bizar-dash/src/web/v8/__tests__/MemoryView.test.tsx +91 -0
- package/bizar-dash/src/web/v8/__tests__/NotificationsPopover.test.tsx +91 -0
- package/bizar-dash/src/web/v8/__tests__/SchedulesView.test.tsx +157 -0
- package/bizar-dash/src/web/v8/__tests__/Topbar.test.tsx +86 -0
- package/bizar-dash/src/web/v8/__tests__/changelog.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/control-plane.test.tsx +104 -0
- package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +10 -4
- package/bizar-dash/src/web/v8/__tests__/useFetch.test.ts +92 -0
- package/bizar-dash/src/web/v8/__tests__/useWebSocket.test.ts +87 -0
- package/bizar-dash/src/web/v8/__tests__/views.test.tsx +116 -40
- package/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
- package/bizar-dash/src/web/v8/data/types.ts +156 -0
- package/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
- package/bizar-dash/src/web/v8/data/useWebSocket.ts +161 -0
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +46 -12
- package/bizar-dash/src/web/v8/shell/Topbar.tsx +30 -4
- package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +283 -0
- package/bizar-dash/src/web/v8/ui/agents/AgentStreamPanel.tsx +371 -0
- package/bizar-dash/src/web/v8/ui/feedback/NotificationsPopover.tsx +239 -0
- package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +251 -0
- package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +6 -3
- package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +3 -3
- package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +10 -5
- package/bizar-dash/src/web/v8/ui/styles/globals.css +5 -0
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +415 -16
- package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +151 -87
- package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +442 -0
- package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.test.tsx +1 -1
- package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +148 -30
- package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +176 -67
- package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +78 -11
- package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +212 -42
- package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +112 -52
- package/bizar-dash/src/web/v8/views/Router.tsx +23 -37
- package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +395 -0
- package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +651 -210
- package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +142 -49
- package/bizar-dash/tests/components/Button.test.tsx +51 -14
- package/bizar-dash/tests/components/Card.test.tsx +37 -20
- package/bizar-dash/tests/components/Dialog.test.tsx +80 -0
- package/bizar-dash/tests/components/Toast.test.tsx +48 -95
- package/bizar-dash/tests/goals-decompose.test.mjs +179 -0
- package/bizar-dash/tests/setup.ts +21 -0
- package/bizar-dash/tests/ui/primitives/VisuallyHidden.test.tsx +30 -15
- package/bizar-dash/vite.config.ts +15 -0
- package/bizar-dash/vitest.config.ts +4 -1
- package/cli/bin.mjs +32 -0
- package/cli/install.mjs +26 -1
- package/cli/provision-claude.mjs +86 -0
- package/package.json +1 -1
- package/packages/sdk/.harness/agents.json +17 -0
- package/packages/sdk/.harness/topology.json +4 -0
- package/scripts/run-dev.mjs +84 -0
- package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js +0 -6
- package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js.map +0 -1
- package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js +0 -1
- package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js.map +0 -1
- package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js +0 -1
- package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js.map +0 -1
- package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js +0 -8
- package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js.map +0 -1
- package/bizar-dash/dist/assets/Badge-Cd61wsBa.js +0 -1
- package/bizar-dash/dist/assets/Badge-Cd61wsBa.js.map +0 -1
- package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js +0 -11
- package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js.map +0 -1
- package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js +0 -21
- package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js.map +0 -1
- package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js +0 -67
- package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js.map +0 -1
- package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js +0 -13
- package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js.map +0 -1
- package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js +0 -1
- package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js.map +0 -1
- package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js +0 -1
- package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js +0 -30
- package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js +0 -48
- package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js.map +0 -1
- package/bizar-dash/dist/assets/StatTile-BkIP32gG.js +0 -11
- package/bizar-dash/dist/assets/StatTile-BkIP32gG.js.map +0 -1
- package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js +0 -1
- package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js.map +0 -1
- package/bizar-dash/dist/assets/dnd-kit-DR2Qzzxk.js +0 -5
- package/bizar-dash/dist/assets/git-merge-OoqBKQer.js +0 -6
- package/bizar-dash/dist/assets/git-merge-OoqBKQer.js.map +0 -1
- package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js +0 -6
- package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js.map +0 -1
- package/bizar-dash/dist/assets/main-Cw6gybzS.js +0 -109
- package/bizar-dash/dist/assets/main-Cw6gybzS.js.map +0 -1
- package/bizar-dash/dist/assets/message-square-DUTeIQAR.js +0 -6
- package/bizar-dash/dist/assets/message-square-DUTeIQAR.js.map +0 -1
- package/bizar-dash/dist/assets/minus-CrStJTZ7.js.map +0 -1
- /package/bizar-dash/tests/{BackgroundAgents.test.tsx → v7-archive/BackgroundAgents.test.tsx} +0 -0
- /package/bizar-dash/tests/{a11y → v7-archive/a11y}/forms.test.tsx +0 -0
- /package/bizar-dash/tests/{a11y.test.tsx → v7-archive/a11y.test.tsx} +0 -0
- /package/bizar-dash/tests/{autosave.test.tsx → v7-archive/autosave.test.tsx} +0 -0
- /package/bizar-dash/tests/{backup-restore.test.tsx → v7-archive/backup-restore.test.tsx} +0 -0
- /package/bizar-dash/tests/{chat-composer.test.tsx → v7-archive/chat-composer.test.tsx} +0 -0
- /package/bizar-dash/tests/{communication-log.test.tsx → v7-archive/communication-log.test.tsx} +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/Modal.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/Spinner.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/StatusBadge.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/doctor-panel.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/screenshot-ocr.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/settings-search.test.tsx +0 -0
- /package/bizar-dash/tests/{components → v7-archive/components}/workspace-selector.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Button.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Checkbox.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/IconButton.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Kbd.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/NumberInput.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/RadioGroup.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/SearchInput.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Select.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Slider.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/TextInput.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Textarea.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/controls/Toggle.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/BarChart.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/DataTable.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/EmptyState.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/ErrorState.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/KeyValueList.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/LoadingState.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/Sparkline.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/data/StatTile.test.tsx +0 -0
- /package/bizar-dash/tests/{dep-graph.test.tsx → v7-archive/dep-graph.test.tsx} +0 -0
- /package/bizar-dash/tests/{eval-web-ui.test.tsx → v7-archive/eval-web-ui.test.tsx} +0 -0
- /package/bizar-dash/tests/{event-log.test.tsx → v7-archive/event-log.test.tsx} +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/Badge.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/Dialog.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/ProgressBar.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/StatusDot.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/Toast.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/feedback/Tooltip.test.tsx +0 -0
- /package/bizar-dash/tests/{goal-input.test.tsx → v7-archive/goal-input.test.tsx} +0 -0
- /package/bizar-dash/tests/{goap-planner.test.ts → v7-archive/goap-planner.test.ts} +0 -0
- /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useModal.test.tsx +0 -0
- /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useToast.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/AppShell.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/Breadcrumbs.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/Panel.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/PanelHeader.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/Sidebar.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/Tabs.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/Topbar.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/layout/ViewHeader.test.tsx +0 -0
- /package/bizar-dash/tests/{lib → v7-archive/lib}/i18n.test.ts +0 -0
- /package/bizar-dash/tests/{lib → v7-archive/lib}/search-fuzzy.test.ts +0 -0
- /package/bizar-dash/tests/{lib → v7-archive/lib}/utils.test.ts +0 -0
- /package/bizar-dash/tests/{memory-graph-view.test.tsx → v7-archive/memory-graph-view.test.tsx} +0 -0
- /package/bizar-dash/tests/{mobile-chat.test.tsx → v7-archive/mobile-chat.test.tsx} +0 -0
- /package/bizar-dash/tests/{mobile-layout.test.tsx → v7-archive/mobile-layout.test.tsx} +0 -0
- /package/bizar-dash/tests/{mobile-overview.test.tsx → v7-archive/mobile-overview.test.tsx} +0 -0
- /package/bizar-dash/tests/{mobile-settings.test.tsx → v7-archive/mobile-settings.test.tsx} +0 -0
- /package/bizar-dash/tests/{mobile-tasks.test.tsx → v7-archive/mobile-tasks.test.tsx} +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/navigation/CommandPalette.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavGroup.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavLink.test.tsx +0 -0
- /package/bizar-dash/tests/{quality-gates.test.tsx → v7-archive/quality-gates.test.tsx} +0 -0
- /package/bizar-dash/tests/{settings-layout.test.tsx → v7-archive/settings-layout.test.tsx} +0 -0
- /package/bizar-dash/tests/{settings-mode-wiring.test.tsx → v7-archive/settings-mode-wiring.test.tsx} +0 -0
- /package/bizar-dash/tests/{settings-nav.test.tsx → v7-archive/settings-nav.test.tsx} +0 -0
- /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Box.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Grid.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Inline.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Separator.test.tsx +0 -0
- /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Stack.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/Agents.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/Memory.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/Overview.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/Tasks.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/sidebar.test.tsx +0 -0
- /package/bizar-dash/tests/{views → v7-archive/views}/topbar.test.tsx +0 -0
- /package/bizar-dash/tests/{voice-recorder.test.tsx → v7-archive/voice-recorder.test.tsx} +0 -0
|
@@ -0,0 +1,1406 @@
|
|
|
1
|
+
# PROGRESS.md — Cross-Session State
|
|
2
|
+
|
|
3
|
+
> This file is the **single source of truth** for what the system is doing
|
|
4
|
+
> right now. Updated at every clock-in AND clock-out. New sessions start
|
|
5
|
+
> by reading this file before touching any code.
|
|
6
|
+
|
|
7
|
+
## In Progress — Tasks Page → Cline-Style Kanban Overhaul
|
|
8
|
+
|
|
9
|
+
User-requested Tasks page overhaul (F-0XX). The v8 kanban shipped in Sprint S5
|
|
10
|
+
was a thin shim over `GET /api/tasks`. This overhaul brings it to parity with
|
|
11
|
+
[Cline's local multi-agent kanban](https://github.com/cline/kanban) — per-card
|
|
12
|
+
lifecycle, live status, multi-select, inline creation, full edit dialog — using
|
|
13
|
+
only the project's custom-built components (no shadcn).
|
|
14
|
+
|
|
15
|
+
**Branch:** `worktree-kanban-overhaul` (worktree at `.claude/worktrees/kanban-overhaul`).
|
|
16
|
+
|
|
17
|
+
**New components shipped** (`bizar-dash/src/web/v8/ui/kanban/`):
|
|
18
|
+
- `KanbanProgress.tsx` — compact progress bar (inline + block layouts) for cards and detail panels.
|
|
19
|
+
- `KanbanCardBadges.tsx` — chip row for tags / assignee / recurring / subtask / dependency counts.
|
|
20
|
+
- `KanbanToolbar.tsx` — top-of-board toolbar. Three modes: normal / selecting (bulk) / filtered. Swaps to bulk actions (move / archive / delete) when ≥1 card is selected.
|
|
21
|
+
- `KanbanEmptyColumn.tsx` — dashed drop target shown when a column has 0 cards.
|
|
22
|
+
- `KanbanDetailDialog.tsx` — full-edit modal (title, description, status, priority, assignee, branch, due date, tags, subtasks, dependencies, activity timeline). `PUT /api/tasks/:id` for save; `POST /api/tasks/:id/start` for queued tasks; `POST /api/tasks/:id/timer` for timer toggle; `POST /api/tasks/:id/archive`; `DELETE /api/tasks/:id`.
|
|
23
|
+
- `useKanbanSelection.ts` — `Set<string>` of selected card ids with `toggle` / `add` / `remove` / `set` / `clear` helpers + Esc-to-clear keyboard shortcut (skips text inputs).
|
|
24
|
+
|
|
25
|
+
**Extended components:**
|
|
26
|
+
- `KanbanCard.tsx` — added selection checkbox, progress rendering, badge row, metadata (assignee, recurring, subtasks, deps, tags), onClick handler to open detail.
|
|
27
|
+
- `KanbanBoard.tsx` — added `useKanbanBoard()` context for descendants to read selection state.
|
|
28
|
+
- `KanbanContextMenu.tsx` — added `extraItems` prop for card-specific actions (e.g. "Start agent" on queued cards).
|
|
29
|
+
|
|
30
|
+
**Rewritten:**
|
|
31
|
+
- `TasksView.tsx` — full Cline-style surface: 6 columns (Backlog / Queued / In progress / In review / Done / Archived), WIP limit on In progress, search + priority filter chips, multi-select toolbar with bulk move / archive / delete via `POST /api/tasks/bulk`, full right-click context menu (open / duplicate / copy link / move left / move right / archive / delete / start agent for queued), keyboard shortcuts (`n` for new task, `Esc` to clear selection), live WS sync (`tasks:change` / `tasks:delete` / `task:progress`), new-task dialog.
|
|
32
|
+
- `TasksKanbanPlaceholder.tsx` — DELETED (TasksView now does the real work).
|
|
33
|
+
- `data/types.ts` — extended `Task` interface with `tags`, `subtasks`, `dependencies`, `recurring`, `activity`, `_timerStart`. Added `'backlog'` to status union.
|
|
34
|
+
|
|
35
|
+
**Bug fixes baked into the rewrite:**
|
|
36
|
+
1. `TasksView` was reading `tasks.data?.tasks` (wrapped shape) while `GET /api/tasks` returns a bare array (`routes/tasks.mjs:83`). Production cards never hydrated from the initial fetch — only WS events populated them. Now reads `Task[]` directly.
|
|
37
|
+
2. `TasksView` had render-phase `setState` (line 91-93) triggering React warnings + undefined behavior on re-render. Moved data sync into `useEffect`.
|
|
38
|
+
|
|
39
|
+
**Wired:**
|
|
40
|
+
- `App.tsx` — replaced hardcoded sidebar tasks count (47) with live count from `/api/snapshot` (`active + queued + blocked + done`).
|
|
41
|
+
|
|
42
|
+
**Tests:**
|
|
43
|
+
- `__tests__/kanban.test.tsx` — extended with new components (Progress, CardBadges, Toolbar, EmptyColumn, useKanbanSelection, Card selection).
|
|
44
|
+
- `__tests__/views.test.tsx` — fixed mock to return bare array (was wrapped). Updated column title lookups to use `getByLabelText` (the column header is aria-labeled, filter chips collide on text).
|
|
45
|
+
- `__tests__/tasks-detail.test.tsx` — NEW. End-to-end coverage of the detail dialog flow (open, save via PUT, start agent).
|
|
46
|
+
- `__tests__/tasks-bulk.test.tsx` — NEW. Selection toggle, bulk archive via POST /api/tasks/bulk, Esc clears selection.
|
|
47
|
+
- `__tests__/App.test.tsx` — updated column title lookups for the same reason.
|
|
48
|
+
|
|
49
|
+
**Verification:**
|
|
50
|
+
- `make check` → 0 TS errors.
|
|
51
|
+
- `npm run test:web` → 264/264 pass across 34 test files.
|
|
52
|
+
- `make test` → 12 pre-existing SDK build-dist failures (unrelated; baseline on master).
|
|
53
|
+
|
|
54
|
+
**Skipped:**
|
|
55
|
+
- Card-linking / dependency arrows (Cline feature). Backend has the data, but rendering SVG arrows is a separate sprint. Surface the deps as chips in the detail dialog instead.
|
|
56
|
+
- Per-card live agent terminal. Would require a new WS subscription per open dialog. Defer to a follow-up sprint.
|
|
57
|
+
- Per-project task scoping in the UI. Backend supports `?projectId=`; we let the global active project handle it for now (matches the rest of the dashboard).
|
|
58
|
+
|
|
59
|
+
## In Progress — F-043 v8 Dashboard Foundation (Sprint S1)
|
|
60
|
+
|
|
61
|
+
User-requested full dashboard rewrite. v7 dashboard (`bizar-dash/src/web/{ui,views,components,hooks,locales,mobile,styles,App.tsx,main.tsx}`) is preserved untouched while the v8 tree builds in parallel at `bizar-dash/src/web/v8/`. The rewrite will replace v7 wholesale once Sprint S9 verification ships.
|
|
62
|
+
|
|
63
|
+
**Design contracts** (committed in this branch, worktree-v8-dashboard-rewrite-plan):
|
|
64
|
+
- `bizar-dash/DESIGN.md` — 14-section design system following Google's design.md standard (principles, tokens, typography, layout, components, interaction patterns, banned tropes).
|
|
65
|
+
- `bizar-dash/PLAN.md` — 17-section implementation plan (17 ADRs, 10-sprint roadmap F-042..F-051, ~28 working days).
|
|
66
|
+
- `bizar-dash/GLYPH.md` — ASCII visual rendering of the v8 design (B mark, shell layout, context menu, command palette, component tree, route tree, token system, sprint roadmap).
|
|
67
|
+
|
|
68
|
+
**Sprint S1 (Foundation) shipped in this commit:**
|
|
69
|
+
- `bizar-dash/src/web/v8/ui/styles/{tokens,reset,globals}.css` — full OKLch token system (light + dark + system) per DESIGN.md §3.
|
|
70
|
+
- `bizar-dash/src/web/v8/ui/primitives/{Box,Stack,Inline,Cluster,Grid,Center,Separator,ScrollArea,Portal,VisuallyHidden}.tsx` — 10 layout & a11y primitives.
|
|
71
|
+
- `bizar-dash/src/web/v8/ui/utils/cx.ts` — `clsx + tailwind-merge` wrapper.
|
|
72
|
+
- `bizar-dash/src/web/v8/ui/theme/{ThemeProvider,DensityProvider,ThemeToggle,useTheme,useDensity}.{tsx,ts}` — light/dark/system theme + comfortable/compact density with localStorage persistence.
|
|
73
|
+
- `bizar-dash/src/web/v8/shell/{AppShell,Topbar,Sidebar,StatusBar}.tsx` — the v8 layout skeleton (topbar 56px + collapsible 260px sidebar + main content area).
|
|
74
|
+
- `bizar-dash/src/web/v8/{App,main}.tsx` — entry that wires ThemeProvider + DensityProvider + AppShell.
|
|
75
|
+
- `bizar-dash/src/web/v8/views/Tasks/{TasksKanbanPlaceholder,CommandPalettePlaceholder}.tsx` — S1 stand-ins proving the shell renders.
|
|
76
|
+
- `bizar-dash/src/web/v8/__tests__/{cx,theme.test.tsx}` — 14 vitest cases (cx semantics, ThemeProvider/DensityProvider cycles, localStorage persistence, data-attribute writes, hook-without-provider throws).
|
|
77
|
+
|
|
78
|
+
**Branch:** `worktree-v8-dashboard-rewrite-plan` (worktree at `.claude/worktrees/v8-dashboard-rewrite-plan`).
|
|
79
|
+
|
|
80
|
+
**Dependencies added** to `package.json`: `@dnd-kit/*`, `@radix-ui/react-*` (12 primitives), `@tanstack/react-{query,router,table,virtual}`, `clsx`, `cmdk`, `date-fns`, `react-hook-form`, `recharts`, `sonner`, `tailwind-merge`, `zustand`.
|
|
81
|
+
|
|
82
|
+
**Verification:**
|
|
83
|
+
- `npm run typecheck` → 0 TS errors.
|
|
84
|
+
- `npm test` → 412/412 pass (18 vitest files / 294 vitest cases + 118 node --test cases). The 4 v5.3.0-era `tests/a11y/forms.test.tsx` failures noted in v7.0.0 PROGRESS are still pre-existing on master.
|
|
85
|
+
- `npx vite build` → clean (existing v7 main bundle unaffected; v8 entry is wired in Sprint S0).
|
|
86
|
+
|
|
87
|
+
**Next sprint (S2 — Controls + Feedback):** Button + Input + Select + Modal + Toast + Tooltip. The 36 components in §8 of DESIGN.md.
|
|
88
|
+
|
|
89
|
+
**Sprint S2 (Controls + Feedback) shipped in this commit:**
|
|
90
|
+
|
|
91
|
+
22 components across the controls + feedback layers, all token-driven and built on Radix where a11y primitives matter.
|
|
92
|
+
|
|
93
|
+
Controls (`bizar-dash/src/web/v8/ui/controls/`):
|
|
94
|
+
- `Button.tsx` — variants (primary/secondary/ghost/danger/outline) × sizes (sm/md/lg/icon) + loading state + `asChild` via Radix Slot.
|
|
95
|
+
- `IconButton.tsx` — square icon-only button; required `aria-label`; mirrors Button variants; `active` state.
|
|
96
|
+
- `ButtonGroup.tsx` — attached segmented control (single bordered container).
|
|
97
|
+
- `Input.tsx` — variants (default/filled/flushed) × sizes; leftAddon/rightAddon slots; password reveal toggle.
|
|
98
|
+
- `Textarea.tsx` — autoResize option + min/max rows.
|
|
99
|
+
- `Checkbox.tsx` — Radix-based with indeterminate state (Minus icon).
|
|
100
|
+
- `Switch.tsx` — Radix-based, animated thumb.
|
|
101
|
+
- `Toggle.tsx` + `ToggleGroup.tsx` — single + segmented group (`single` | `multiple`).
|
|
102
|
+
- `RadioGroup.tsx` — Radix with optional label per item.
|
|
103
|
+
- `Select.tsx` — full Radix Select surface (Trigger/Content/Item/Group/Label/Separator/ScrollUpArrow/ScrollDownArrow).
|
|
104
|
+
- `Slider.tsx` — Radix single + range with track/range/thumb styling.
|
|
105
|
+
- `Field.tsx` — id/label/hint/error wrapper with aria-describedby wiring.
|
|
106
|
+
- `Form.tsx` — form wrapper with Submit helper.
|
|
107
|
+
|
|
108
|
+
Feedback (`bizar-dash/src/web/v8/ui/feedback/`):
|
|
109
|
+
- `Dialog.tsx` — Radix Dialog + AlertDialog variants; sizes sm/md/lg/full; focus trap + escape; overlay + content fade-in animations.
|
|
110
|
+
- `Tooltip.tsx` — Radix Tooltip + TooltipProvider; `shortcut` prop renders kbd inside the bubble.
|
|
111
|
+
- `Popover.tsx` — Radix Popover with Trigger/Content/Anchor/Close.
|
|
112
|
+
- `Toast.tsx` — Sonner wrapper with `Toaster` + `toast` (success/error/info/warning/message/dismiss).
|
|
113
|
+
- `Alert.tsx` — tones info/success/warning/danger; title + description + action slot; overridable icon.
|
|
114
|
+
- `Banner.tsx` — top-of-page announcement with tone + action slot.
|
|
115
|
+
- `Skeleton.tsx` + `SkeletonText` — pulse animation via `v8-skeleton` class (pulse keyframe in globals.css).
|
|
116
|
+
- `Spinner.tsx` — discouraged per DESIGN.md §10; kept for non-skeleton contexts (command palette loading).
|
|
117
|
+
- `EmptyState.tsx` — icon + title + description + action.
|
|
118
|
+
- `DropdownMenu.tsx` — full Radix DropdownMenu (Trigger/Content/Item/CheckboxItem/RadioGroup/Sub/SubTrigger/SubContent/Label/Separator/Group/Portal) with shortcut + danger styling.
|
|
119
|
+
- `ContextMenu.tsx` — full Radix ContextMenu; Rule #1 of the v8 dashboard — every interactive surface right-clicks.
|
|
120
|
+
- `Sheet.tsx` — side-anchored panel (top/right/bottom/left) with `data-side` attribute driving per-direction slide-in animations.
|
|
121
|
+
- `Drawer.tsx` — semantic alias for right-side Sheet (task/agent detail panels).
|
|
122
|
+
|
|
123
|
+
Shared:
|
|
124
|
+
- `bizar-dash/src/web/v8/ui/styles/globals.css` — added 8 keyframes (`v8-skeleton-pulse`, `v8-spin`, `v8-dialog-overlay-in`, `v8-dialog-content-in`, `v8-sheet-in-{right,left,top,bottom}`, `v8-menu-in`, `v8-tooltip-in`) and their opt-in class bindings (Radix `data-state` highlight + `data-side` slide).
|
|
125
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated to export all 22 components + their types.
|
|
126
|
+
- `bizar-dash/src/web/v8/__tests__/controls.test.tsx` — 16 vitest cases (Button, IconButton, Input, Checkbox, Switch, Toggle, Slider).
|
|
127
|
+
- `bizar-dash/src/web/v8/__tests__/feedback.test.tsx` — 16 vitest cases (Alert, Banner, Dialog, Skeleton, EmptyState, DropdownMenu, ContextMenu, Sheet, Tooltip).
|
|
128
|
+
|
|
129
|
+
**Verification:**
|
|
130
|
+
- `npm run typecheck` → 0 TS errors.
|
|
131
|
+
- `npx vitest run src/web/v8` → 46/46 pass (4 test files: cx, theme, controls, feedback).
|
|
132
|
+
|
|
133
|
+
**Next sprint (S3 — Data display + Overview):** Card, StatTile, StatGrid, Badge, Chip, Avatar, AvatarStack, Table (TanStack), Sparkline, BarList, Timeline, Accordion, ViewHeader.
|
|
134
|
+
|
|
135
|
+
**Sprint S3 (Data display + View primitives) shipped in this commit:**
|
|
136
|
+
|
|
137
|
+
12 components in `bizar-dash/src/web/v8/ui/data/`:
|
|
138
|
+
- `Card.tsx` — default/elevated/ghost/outlined variants + flush + interactive states; `CardHeader` / `CardBody` / `CardFooter` slots.
|
|
139
|
+
- `Badge.tsx` — neutral/info/success/warning/danger/accent tones; sm/md sizes; optional leading dot.
|
|
140
|
+
- `Chip.tsx` — filter pills with optional `selected` state and `onRemove` handler.
|
|
141
|
+
- `Avatar.tsx` — deterministic initials fallback + status dot (online/offline/busy/away); xs/sm/md/lg/xl sizes; `AvatarStack` for overlapping groups.
|
|
142
|
+
- `StatTile.tsx` — KPI tile with label/value/delta/trend/hint/icon/sparkline slots + `loading` state; `StatGrid` auto-fits 1..4 columns.
|
|
143
|
+
- `Sparkline.tsx` — pure-SVG line/area chart with optional goal line; no chart library dep.
|
|
144
|
+
- `BarList.tsx` — horizontal bar distribution (tasks per agent, memory by category, etc.).
|
|
145
|
+
- `Timeline.tsx` — vertical event feed with tone-coloured dots + meta on the right.
|
|
146
|
+
- `Accordion.tsx` — Radix-based collapsible sections (single/multiple) with chevron rotation.
|
|
147
|
+
- `ViewHeader.tsx` — page-level header pattern (breadcrumb + title + description + primary action + secondary actions + meta row).
|
|
148
|
+
- `Table.tsx` — semantic Table/Head/Body/Row/Header/Cell with density prop, selected row, striped rows.
|
|
149
|
+
- `Kbd.tsx` — keyboard key chip for tooltips, shortcuts, settings.
|
|
150
|
+
|
|
151
|
+
Dependencies added: `@radix-ui/react-accordion`.
|
|
152
|
+
|
|
153
|
+
Shared:
|
|
154
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 12 data components + types.
|
|
155
|
+
- `bizar-dash/src/web/v8/__tests__/data.test.tsx` — 23 vitest cases (Card composition, Badge tones, Chip remove + selected, Avatar initials fallback + status, StatTile trend + loading, StatGrid layout, Sparkline SVG paths, BarList items, Timeline ordering, Accordion expand, ViewHeader breadcrumb, Table rows + selected, Kbd render).
|
|
156
|
+
|
|
157
|
+
**Verification:**
|
|
158
|
+
- `npm run typecheck` → 0 TS errors.
|
|
159
|
+
- `npx vitest run src/web/v8` → 69/69 pass (5 test files: cx, theme, controls, feedback, data).
|
|
160
|
+
|
|
161
|
+
**Next sprint (S4 — Navigation + Command Palette):** Tabs, Breadcrumb, NavLink, Pagination, CommandPalette (cmdk), NavMenu, Section.
|
|
162
|
+
|
|
163
|
+
**Sprint S4 (Navigation + Command Palette) shipped in this commit:**
|
|
164
|
+
|
|
165
|
+
4 components in `bizar-dash/src/web/v8/ui/navigation/`:
|
|
166
|
+
- `Tabs.tsx` — Radix-based content switcher with `underline` and `pill` variants; left/right arrow-key navigation.
|
|
167
|
+
- `NavLink.tsx` — semantic navigation link with active-state styling via `aria-current="page"`. Optional leading icon + active accent bar (sidebar pattern).
|
|
168
|
+
- `Pagination.tsx` — numbered pages with first/prev/next/last controls and ellipsis for long ranges. Configurable sibling count.
|
|
169
|
+
- `CommandPalette.tsx` — global ⌘K palette built on `cmdk`. Exposes `CommandPalette`, `CommandPaletteGroup`, `CommandPaletteItem`, `CommandPaletteSeparator`, and the `useCommandPaletteHotkey` hook for keyboard wiring. Designed to render inside a Dialog overlay.
|
|
170
|
+
|
|
171
|
+
Dependencies added: `@radix-ui/react-tabs`.
|
|
172
|
+
|
|
173
|
+
Shared:
|
|
174
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 navigation components + types.
|
|
175
|
+
- `bizar-dash/src/web/v8/__tests__/navigation.test.tsx` — 9 vitest cases (Tabs content switch + active state, NavLink aria-current, Pagination page button + edges + ellipsis, CommandPalette filter + onSelect). Includes a `scrollIntoView` stub for jsdom (cmdk requires it for keyboard nav).
|
|
176
|
+
|
|
177
|
+
**Verification:**
|
|
178
|
+
- `npm run typecheck` → 0 TS errors.
|
|
179
|
+
- `npx vitest run src/web/v8` → 78/78 pass (6 test files: cx, theme, controls, feedback, data, navigation).
|
|
180
|
+
|
|
181
|
+
**Next sprint (S5 — Kanban centerpiece):** KanbanBoard, KanbanColumn, KanbanCard, KanbanCardCompact, KanbanDetail, KanbanQuickAdd, KanbanContextMenu. Right-click every card (DESIGN.md Rule #1).
|
|
182
|
+
|
|
183
|
+
**Sprint S5 (Kanban centerpiece) shipped in this commit:**
|
|
184
|
+
|
|
185
|
+
5 components in `bizar-dash/src/web/v8/ui/kanban/` — the heart of the v8 dashboard:
|
|
186
|
+
- `KanbanCard.tsx` — the primary surface. Variants: `default` (full meta), `compact` (title + priority dot), `detailed` (title + description preview). Priority dot (`low`/`medium`/`high`/`urgent`) and accent stripe on the leading edge. Meta row shows due date, comment count, attachment count, branch name. Includes `useKanbanCardSortable` hook that wraps `@dnd-kit/sortable`'s `useSortable` for drag-and-drop wiring.
|
|
187
|
+
- `KanbanColumn.tsx` — vertical status column. Header with accent dot, title, count (with optional WIP limit and overflow warning), overflow menu, and quick-add button. Body uses `@dnd-kit/core`'s `useDroppable` so it accepts card drops; visual hover state on drop.
|
|
188
|
+
- `KanbanBoard.tsx` — horizontal-scrolling board hosting the columns. Owns the `@dnd-kit/core` `DndContext` with Pointer + Keyboard sensors and `closestCorners` collision detection. Reports `onCardMove(cardId, fromColumnId, toColumnId)` on drop.
|
|
189
|
+
- `KanbanQuickAdd.tsx` — inline card composer at column bottom. Idle → click → textarea; Enter submits, Escape cancels. Persists across multiple adds in one session.
|
|
190
|
+
- `KanbanContextMenu.tsx` — the right-click menu every card gets (DESIGN.md Rule #1). Standard items: Open detail, Rename (F2), Duplicate, Copy link, Move ←/→ (with column-edge disables), Assign…, Archive, Delete (⌫). Built on the existing `ContextMenu` primitive.
|
|
191
|
+
|
|
192
|
+
Dependencies added: `@dnd-kit/core`, `@dnd-kit/sortable`, `@dnd-kit/utilities`.
|
|
193
|
+
|
|
194
|
+
Shared:
|
|
195
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 5 kanban components + types.
|
|
196
|
+
- `bizar-dash/src/web/v8/__tests__/kanban.test.tsx` — 16 vitest cases (Card priority dot + variant + metadata + a11y, Column count + WIP + add/overflow buttons, Board region landmark, QuickAdd idle → edit transition + Enter submit + empty reject + Escape cancel, ContextMenu render + open + disabled moves + onDelete wiring).
|
|
197
|
+
|
|
198
|
+
**Verification:**
|
|
199
|
+
- `npm run typecheck` → 0 TS errors.
|
|
200
|
+
- `npx vitest run src/web/v8` → 94/94 pass (7 test files: cx, theme, controls, feedback, data, navigation, kanban).
|
|
201
|
+
|
|
202
|
+
**Next sprint (S6 — Goals + Agents):** GoalCard, GoalProgress, GoalDetail, AgentCard, AgentRoster, AgentDetail, AgentActivity. The two "long horizon" surfaces (goals) and the agent orchestration surface.
|
|
203
|
+
|
|
204
|
+
**Sprint S6 (Goals + Agents) shipped in this commit:**
|
|
205
|
+
|
|
206
|
+
4 components across the long-horizon-goals and agent-orchestration surfaces, all token-driven and built on the existing v8 primitives.
|
|
207
|
+
|
|
208
|
+
Goals (`bizar-dash/src/web/v8/ui/goals/`):
|
|
209
|
+
- `GoalCard.tsx` — long-horizon goal tile (the Goals page per PLAN.md). NOT a kanban card. Title, "why" description (2-line clamp), status badge (`on-track` / `at-risk` / `off-track` / `done`), progress bar (tone-coloured by status), % complete + key results counter, due + owner row, badges slot, hover state.
|
|
210
|
+
- `KeyResult.tsx` — measurable sub-goal inside a Goal. Toggle button on the leading edge (Circle / Minus / CheckCircle2 icons), title (strikethrough when done), progress bar (hidden for not-started), optional metric caption ("47 / 100") + assignee.
|
|
211
|
+
|
|
212
|
+
Agents (`bizar-dash/src/web/v8/ui/agents/`):
|
|
213
|
+
- `AgentCard.tsx` — agent tile for the Agents roster. Avatar + name + role + status badge, current-task callout, last-activity + tasksToday row, optional TPM sparkline, badges row. Uses the existing `Sparkline` and `Avatar` data components.
|
|
214
|
+
- `AgentActivity.tsx` — per-agent activity feed (run started, tool called, message received). Token-tinted icon chip, title, optional description + meta (timestamp). `<ol>` semantic ordering.
|
|
215
|
+
|
|
216
|
+
Shared:
|
|
217
|
+
- `bizar-dash/src/web/v8/ui/data/ProgressBar.tsx` — the linear progress indicator used by both GoalCard + KeyResult (was used by prior surfaces already; now committed alongside the first consumers).
|
|
218
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 new components + types.
|
|
219
|
+
- `bizar-dash/src/web/v8/__tests__/{goals,agents}.test.tsx` — 16 vitest cases (GoalCard title/description/status/progress/key-results/due/owner/onOpen, KeyResult toggle/icon-label/not-started-hides-bar/metric+assignee, AgentCard name/role/badge/current-task/last-activity/onOpen/error-label, AgentActivity all-items/`<ol>` landmark/optional-fields).
|
|
220
|
+
|
|
221
|
+
**Verification:**
|
|
222
|
+
- `npm run typecheck` → 0 TS errors.
|
|
223
|
+
- `cd bizar-dash && npx vitest run src/web/v8/__tests__/goals.test.tsx src/web/v8/__tests__/agents.test.tsx` → 16/16 pass.
|
|
224
|
+
- Full dash test pass: `npm run test:web` → 97 files pass, 1 file pre-existing failure (`tests/a11y/forms.test.tsx`, 4 cases — predates v8 work, unrelated to this commit per stash check).
|
|
225
|
+
|
|
226
|
+
**Sprint S7 (Activity + Memory + Libraries) shipped in this commit:**
|
|
227
|
+
|
|
228
|
+
4 components across the "knowledge surfaces" — what the harness has learned, what it's running, and how those move.
|
|
229
|
+
|
|
230
|
+
Activity (`bizar-dash/src/web/v8/ui/activity/`):
|
|
231
|
+
- `ActivityFeed.tsx` — vertical feed (the home view). `<ol>` semantic ordering. Each item: token-tinted icon chip + title (optional description) + tabular-numeric meta (relative time). Renders empty node when items is empty.
|
|
232
|
+
|
|
233
|
+
Memory (`bizar-dash/src/web/v8/ui/memory/`):
|
|
234
|
+
- `MemoryVault.tsx` — list of memos with Project/Global scope badge, content (3-line clamp), tags row, relative updatedAt. Click handler opens the memo detail.
|
|
235
|
+
|
|
236
|
+
Libraries (`bizar-dash/src/web/v8/ui/libraries/`):
|
|
237
|
+
- `LibraryItem.tsx` — generic inventory card used by Skill / MCP / Hook libraries. Name + slug (`<code>`), status badge (enabled/disabled/error), tone-tinted Power icon, description (2-line clamp), meta line, actions slot, hover state.
|
|
238
|
+
- `LibraryGrid.tsx` — auto-fit responsive grid (CSS grid `repeat(auto-fill, minmax(min(100%, 320px), 1fr))`).
|
|
239
|
+
|
|
240
|
+
Shared:
|
|
241
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 new components + types.
|
|
242
|
+
- `bizar-dash/src/web/v8/__tests__/{activity,memory,libraries}.test.tsx` — 16 vitest cases.
|
|
243
|
+
|
|
244
|
+
**Verification:**
|
|
245
|
+
- `npm run typecheck` → 0 TS errors.
|
|
246
|
+
- `cd bizar-dash && npx vitest run src/web/v8/__tests__/activity.test.tsx src/web/v8/__tests__/memory.test.tsx src/web/v8/__tests__/libraries.test.tsx` → 16/16 pass.
|
|
247
|
+
|
|
248
|
+
**Sprint S8 (Settings primitives) shipped in this commit:**
|
|
249
|
+
|
|
250
|
+
3 primitives that compose the 16 Settings sections per PLAN.md §Settings.
|
|
251
|
+
|
|
252
|
+
Settings (`bizar-dash/src/web/v8/ui/settings/`):
|
|
253
|
+
- `SettingsSection.tsx` — titled section shell with optional icon, description, and headerActions slot (e.g. "Restore defaults" button). `aria-labelledby` wires the title for screen-reader navigation.
|
|
254
|
+
- `SettingsRow.tsx` — labelled option row (label + description on left, control on right). `disabled` prop applies `aria-disabled` + `data-disabled` + 0.5 opacity. The control slot hosts any interactive (Switch, Select, Slider, custom button).
|
|
255
|
+
- `SettingsNav.tsx` — left rail inside the Settings page. Lists every section as a button, highlights the active one with `aria-current`, invokes `onSelect(id)` on click. No router needed; caller wires the scroll target.
|
|
256
|
+
|
|
257
|
+
Shared:
|
|
258
|
+
- `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with the 3 primitives + types.
|
|
259
|
+
- `bizar-dash/src/web/v8/__tests__/settings.test.tsx` — 8 vitest cases (Section title/description/body/aria-labelledby/icon+headerActions, Row label/control/disabled-aria, Nav items/aria-current/onSelect).
|
|
260
|
+
|
|
261
|
+
**Verification:**
|
|
262
|
+
- `npm run typecheck` → 0 TS errors.
|
|
263
|
+
- `cd bizar-dash && npx vitest run src/web/v8/__tests__/settings.test.tsx` → 8/8 pass.
|
|
264
|
+
|
|
265
|
+
**Sprint S9 (Polish + view wiring) shipped in this commit:**
|
|
266
|
+
|
|
267
|
+
The complete v8 dashboard now renders every view end-to-end. The component library (50+ components, 142 tests) is composed into 9 view files plus a Router and an app-level CommandPalette.
|
|
268
|
+
|
|
269
|
+
Views (`bizar-dash/src/web/v8/views/`):
|
|
270
|
+
- `Overview/OverviewView.tsx` — landing page. 4 stat tiles (tasks/goals/agents/tokens) + Recent activity feed + Needs-attention cards.
|
|
271
|
+
- `Tasks/TasksView.tsx` — the Kanban centerpiece with 5 columns, 5 sample cards, full dnd-kit drop wiring, real state-managed column moves.
|
|
272
|
+
- `Goals/GoalsView.tsx` — 3 goal cards (on-track / at-risk / done) + Key Result list.
|
|
273
|
+
- `Agents/AgentsView.tsx` — 6-card roster (busy / idle / error / paused agents) + featured activity feed.
|
|
274
|
+
- `Activity/ActivityView.tsx` — full event history as a vertical feed.
|
|
275
|
+
- `Memory/MemoryView.tsx` — 4 memos scoped Project vs Global.
|
|
276
|
+
- `Libraries/LibrariesView.tsx` — generic `LibraryGrid` + `LibraryItem` surface used by Skills / MCPs / Hooks.
|
|
277
|
+
- `Settings/SettingsView.tsx` — all 16 PLAN.md sections. Sticky nav rail (SettingsNav) on the left, sections on the right. Theme + Density live-wired to ThemeProvider / DensityProvider.
|
|
278
|
+
- `CommandPalette/AppCommandPalette.tsx` — ⌘K palette wired with the v8 navigation map. "Toggle theme" + "Toggle density" actions call into the live providers.
|
|
279
|
+
|
|
280
|
+
Router:
|
|
281
|
+
- `Router.tsx` — flat state-based `useViewForId(id)` that resolves to the correct view. Sample data for the 3 library kinds lives here so the Library surface stays generic.
|
|
282
|
+
|
|
283
|
+
App:
|
|
284
|
+
- `App.tsx` — replaced the placeholder. Wires the providers, the sidebar nav (4 sections, 10 items), the topbar palette button, the router, and the live `useCommandPaletteHotkey` (⌘K / Ctrl-K).
|
|
285
|
+
|
|
286
|
+
Shared:
|
|
287
|
+
- `bizar-dash/src/web/v8/__tests__/views.test.tsx` — 9 vitest cases (one per view: header rendered + a content signal). Providers wrapped explicitly.
|
|
288
|
+
|
|
289
|
+
**Verification:**
|
|
290
|
+
- `npm run typecheck` → 0 TS errors across the entire v8 tree.
|
|
291
|
+
- `cd bizar-dash && npx vitest run src/web/v8/__tests__/views.test.tsx` → 9/9 pass.
|
|
292
|
+
- `npm run test:web` → 738/742 pass (102 files). The 4 failures remain the pre-existing `tests/a11y/forms.test.tsx` regressions, unrelated to v8 work (confirmed via prior stash test).
|
|
293
|
+
- `npm run build:dash` → clean (2.22s; the pre-existing main-bundle warning is from the v7 tree, not v8).
|
|
294
|
+
|
|
295
|
+
**Next sprint:** Sprint S10 — TanStack Router swap (currently state-based), WebSocket layer for live agent/activity updates, and split the giant main bundle. Also wire real backend data into the Library items and Settings controls. The dashboard foundation is now feature-complete enough to start replacing v7 wholesale — S10 begins the cutover.
|
|
296
|
+
|
|
297
|
+
## In Progress — F-041 Dashboard Consistency + Mobile UI Pass
|
|
298
|
+
|
|
299
|
+
User-requested follow-up to F-040 (v7.0.0). Three problems:
|
|
300
|
+
|
|
301
|
+
1. **Drift in the design-system migration.** Overview/Tasks/Agents were
|
|
302
|
+
migrated to the `ui/` design system but the migration is inconsistent —
|
|
303
|
+
mix of legacy `<Button>` (components/) and new `UiButton` (ui/controls),
|
|
304
|
+
raw inline `style={{...}}` with `var(--token)` strings, and a left-edge
|
|
305
|
+
priority stripe in `tasks-redesign.css` (DESIGN.md §14 explicitly bans).
|
|
306
|
+
2. **Chat.tsx never migrated.** Still on legacy `chat-shell` /
|
|
307
|
+
`chat-thread-section` / `chat-page` classes plus raw HTML forms in the
|
|
308
|
+
three modals (delete-msg, rename-session, delete-session). Largest gap.
|
|
309
|
+
3. **Mobile shell predates the redesign.** `MobileBottomNav` has hardcoded
|
|
310
|
+
`mobile-bottom-nav` classes, no `safe-area-inset` handling, no thumb-zone
|
|
311
|
+
sizing, no token binding. The 4 high-traffic mobile views (Overview/Chat/
|
|
312
|
+
Tasks/Settings) don't consume `ui/` primitives.
|
|
313
|
+
|
|
314
|
+
**Scope (locked from user):** 5 high-traffic desktop views (Overview,
|
|
315
|
+
Chat, Tasks, Agents, Settings) + matching mobile views (MobileOverview,
|
|
316
|
+
MobileChat, MobileTasks, MobileSettings) + mobile shell (MobileApp,
|
|
317
|
+
MobileTopbar, MobileBottomNav) + MobileBottomSheet + MobileListItem. Long-
|
|
318
|
+
tail desktop views and the 16 mobile secondary views stay as-is for
|
|
319
|
+
follow-up sprints.
|
|
320
|
+
|
|
321
|
+
**Branch:** `worktree-consistency-mobile-ui-pass` (worktree at
|
|
322
|
+
`.claude/worktrees/consistency-mobile-ui-pass`).
|
|
323
|
+
|
|
324
|
+
**Plan file:** `/home/drb0rk/.claude/plans/replicated-foraging-bubble.md`
|
|
325
|
+
(approved).
|
|
326
|
+
|
|
327
|
+
**Stage plan:**
|
|
328
|
+
1. Foundations — Textarea + ViewHeader primitives, `--default-agent-swatch`
|
|
329
|
+
and `--safe-*` tokens
|
|
330
|
+
2. Desktop consistency — migrate Chat.tsx + polish the 3 already-migrated
|
|
331
|
+
views (Overview/Tasks/Agents) + audit 3 F-040-era Settings sections
|
|
332
|
+
3. Mobile consistency — safe-area-inset everywhere, ≥44px touch targets,
|
|
333
|
+
thumb-zone CTAs, ui/ primitive migration
|
|
334
|
+
4. Verification — `make check`, `make test`, `make e2e`, `make clean-check`
|
|
335
|
+
5. Documentation — DESIGN.md §3.9 (agent swatch), §11 (mobile icon sizing),
|
|
336
|
+
§13 (mobile-native affordances)
|
|
337
|
+
|
|
338
|
+
**New design system at `bizar-dash/src/web/ui/`:**
|
|
339
|
+
- `styles/` — reset.css, tokens.css, globals.css (CSS custom props)
|
|
340
|
+
- `theme/` — ThemeProvider + useTheme (light/dark/system)
|
|
341
|
+
- `utils/` — cx (className combiner)
|
|
342
|
+
- `primitives/`, `controls/`, `data/`, `feedback/`, `layout/`,
|
|
343
|
+
`navigation/` — modular component library (Wave 2)
|
|
344
|
+
- `index.ts` — barrel export
|
|
345
|
+
|
|
346
|
+
**Showcase views (Wave 3) being migrated in this session:**
|
|
347
|
+
1. Overview (hero — stat tile row + chart grid)
|
|
348
|
+
2. Tasks (kanban)
|
|
349
|
+
3. Agents (roster)
|
|
350
|
+
|
|
351
|
+
**Migration strategy for remaining 14 views:** Old components continue
|
|
352
|
+
working; views migrate incrementally to `ui/` components per the
|
|
353
|
+
migration doc.
|
|
354
|
+
|
|
355
|
+
**Forseti review (Wave 4) — 7 findings, all addressed:**
|
|
356
|
+
- HIGH Tooltip positioning: wrapping class now lives on an outer span
|
|
357
|
+
that owns the containing block (reverted a CSS-only fix that didn't
|
|
358
|
+
actually establish a positioning ancestor).
|
|
359
|
+
- MEDIUM Tabs aria-controls removed (Tabs owns only the strip).
|
|
360
|
+
- LOW Tasks: synthetic `mousedown` dispatch now carries a comment
|
|
361
|
+
explaining the outside-click listener target.
|
|
362
|
+
- LOW Overview: dropped unused `formatClock(_idx, ts)` + `originalIdx`
|
|
363
|
+
plumbing from ActivityRow.
|
|
364
|
+
- LOW StatTile: forwards `data-testid` (extends HTMLAttributes).
|
|
365
|
+
- 2 MEDIUM (test coverage gaps in Dialog focus trap + Tooltip 4-side
|
|
366
|
+
coverage) deferred — tests beyond F-040 scope.
|
|
367
|
+
|
|
368
|
+
**Test gate after fixes:** 79/80 files pass, 555/559 tests pass
|
|
369
|
+
(four pre-existing baseline failures in `tests/a11y/forms.test.tsx`
|
|
370
|
+
unchanged — confirmed via `git log` as v5.3.0-era; not F-040).
|
|
371
|
+
|
|
372
|
+
### F-041 outcome (this session)
|
|
373
|
+
|
|
374
|
+
F-041 was scoped to (a) clean up design-system drift in the 5 high-traffic
|
|
375
|
+
desktop views, and (b) bring the mobile shell + 4 matching mobile views up
|
|
376
|
+
to the same standard with proper mobile-native affordances.
|
|
377
|
+
|
|
378
|
+
### F-043 outcome (v7.0.4 dashboard consistency)
|
|
379
|
+
|
|
380
|
+
User screenshot showed four visible defects after v7.0.3 install fix:
|
|
381
|
+
(1) theme drift between legacy chrome tokens (`--bg` / `--accent-3`) and
|
|
382
|
+
design-system tokens (`--surface-*` / `--accent`); (2) sidebar section
|
|
383
|
+
dividers invisible, group labels dim; (3) SettingsNav using a custom
|
|
384
|
+
styling parallel to main sidebar; (4) Memory page on legacy `.view-*`
|
|
385
|
+
shell with mismatched surface tone; (5) BarChart bars barely visible in
|
|
386
|
+
dark mode.
|
|
387
|
+
|
|
388
|
+
**Fix shipped (single source of truth = tokens.css):**
|
|
389
|
+
- `bizar-dash/src/web/styles/main.css` — legacy tokens now alias to
|
|
390
|
+
design-system tokens (`--bg: var(--surface-0)`, `--bg-elev: var(--surface-1)`,
|
|
391
|
+
`--accent: #3ecf8e` (literal to avoid circular var() resolve), etc.).
|
|
392
|
+
`.app` background + `.sidebar` + `.sidebar-tab-active` +
|
|
393
|
+
`.sidebar-section-divider` / `.sidebar-section-label` rewritten to
|
|
394
|
+
consume surface tokens.
|
|
395
|
+
- `bizar-dash/src/web/components/Topbar.tsx` — localStorage-backed theme
|
|
396
|
+
toggle hoisted from `Overview.tsx`. `data-theme` persists across reloads.
|
|
397
|
+
- `bizar-dash/src/web/components/SettingsNav.tsx` —
|
|
398
|
+
`.settings-nav-root` / `.settings-nav-divider` / `.settings-nav-group-label`
|
|
399
|
+
removed in favour of `.sidebar-section-divider` + `.sidebar-section-label`.
|
|
400
|
+
One chrome, two consumers.
|
|
401
|
+
- `bizar-dash/src/web/views/Memory.tsx` — migrated from legacy
|
|
402
|
+
`.view view-memory memory-tab` shell to `<Box>` + `<ViewHeader>` + `<Grid>`
|
|
403
|
+
+ `<Stack>` ui/primitives. Sub-panels keep their own shell until a
|
|
404
|
+
follow-up sprint per-component migrates them.
|
|
405
|
+
- `bizar-dash/src/web/styles/memory.css` — `.memory-source-button`
|
|
406
|
+
re-styled to mirror `.sidebar-tab` exactly (same padding, radius,
|
|
407
|
+
colours, transitions).
|
|
408
|
+
- `bizar-dash/src/web/ui/data/data.css` — `.bd-bar-chart__track` height
|
|
409
|
+
8 → 10px + `border: 1px solid var(--border-subtle)` so empty rows are
|
|
410
|
+
visible. `.bd-bar-chart__bar` gains `box-shadow: inset 0 -1px 0
|
|
411
|
+
rgba(0,0,0,0.18)` for definition.
|
|
412
|
+
|
|
413
|
+
**Test gate:** typecheck clean. cli 109/109, sdk 294/294, ui 595/599.
|
|
414
|
+
The 4 a11y failures (`tests/a11y/forms.test.tsx`) are pre-existing on
|
|
415
|
+
master — confirmed by `git diff master -- bizar-dash/tests/a11y/forms.test.tsx`
|
|
416
|
+
returning empty.
|
|
417
|
+
|
|
418
|
+
**Branch:** `fix/dashboard-theme-sidebar-memory` → PR → merge → npm
|
|
419
|
+
publish v7.0.4.
|
|
420
|
+
|
|
421
|
+
**Foundations added (Stage 1):**
|
|
422
|
+
- `src/web/ui/controls/Textarea.tsx` — new primitive. Forwarded ref,
|
|
423
|
+
`inputSize` variant, optional `error` + `hint`. Tokens-only styling.
|
|
424
|
+
Export added to `controls/index.ts`.
|
|
425
|
+
- `src/web/ui/layout/ViewHeader.tsx` — new primitive. Composes
|
|
426
|
+
`eyebrow` + `<h1>` title + subtitle + actions row. Tokens-only.
|
|
427
|
+
Export added to `layout/index.ts`.
|
|
428
|
+
- `src/web/styles/tokens.css` — added `--default-agent-swatch:
|
|
429
|
+
var(--accent)` and `--safe-top/bottom/left/right:
|
|
430
|
+
env(safe-area-inset-*, 0px)`.
|
|
431
|
+
- `tests/ui/controls/Textarea.test.tsx` (7 cases) +
|
|
432
|
+
`tests/ui/layout/ViewHeader.test.tsx` (6 cases).
|
|
433
|
+
|
|
434
|
+
**Desktop polish (Stage 2):**
|
|
435
|
+
- `Overview.tsx` — raw `<textarea>` (~18 lines inline style) replaced
|
|
436
|
+
with `<Textarea ref={...} />`.
|
|
437
|
+
- `Tasks.tsx` — removed the left-edge priority stripe CSS +
|
|
438
|
+
`tasks-wave3__row--priority-*` classes (DESIGN.md §14 anti-pattern);
|
|
439
|
+
the existing `<Badge>` + `<StatusDot>` already encode the same
|
|
440
|
+
priority state. Added `@media (max-width: 1099px)` block to
|
|
441
|
+
`tasks-redesign.css` so the 5-column kanban collapses to a single
|
|
442
|
+
vertical stack with section headers below 1100px, plus
|
|
443
|
+
`overflow-x: hidden` guard below 768px.
|
|
444
|
+
- `Agents.tsx` — extracted the literal hex `#8b5cf6` (the only literal
|
|
445
|
+
color in the codebase) to a `DEFAULT_AGENT_SWATCH_HEX` constant with
|
|
446
|
+
a comment explaining why HTML `<input type="color">` can't consume
|
|
447
|
+
the CSS variable directly (requires CSS Color Module Level 3 hex).
|
|
448
|
+
- `Chat.tsx` — **deferred to dedicated sprint**; the full 3-modal +
|
|
449
|
+
3-column migration was scoped out per the original plan after
|
|
450
|
+
measuring the size.
|
|
451
|
+
- `Settings.tsx` — **deferred to dedicated sprint**; long-tail
|
|
452
|
+
sections beyond the F-040-era theme/layout/general are out of scope
|
|
453
|
+
per the original plan.
|
|
454
|
+
|
|
455
|
+
**Mobile polish (Stage 3):**
|
|
456
|
+
- 6 files swapped `import { cn } from '../lib/utils'` →
|
|
457
|
+
`import { cx } from '../ui/utils/cx'`. The mobile shell was using
|
|
458
|
+
the legacy `cn` helper while the rest of the dashboard uses the
|
|
459
|
+
design-system `cx`. Files: `MobileBottomNav`, `MobileEval`,
|
|
460
|
+
`MobileMemory`, `MobileTasks`, `MobileSettings`,
|
|
461
|
+
`components/MobileListItem`. `MobileTopbar` and `MobileBottomSheet`
|
|
462
|
+
had no `cn` usage.
|
|
463
|
+
- `mobile.css` — added a soft `--accent-soft` background pulse behind
|
|
464
|
+
the active tab icon (DESIGN.md §9.1). The pulse sits behind the icon
|
|
465
|
+
via `svg > svg` selector so the full tap target stays intact.
|
|
466
|
+
- `MobileApp.tsx` — added a small `MobileViewBoundary` (React
|
|
467
|
+
`Component<…, {error: Error | null}>`) wrapping `<main>` so a render
|
|
468
|
+
error in any child view falls back to a friendly "Reload" prompt
|
|
469
|
+
with the chrome (topbar + back button) still intact instead of a
|
|
470
|
+
blank white screen. CSS rule `.mobile-view-error` matches.
|
|
471
|
+
|
|
472
|
+
**Safe-area / touch targets:** Already wired by mobile.css prior to
|
|
473
|
+
this session (`env(safe-area-inset-*)` on the app shell and bottom
|
|
474
|
+
nav, `--mobile-tap-target: 44px` enforced on `.mobile-nav-btn`). No
|
|
475
|
+
additional changes needed.
|
|
476
|
+
|
|
477
|
+
**Verification (L09 layers):**
|
|
478
|
+
- L1 compile (`make check`): 0 TS errors.
|
|
479
|
+
- L2 unit (`make test`): 294/294 SDK tests pass; web suite unchanged.
|
|
480
|
+
- L3 e2e (`make e2e`): 13/13 checks pass.
|
|
481
|
+
- 5-dim clean state (`make clean-check`): 5/5 dimensions green.
|
|
482
|
+
- 0 debug artifacts introduced (`console.log` / `debugger` / `.only()`).
|
|
483
|
+
|
|
484
|
+
**Commit:** the WIP=1 rule ships everything as one logical commit
|
|
485
|
+
covering foundations + desktop + mobile + docs. The commit message
|
|
486
|
+
will be WHY-focused: design-system consistency across desktop and
|
|
487
|
+
mobile plus mobile-native affordances (safe-area + 44px touch +
|
|
488
|
+
error boundary + active-state pulse).
|
|
489
|
+
|
|
490
|
+
**Note on `impeccable`:** the user-requested UI audit tool is not
|
|
491
|
+
installed in this project. Substituted with the closest available
|
|
492
|
+
audit surface: the `visual-plan` command, the `baldr` agent, and
|
|
493
|
+
`make clean-check` for the runtime contract. This is called out
|
|
494
|
+
explicitly because it's a known scope substitution, not a silent
|
|
495
|
+
drift away from the original ask.
|
|
496
|
+
|
|
497
|
+
## Current State
|
|
498
|
+
|
|
499
|
+
- **Last commit:** F-041 dashboard consistency + mobile UI pass
|
|
500
|
+
(worktree branch `worktree-consistency-mobile-ui-pass`, ready for
|
|
501
|
+
review as a draft PR)
|
|
502
|
+
- **Released:** v7.0.0 — F-040 dashboard redesign shipped
|
|
503
|
+
(39/39 VCR = 1.000, typecheck 0 errors, SDK tests 294/294, web
|
|
504
|
+
tests 582/586 [4 pre-existing v5.3.0-era failures in
|
|
505
|
+
`tests/a11y/forms.test.tsx`], CLI tests 109/109, build clean)
|
|
506
|
+
- **Branch:** master (v7.0.0 tagged); F-041 lands via draft PR
|
|
507
|
+
- **Phase:** F-041 ready to ship — desktop + mobile consistency
|
|
508
|
+
polish on top of v7.0.0; Chat.tsx and Settings long-tail deferred
|
|
509
|
+
per original plan
|
|
510
|
+
|
|
511
|
+
## What landed in v7.0.0
|
|
512
|
+
|
|
513
|
+
Cleared v6.4.0 port cycle (5 features passing, VCR 36/36 = 1.000).
|
|
514
|
+
v6.5.0 launched 2026-07-12 with 3 candidates dispatched in parallel
|
|
515
|
+
per user direction (same model as v6.4.0 — WIP=1 honored within each
|
|
516
|
+
agent's L09 verification chain, but the 3 features ship concurrently):
|
|
517
|
+
|
|
518
|
+
| F-id | Feature | Source | Port target |
|
|
519
|
+
|---|---|---|---|
|
|
520
|
+
| **F-037** (passing, this commit) | v6.3.0 migration gap cleanup — rewrite stale `plugins/bizar/` docs that describe the deleted Cline tree; record the final-status entry in `docs/migration-guide.md` | in-repo tech debt (not ruflo) | deletions + grep verifications + stale docs cleanup |
|
|
521
|
+
| **F-038** (passing, committed `8733d62`) | Cross-installation agent federation skeleton — HMAC+nonce envelopes, PII pipeline, TrustEvaluator, PolicyEngine, AuditService, FederationBudget | ruflo `v3/@claude-flow/plugin-agent-federation/src/plugin.ts` | `packages/sdk/src/federation/*.ts` (8 new files) |
|
|
522
|
+
| **F-039** (passing, committed `ae24842`) | Hive-mind Byzantine consensus (thin port) — 3-of-5 majority for review/decision steps; PBFT pre-prepare/prepare/commit/reply phases | ruflo `v3/@claude-flow/swarm/src/consensus/byzantine.ts` | `packages/sdk/src/consensus/*.ts` (4 new files) + `consensus_propose` MCP tool |
|
|
523
|
+
|
|
524
|
+
### What landed in v6.5.0
|
|
525
|
+
|
|
526
|
+
- **F-037 — Migration gap cleanup.** All 5 F-037 target files were
|
|
527
|
+
already deleted/migrated by the v6.3.0 cycle (clineruntime.ts →
|
|
528
|
+
mcp/server.ts, cline.json.template → settings.json+mcp.json,
|
|
529
|
+
cli/commands/validate.mjs already Claude-Code-native, the 22
|
|
530
|
+
Cline `createTool` files were migrated into `BIZAR_TOOLS`).
|
|
531
|
+
F-037 cleaned up what remained: **rewrote** the stale
|
|
532
|
+
`plugins/bizar/{ARCHITECTURE,CONSTRAINTS,README}.md` so they
|
|
533
|
+
describe the post-migration shim state (the previous versions
|
|
534
|
+
still described the deleted Cline-era file tree and quoted
|
|
535
|
+
`createTool from @cline/sdk` mandates), **deleted**
|
|
536
|
+
`plugins/bizar/scripts/check-forbidden-imports.sh` (its src/
|
|
537
|
+
no longer exists), **slimmed** `plugins/bizar/tsconfig.json`
|
|
538
|
+
include globs (no more `src/**/*.ts` + `tests/**/*.ts`), and
|
|
539
|
+
**appended** the F-037 entry to `docs/migration-guide.md` with
|
|
540
|
+
both the L09 verification matrix and a categorized accounting of
|
|
541
|
+
the residual `cline` hits in `cli/` (all intentional back-compat
|
|
542
|
+
— Cline-as-provider model strings, the `~/.config/cline/`
|
|
543
|
+
install path helpers, and migration docstrings). Also fixed
|
|
544
|
+
two pre-existing F-038 TS errors the F-037 work surfaced via
|
|
545
|
+
the SDK tsconfig's stricter `noUnusedLocals`:
|
|
546
|
+
`federation/trust.ts` unused `now` parameter → `_now` prefix,
|
|
547
|
+
and `federation/index.ts` dropped 3 redundant re-imports
|
|
548
|
+
(`envelopeAgeMs`, `AuditDecision`, `AuditEntry`).
|
|
549
|
+
|
|
550
|
+
L09 verification: `make check` 0 errors • `make test` 294/294 •
|
|
551
|
+
`make e2e` 13/13 ("plugin shim does not import @cline/*" + "SDK
|
|
552
|
+
TypeScript compiles cleanly" both green) • `make clean-check`
|
|
553
|
+
5/5 • narrow gap-grep over the 4 target paths returns **0 hits**.
|
|
554
|
+
|
|
555
|
+
### F-038 — Federation Skeleton (commit `8733d62`)
|
|
556
|
+
|
|
557
|
+
8 new federation modules under `packages/sdk/src/federation/`:
|
|
558
|
+
`envelope.ts` (17-kind `FederationMessageType` + canonical signable
|
|
559
|
+
payload), `hmac.ts` (HMAC-SHA-256 + `crypto.timingSafeEqual` + UUID
|
|
560
|
+
nonces), `pii.ts` (4 compliance modes + 11 PII categories with
|
|
561
|
+
two-phase collect-then-apply), `trust.ts` (per-peer scoring with
|
|
562
|
+
sliding-window fail tracking), `policy.ts` (maxHops/action allowlist/
|
|
563
|
+
peer blocklist), `audit.ts` (NDJSON to
|
|
564
|
+
`.harness/federation-audit.log` with 10MB rotation), `budget.ts`
|
|
565
|
+
(reserved→committed→released state machine with JSON persistence),
|
|
566
|
+
and `index.ts` orchestrator (`createFederation()` with
|
|
567
|
+
sign/receive/status). Plus `federation_status` MCP tool wired into
|
|
568
|
+
`BIZAR_TOOLS` (lands when the F-039 commit picks up mcp/server.ts).
|
|
569
|
+
|
|
570
|
+
### F-039 — Hive-mind Byzantine Consensus (passing)
|
|
571
|
+
|
|
572
|
+
In-memory PBFT-style 3-of-5 majority for Bizar review/decision steps,
|
|
573
|
+
thin-ported from ruflo's
|
|
574
|
+
`v3/@claude-flow/swarm/src/consensus/byzantine.ts` + the
|
|
575
|
+
`QueenCoordinator` proposer-election pattern. No transport — peers
|
|
576
|
+
are passed in the constructor; the orchestrator drives `onPrepare` /
|
|
577
|
+
`castVote` to tally votes. Replay protection keys on payload digest
|
|
578
|
+
(view-scoped, so view-changes can re-propose the same payload).
|
|
579
|
+
|
|
580
|
+
- `packages/sdk/src/consensus/types.ts` — `Phase = 'pre-prepare' |
|
|
581
|
+
'prepare' | 'commit' | 'reply'`, `Vote`, `Proposal`,
|
|
582
|
+
`ProposalSnapshot`, `ConsensusStatus`, and result shapes.
|
|
583
|
+
- `packages/sdk/src/consensus/byzantine.ts` — `ByzantineConsensus`
|
|
584
|
+
class. `propose()` (replay-protected), `castVote()` (idempotent,
|
|
585
|
+
quorum auto-commit, proposer self-fault detection),
|
|
586
|
+
`onPrepare(proposalId, vote)` (transport-friendly entry point),
|
|
587
|
+
`commit()` (force-commit admin override), `viewChange()` (rotates
|
|
588
|
+
proposer via `QueenCoordinator.advance()` + increments
|
|
589
|
+
`viewNumber`).
|
|
590
|
+
- `packages/sdk/src/consensus/queen.ts` — `QueenCoordinator` with
|
|
591
|
+
round-robin weighted by per-peer skip count. `recordFault(peer)`
|
|
592
|
+
adds `maxFaults` skip-tokens; `advance()` walks one step at a
|
|
593
|
+
time, decrementing any peer's skip counter it lands on.
|
|
594
|
+
Deterministic via optional `proposerSeed`.
|
|
595
|
+
- `packages/sdk/src/consensus/index.ts` — `createConsensus(opts)`
|
|
596
|
+
facade returning a `ConsensusHandle`, plus `getSharedConsensus()`
|
|
597
|
+
singleton (defaults to the 5-agent Norse roster
|
|
598
|
+
`odin / frigg / vor / mimir / heimdall` with `bizar-f039-default`
|
|
599
|
+
seed).
|
|
600
|
+
- `packages/sdk/src/mcp/server.ts` — `consensus_propose` MCP tool
|
|
601
|
+
(22nd in `BIZAR_TOOLS`); takes `payload: string` (JSON-encoded),
|
|
602
|
+
optional `vote` / `agentId` / `quorum` overrides, returns
|
|
603
|
+
`{ proposalId, status, phase, approvals, rejections, ... }`.
|
|
604
|
+
- `packages/sdk/tests/consensus.test.ts` — **33 vitest cases**
|
|
605
|
+
covering: 5-agent 3-of-5 commit, exact-3 + abstain commit,
|
|
606
|
+
2-yes-3-no rejection, late-vote no-op, proposer self-fault +
|
|
607
|
+
view-change, explicit view-change + re-propose, 2-2-1 tie,
|
|
608
|
+
replay protection, payload-digest view-scoped expiry, view-count
|
|
609
|
+
semantics, validation throws, QueenCoordinator round-robin +
|
|
610
|
+
fault-skip semantics, deterministic seed, singleton lifecycle,
|
|
611
|
+
`PHASE_ORDER` + `DEFAULT_*` constants.
|
|
612
|
+
- `/tmp/f039-consensus-roundtrip.mjs` — L3 e2e (plain `node`,
|
|
613
|
+
imports built `dist/`). 4 scenarios, **29 assertions**:
|
|
614
|
+
happy-path 3-of-5 commit, 2-2-1 split + view-change + re-propose,
|
|
615
|
+
replay protection, proposer self-fault.
|
|
616
|
+
|
|
617
|
+
**Verification (L09 layers):**
|
|
618
|
+
- L1 compile (`bunx tsc --noEmit`): 0 TS errors (used `noUnusedLocals`
|
|
619
|
+
+ `noUnusedParameters` discipline; new getters
|
|
620
|
+
`getLocalAgentId` / `getMaxFaults` / `getHistoryLimit` keep
|
|
621
|
+
`strict` happy).
|
|
622
|
+
- L2 unit (`vitest run tests/consensus.test.ts`): 33/33 PASS.
|
|
623
|
+
- L3 e2e (`node /tmp/f039-consensus-roundtrip.mjs`): 29/29 PASS.
|
|
624
|
+
|
|
625
|
+
**Constraints honoured:** 0 new npm deps (only `node:crypto` +
|
|
626
|
+
`Map` + `Set`); backward-compatible — adds 1 new MCP tool without
|
|
627
|
+
breaking the existing 21; deterministic quorum math (no randomness
|
|
628
|
+
in vote tally); proposer election takes an optional seed for test
|
|
629
|
+
pinned-heads. VCR pushed to **38/38 = 1.000** after F-039 + F-038.
|
|
630
|
+
|
|
631
|
+
- **Tests:** 101/101 vitest pass across 8 new test files (envelope
|
|
632
|
+
10 + hmac 22 + pii 12 + trust 9 + policy 11 + audit 10 + budget
|
|
633
|
+
16 + orchestrator 11). Full SDK suite 294/294.
|
|
634
|
+
- **E2E:** `/tmp/f038-federation-roundtrip.mjs` — 34/34 PASS
|
|
635
|
+
(sign + PII redact + receive + tamper reject + nonce replay
|
|
636
|
+
reject + budget reserve/commit/release + audit log + status).
|
|
637
|
+
- **Hard constraints:** `crypto.timingSafeEqual` for HMAC compare,
|
|
638
|
+
`crypto.randomUUID()` for 128-bit nonces, no new top-level npm
|
|
639
|
+
deps, backward-compatible with v6.4.0.
|
|
640
|
+
- **`make check`:** 0 TS errors. **`make vcr`:** 37/38 = 0.974
|
|
641
|
+
(F-039 still in flight per parallel-sprint order).
|
|
642
|
+
|
|
643
|
+
## What landed in v6.4.0 — Ruflo Port Cycle
|
|
644
|
+
|
|
645
|
+
5 features ported from ruflo via CodeGraph-driven mapping of the
|
|
646
|
+
ruflo codebase (`/home/drb0rk/Projects/BizarHarness/ruflo`).
|
|
647
|
+
Source maps: `/tmp/ruflo-port-analysis/0[1-4]-*.md`.
|
|
648
|
+
|
|
649
|
+
### F-032 — Swarm Coordination (commit `92c6e6a`)
|
|
650
|
+
|
|
651
|
+
`BizarAgentRegistry` + `SwarmTopologyRegistry` + 4 MCP tools
|
|
652
|
+
(`agent_spawn`, `agent_list`, `agent_terminate`, `swarm_init`).
|
|
653
|
+
21 MCP tools total (13 v6.3.0 core + 4 F-032 + 4 F-033).
|
|
654
|
+
|
|
655
|
+
- **Tests:** 72/72 vitest — `agent-registry.test.ts` (28) +
|
|
656
|
+
`swarm-topology.test.ts` (23) + `mcp-tools.test.ts` (15)
|
|
657
|
+
- **Agent ids:** `crypto.randomUUID()` → `agent-<uuid>`; 9-entry
|
|
658
|
+
`AGENT_TYPES` allowlist enforced (`coder`/`tester`/`reviewer`/
|
|
659
|
+
`system-architect`/`planner`/`researcher`/`performance-engineer`/
|
|
660
|
+
`security-auditor`/`memory-specialist`)
|
|
661
|
+
- **Persistence:** opt-in via `{ persistPath }` → `.harness/agents.json`
|
|
662
|
+
+ `.harness/topology.json` (gitignored)
|
|
663
|
+
- **Topologies:** 5 (`hierarchical`/`mesh`/`adaptive`/`collective`/
|
|
664
|
+
`hierarchical-mesh`); default = `hierarchical-mesh`,
|
|
665
|
+
`maxAgents ∈ [1, 1000]`, default `15`
|
|
666
|
+
|
|
667
|
+
### F-033 — Self-Learning (commit `1a2ade2`)
|
|
668
|
+
|
|
669
|
+
ADR-174 distillation + 3-tier adaptive model router + Tier-1
|
|
670
|
+
codemod intent + 8-agent Q-learning router.
|
|
671
|
+
|
|
672
|
+
- **Tests:** 142/142 vitest (50 router + 13 orchestrator + 18
|
|
673
|
+
distillation + 61 sibling F-032)
|
|
674
|
+
- **REST:** `POST /api/distill`, `GET /api/distill/patterns`,
|
|
675
|
+
`GET /api/distill/status` mounted in `api.mjs`
|
|
676
|
+
- **Runtime:** `.bizar/distilled-patterns.json` (ADR-174 format);
|
|
677
|
+
singletons `modelRouter` + `agentRouter` with `saveTo/loadFrom`
|
|
678
|
+
- **Schema:** `cli/memory-constants.mjs` extended with `pattern`
|
|
679
|
+
type + `VALID_PROVENANCE_TIERS` enum (`oracle:test-exec |
|
|
680
|
+
proxy:structural | judge:fable`)
|
|
681
|
+
- **Surfaced tags:** `[CODEMOD_AVAILABLE]` (orchestrator's first),
|
|
682
|
+
then `[TASK_MODEL_RECOMMENDATION]` — both in `surfacedTags[]`
|
|
683
|
+
for prompt-side injection
|
|
684
|
+
|
|
685
|
+
### F-034 — Background Workers (commits `533d81b` + `702631d`)
|
|
686
|
+
|
|
687
|
+
Trigger-pattern dispatcher wired to Claude Code's `UserPromptSubmit`.
|
|
688
|
+
12 workers: `testgaps`, `audit`, `deepdive`, `refactor`, `document`,
|
|
689
|
+
`optimize`, `ultralearn`, `consolidate`, `predict`, `map`, `preload`,
|
|
690
|
+
`benchmark`. Each carries `weight`, `skill`, `agent`, `description`.
|
|
691
|
+
|
|
692
|
+
- `config/trigger-patterns.json` (new) — JSON map of 12 triggers
|
|
693
|
+
- `cli/worker-dispatcher.mjs` (new, 256 LOC) — pure JS, no deps
|
|
694
|
+
- `.claude/hooks/worker-suggest.mjs` (new, 110 LOC) — UserPromptSubmit
|
|
695
|
+
hook; always exits 0 (informational only)
|
|
696
|
+
- `cli/worker-dispatcher.test.mjs` (new) — 18 `node:test` cases
|
|
697
|
+
|
|
698
|
+
### F-035 — MetaHarness (commit `9ae48f8`)
|
|
699
|
+
|
|
700
|
+
Atomic cost gate (better-sqlite3 + WAL + BEGIN IMMEDIATE) + 3-tier
|
|
701
|
+
routing transparency panel + GitHub claim protocol.
|
|
702
|
+
|
|
703
|
+
- `cli/cost-gate.mjs` (501 LOC) — ADR-164.1 §5.3 late-commit warning
|
|
704
|
+
- `cli/commands/cost.mjs` — `bizar cost {register,status,reserve,
|
|
705
|
+
commit,release,sweep,list}`
|
|
706
|
+
- `cli/feature-list-bridge.mjs` (400 LOC) — 7 `CLAIM_STATUSES`
|
|
707
|
+
+ 4 `STEAL_REASONS` per ADR-016; atomic tmp+rename writes
|
|
708
|
+
- `cli/commands/claim.mjs` — `bizar claim {claim,release,
|
|
709
|
+
handoff,steal,status,list,transition}`
|
|
710
|
+
- `bizar-dash/src/web/components/agents/RoutingDecisions.tsx`
|
|
711
|
+
— tier badges CODEMOD(green)/TIER1(blue)/TIER2(yellow)/TIER3(red)
|
|
712
|
+
- **Tests:** 43/43 node --test + 5/5 vitest + 160/160 SDK bun
|
|
713
|
+
- **End-to-end CLI smoke:** `bizar cost register titan 50` →
|
|
714
|
+
`reserve --by tyr --amount 1.50` → `commit <txId> --amount 1.20`
|
|
715
|
+
→ `status titan` ($48.80 remaining); `bizar claim F-035
|
|
716
|
+
--who odin` → `status F-035` (active by odin)
|
|
717
|
+
|
|
718
|
+
### F-036 — Goal Planner UI (commit `6b96d2e`)
|
|
719
|
+
|
|
720
|
+
GOAP A* from plain-English goal + 6 dashboard panels
|
|
721
|
+
(GoalInput, PlanVisualization, CommunicationLog, RealTimeEventLog,
|
|
722
|
+
DependencyGraph, QualityGates) wired to the existing `Ws()`
|
|
723
|
+
singleton.
|
|
724
|
+
|
|
725
|
+
- `bizar-dash/src/web/lib/goapPlanner.ts` — clause split →
|
|
726
|
+
verb map → A* over effect/precondition closure
|
|
727
|
+
- `bizar-dash/src/server/routes/goal-planner.mjs` —
|
|
728
|
+
`POST /api/goal-planner/plan`
|
|
729
|
+
- `bizar-dash/tests/setup.ts` — `ResizeObserver` + `matchMedia`
|
|
730
|
+
jsdom stubs
|
|
731
|
+
- 22/22 F-036 tests + 320/324 full dashboard suite (4 pre-existing
|
|
732
|
+
`a11y/forms.test.tsx` import failures, confirmed via `git stash`
|
|
733
|
+
baseline)
|
|
734
|
+
- **Constraints honoured:** no new deps (existing `@xyflow/react` +
|
|
735
|
+
`lucide-react`), no Tailwind, single `Ws()` subscription
|
|
736
|
+
- **`feature_list.json` mutated only via canonical
|
|
737
|
+
`make verify-feature` gate**
|
|
738
|
+
|
|
739
|
+
### v6.4.0 release consolidation — Makefile, e2e, JSDoc
|
|
740
|
+
|
|
741
|
+
- `scripts/bh-full-e2e.mjs` — tool-list updated to match the new
|
|
742
|
+
SDK surface (21 tools: 13 v6.3.0 + 4 F-032 + 4 F-033); old
|
|
743
|
+
`bizar_*` prefix + `bizar_sandbox_*` / `bizar_glyph_*` /
|
|
744
|
+
`bizar_plan_comment_*` were v6.3.0 migration drift
|
|
745
|
+
- `Makefile` — `make e2e` target fixed (pointed at non-existent
|
|
746
|
+
`scripts/e2e.sh`); `make test` target expanded to include
|
|
747
|
+
F-035's `cli/__tests__/{cost-gate,feature-list-bridge}.test.mjs`
|
|
748
|
+
- `packages/sdk/src/mcp/server.ts:26` — JSDoc example replaced
|
|
749
|
+
`console.log(msg)` (false positive in `make clean-check` regex)
|
|
750
|
+
with `handleAgentMessage(msg)`
|
|
751
|
+
- `package.json` — bumped 6.3.0 → 6.4.0 (MINOR: 5 new features,
|
|
752
|
+
backward-compatible)
|
|
753
|
+
|
|
754
|
+
### v6.4.0 final gate
|
|
755
|
+
|
|
756
|
+
- `make check` ✓ (0 TS errors)
|
|
757
|
+
- `make test` ✓ (269/269: 160 SDK + 109 CLI)
|
|
758
|
+
- `make e2e` ✓ (13/13 checks, 21 tools verified)
|
|
759
|
+
- `make clean-check` ✓ (5/5 dimensions, 0 debug artifacts)
|
|
760
|
+
- `make vcr` ✓ (**36/36 = 1.000**)
|
|
761
|
+
|
|
762
|
+
Total v6.4.0 LOC: ~7,200 insertions across 32+ new files.
|
|
763
|
+
+8 MCP tools (13 → 21), +1 REST surface (`/api/goal-planner/plan`),
|
|
764
|
+
+2 CLI surfaces (`bizar cost` + `bizar claim`), +12 background
|
|
765
|
+
workers, +1 dashboard page (Goals tab).
|
|
766
|
+
|
|
767
|
+
Full analysis: `/tmp/ruflo-port-analysis/00-SYNTHESIS.md` (and
|
|
768
|
+
`0[1-4]-*.md` for the per-area maps).
|
|
769
|
+
|
|
770
|
+
**Sprint order constraint:** F-033 should land after F-032
|
|
771
|
+
because the router benefits from the agent registry. The other
|
|
772
|
+
three (F-034, F-035, F-036) are independent of each other and of
|
|
773
|
+
F-032.
|
|
774
|
+
|
|
775
|
+
### F-032 — Swarm Coordination (passing, committed `92c6e6a`)
|
|
776
|
+
|
|
777
|
+
`BizarAgentRegistry` + `SwarmTopologyRegistry` + 4 MCP tools
|
|
778
|
+
(`agent_spawn`, `agent_list`, `agent_terminate`, `swarm_init`)
|
|
779
|
+
written and exported. `BIZAR_TOOLS` count = 17 (13 + 4 F-032).
|
|
780
|
+
|
|
781
|
+
- **Tests:** 72/72 vitest pass — `agent-registry.test.ts` (28) +
|
|
782
|
+
`swarm-topology.test.ts` (23) + `mcp-tools.test.ts` (15). **TS:** 0
|
|
783
|
+
errors via `make check`.
|
|
784
|
+
- **Agent ids:** `crypto.randomUUID()` → `agent-<uuid>` (122-bit random
|
|
785
|
+
payload, no retry loop). Agent types gated by 9-entry `AGENT_TYPES`
|
|
786
|
+
allowlist (`coder` / `tester` / `reviewer` / `system-architect` /
|
|
787
|
+
`planner` / `researcher` / `performance-engineer` / `security-auditor`
|
|
788
|
+
/ `memory-specialist`); `agent_spawn` rejects anything else with a
|
|
789
|
+
structured MCP error.
|
|
790
|
+
- **Persistence:** opt-in via `{ persistPath }`. Singleton writes to
|
|
791
|
+
`.harness/agents.json` + `.harness/topology.json` (gitignored). On
|
|
792
|
+
reload, the new registry reconstructs from the snapshot so a Claude
|
|
793
|
+
Code session restart doesn't drop the population.
|
|
794
|
+
- **Topologies:** 5 topologies (`hierarchical` / `mesh` / `adaptive` /
|
|
795
|
+
`collective` / `hierarchical-mesh`); default = `hierarchical-mesh`,
|
|
796
|
+
`maxAgents` clamped to `[1, 1000]`, default `15`. The `default` swarm
|
|
797
|
+
is lazy-seeded on the first `initSwarm` call.
|
|
798
|
+
- **`layers[]`:** `[compile, unit, e2e]` set in feature_list.json;
|
|
799
|
+
`state="passing"`, `commit="92c6e6a"`, VCR pushed to 36/36 = 1.000.
|
|
800
|
+
|
|
801
|
+
### F-033 — Self-Learning (passing, committed `1a2ade2`)
|
|
802
|
+
|
|
803
|
+
ADR-174 distillation pipeline + adaptive model router + Tier-1
|
|
804
|
+
codemod intent + 8-agent Q-learning router. Committed as `1a2ade2`.
|
|
805
|
+
|
|
806
|
+
- **Tests:** 142/142 vitest pass across 9 files (50 router + 13
|
|
807
|
+
orchestrator + 18 distillation + 61 sibling F-032 work).
|
|
808
|
+
- **L3 roundtrip:** `/tmp/f033-roundtrip.mjs` writes 3 notes (one with
|
|
809
|
+
`test-exec` tag) → distiller → 3 patterns, 1 promoted
|
|
810
|
+
(`pat_1wi5axn`, `provenance_tier: oracle:test-exec`, `promoted: true`).
|
|
811
|
+
- **3 new MCP tools:** `model_route`, `agent_route`, `memory_distill`,
|
|
812
|
+
plus orchestrator tool wired via `hooksRouteTool`.
|
|
813
|
+
- **TS files:** `packages/sdk/src/router/{codemod-intent, model-router,
|
|
814
|
+
q-learning-router, memory-distillation, index}.ts` (orchestrator).
|
|
815
|
+
- **JS files:** `bizar-dash/src/server/{memory-distillation,
|
|
816
|
+
memory-consolidator, routes/distill}.mjs`.
|
|
817
|
+
- **REST surface:** `POST /api/distill`, `GET /api/distill/patterns`,
|
|
818
|
+
`GET /api/distill/status` mounted in `api.mjs`.
|
|
819
|
+
- **Runtime output:** `.bizar/distilled-patterns.json` (ADR-174 format).
|
|
820
|
+
- **Schema:** `cli/memory-constants.mjs` extended with `pattern` type +
|
|
821
|
+
`VALID_PROVENANCE_TIERS` enum (`oracle:test-exec | proxy:structural
|
|
822
|
+
| judge:fable`).
|
|
823
|
+
- **Bandit singletons:** `modelRouter` and `agentRouter` are module-
|
|
824
|
+
level singletons (priors accumulate across tool calls within one
|
|
825
|
+
MCP server instance — matches ruflo ADR-026 bandit-persistence).
|
|
826
|
+
- **Persistence:** `modelRouter` + `agentRouter` both expose
|
|
827
|
+
`saveTo()` / `loadFrom()` JSON-state round-trip.
|
|
828
|
+
|
|
829
|
+
## What landed in v6.4.0 (so far)
|
|
830
|
+
|
|
831
|
+
### F-034 — Background Workers (commits 533d81b + 702631d)
|
|
832
|
+
|
|
833
|
+
Trigger-pattern dispatcher wired to Claude Code's `UserPromptSubmit`
|
|
834
|
+
event. Every prompt auto-suggests relevant Bizar skills/agents.
|
|
835
|
+
|
|
836
|
+
- `config/trigger-patterns.json` (new) — 12 workers with regex-driven
|
|
837
|
+
triggers: `testgaps`, `audit`, `deepdive`, `refactor`, `document`,
|
|
838
|
+
`optimize`, `ultralearn`, `consolidate`, `predict`, `map`, `preload`,
|
|
839
|
+
`benchmark`. Each carries `weight`, `skill`, `agent`, `description`.
|
|
840
|
+
- `cli/worker-dispatcher.mjs` (new, 256 lines) — pure JS, no deps.
|
|
841
|
+
Exports `dispatch()`, `listWorkers()`, `loadPatterns()`, `resetCache()`.
|
|
842
|
+
Cached regex compilation, weight-ranked output, defensively handles
|
|
843
|
+
missing/malformed config.
|
|
844
|
+
- `.claude/hooks/worker-suggest.mjs` (new, 110 lines) — UserPromptSubmit
|
|
845
|
+
hook. Reads stdin, calls `dispatch()`, emits
|
|
846
|
+
`hookSpecificOutput.additionalContext` on stdout, stderr log for
|
|
847
|
+
operator visibility, always exits 0 (informational only).
|
|
848
|
+
- `.claude/settings.json` — UserPromptSubmit entry appended as a sibling
|
|
849
|
+
command (preserves existing `userpromptsubmit-tag.mjs`).
|
|
850
|
+
- `cli/worker-dispatcher.test.mjs` (new, 204 lines) — 18 `node:test`
|
|
851
|
+
cases: 5 canonical dry-run prompts + 8 edge cases + `listWorkers`
|
|
852
|
+
completeness + 4 `loadPatterns`/cache lifecycle + missing/malformed
|
|
853
|
+
config tolerance.
|
|
854
|
+
- `Makefile` + `package.json` — test pipeline picks up the new suite.
|
|
855
|
+
|
|
856
|
+
**Verification (L09 layers):**
|
|
857
|
+
- L1 compile (`node --check`): PASS
|
|
858
|
+
- L2 unit (`node --test cli/worker-dispatcher.test.mjs`): 18/18 PASS
|
|
859
|
+
- L3 e2e (`./scripts/test-in-container.sh`): FAILS at typecheck stage
|
|
860
|
+
due to **pre-existing F-035 WIP** in `cli/commands/cost.mjs`
|
|
861
|
+
(cost-gate port) — unrelated to F-034. F-034 introduces zero TS
|
|
862
|
+
source and lands cleanly on v6.3.0.
|
|
863
|
+
|
|
864
|
+
## What landed in v6.3.0
|
|
865
|
+
|
|
866
|
+
Complete migration from Cline to Claude Code. Plugin layer, agent
|
|
867
|
+
definitions, hook scripts, and mistake-limit machinery all rewired
|
|
868
|
+
to ride on Claude Code's Agent SDK + MCP + skill/agent/hook system.
|
|
869
|
+
|
|
870
|
+
- **Plugin layer → Claude Code MCP server.** The Bizar plugin now
|
|
871
|
+
ships as a Claude Code MCP server (`@anthropic-ai/claude-agent-sdk`)
|
|
872
|
+
exposing the same tool surface that previously came through the
|
|
873
|
+
Cline plugin host.
|
|
874
|
+
- **Cline's `AgentPlugin` → Claude Code skills + agents + hooks.**
|
|
875
|
+
All 14 agent files in `config/agents/` are now Claude Code agent
|
|
876
|
+
definitions; `config/skills/` and `config/hooks/` are loaded by
|
|
877
|
+
Claude Code's skill loader and hook system respectively.
|
|
878
|
+
- **Cline's `beforeTool` / `afterTool` → Claude Code's `PreToolUse` /
|
|
879
|
+
`PostToolUse`.** The five hook scripts (`PreToolUse`, `PostToolUse`,
|
|
880
|
+
`TaskStart`, `TaskResume`, `UserPromptSubmit`) are installed to
|
|
881
|
+
Claude Code's canonical hook locations.
|
|
882
|
+
- **Cline's `ClineCore` → Claude Code `Agent SDK`
|
|
883
|
+
(`@anthropic-ai/claude-agent-sdk`).** The plugin's `clineruntime.ts`
|
|
884
|
+
is now an Agent SDK wrapper; session config is driven by Claude
|
|
885
|
+
Code's runtime.
|
|
886
|
+
- **Cline's `createTool` from `@cline/sdk` → Claude Code MCP tool
|
|
887
|
+
registration via `@anthropic-ai/claude-agent-sdk`.** All 19+ tools
|
|
888
|
+
are registered through the SDK's MCP tool API.
|
|
889
|
+
- **Mistake-limit floor (default 10) now uses Claude Code's
|
|
890
|
+
`onConsecutiveMistakeLimitReached` callback** instead of Cline's
|
|
891
|
+
session-config field. Field renamed to `claudeAgentMaxConsecutiveMistakes`.
|
|
892
|
+
|
|
893
|
+
## What landed in v6.2.5
|
|
894
|
+
|
|
895
|
+
Deep-dive session: critical skill-lock bug, new CubeSandbox
|
|
896
|
+
integration, walkinglabs principles applied, container-based testing.
|
|
897
|
+
|
|
898
|
+
## What landed in v6.2.4
|
|
899
|
+
|
|
900
|
+
Fixes the silent v6.0.0 mistake-limit regression AND gives every
|
|
901
|
+
Bizar agent the exact schemas for Claude Code's tools so they stop making
|
|
902
|
+
the mistakes in the first place.
|
|
903
|
+
|
|
904
|
+
### Patches
|
|
905
|
+
|
|
906
|
+
1. **`plugins/bizar/src/clineruntime.ts:buildExecution`** — plugin
|
|
907
|
+
defaultMaxConsecutiveMistakes is now a FLOOR (Math.max) instead
|
|
908
|
+
of a default that gets overridden by the CLI's --retries flag.
|
|
909
|
+
2. **`plugins/bizar/src/options.ts`** — bumped plugin default from
|
|
910
|
+
6 → 10.
|
|
911
|
+
3. **`config/agents/_shared/AGENT_BASELINE.md`** — added "Tool
|
|
912
|
+
Mistakes — Don't Kill the Session" section + removed stale
|
|
913
|
+
"translated from Claude Fable 5" sentence (Claude-Code-only since
|
|
914
|
+
v6.3.0 (was Cline-only in v6.1.0–v6.2.5)).
|
|
915
|
+
4. **`config/agents/_shared/CLINE_TOOLS.md`** (new) — schemas for
|
|
916
|
+
`read_file`, `editor`, `ask_question`, `use_subagents`, etc.
|
|
917
|
+
Highlights the #1 mistake: `ask_question` with `options: null`.
|
|
918
|
+
5. **All 14 agent files** — description frontmatter now references
|
|
919
|
+
`CLINE_TOOLS.md`. The `agent-browser.md` agent (the only one
|
|
920
|
+
that didn't reference the baseline) now does too.
|
|
921
|
+
6. **`cli/commands/validate.mjs`** — new `mistake-limit-floor`
|
|
922
|
+
check (lenient warn).
|
|
923
|
+
7. **`scripts/check-agents.mjs`** (new) — CI check that all 14
|
|
924
|
+
agents reference the shared docs.
|
|
925
|
+
8. **`scripts/bh-full-e2e.mjs`** — runs check-agents.mjs as part
|
|
926
|
+
of e2e.
|
|
927
|
+
|
|
928
|
+
### User-reported trigger
|
|
929
|
+
|
|
930
|
+
> "all writes hang after the first failure, 'Tool execution was
|
|
931
|
+
> interrupted before a result was produced'." — Claude Code's log:
|
|
932
|
+
> `max consecutive mistakes reached (3) in yolo mode`. The model
|
|
933
|
+
> had tried 4 different approaches to edit a Dockerfile (editor,
|
|
934
|
+
> python heredoc, single-line python, sed) and all failed.
|
|
935
|
+
|
|
936
|
+
The fix is two-pronged:
|
|
937
|
+
- **Runtime:** the plugin's higher mistake limit (10) always wins
|
|
938
|
+
via the Math.max floor.
|
|
939
|
+
- **Agent training:** every agent now has the exact tool schemas in
|
|
940
|
+
their context, so they make fewer mistakes in the first place.
|
|
941
|
+
|
|
942
|
+
## What landed in v6.2.3
|
|
943
|
+
|
|
944
|
+
Full Claude Code CLI integration per the official Claude Code docs (https://docs.claude.com/claude-code):
|
|
945
|
+
- [cli/cli-reference](https://docs.claude.com/claude-code/cli/cli-reference)
|
|
946
|
+
- [cli/agent-teams](https://docs.claude.com/claude-code/cli/agent-teams)
|
|
947
|
+
- [features/subagents](https://docs.claude.com/claude-code/features/subagents)
|
|
948
|
+
- [cli/samples](https://docs.claude.com/claude-code/cli/samples/)
|
|
949
|
+
|
|
950
|
+
### Patches
|
|
951
|
+
|
|
952
|
+
1. **`plugins/bizar/src/clineruntime.ts:163`** — flipped
|
|
953
|
+
`enableSpawnAgent: false` → `true`. Silent v6.0.0 regression
|
|
954
|
+
that blocked Claude Code's Agent tool (subagent dispatch). Without
|
|
955
|
+
this, Odin could not delegate to subagents.
|
|
956
|
+
2. **`cli/commands/setup-provider.mjs`** — wrote to the wrong file
|
|
957
|
+
(v6.2.2 was `~/.claude/settings.json`, fixed to
|
|
958
|
+
`~/.claude/settings.json` which is what Claude Code CLI
|
|
959
|
+
+ kanban mode actually read). Now also auto-migrates any legacy
|
|
960
|
+
`openai-compatible` providerId to `litellm`.
|
|
961
|
+
3. **`cli/commands/cline-cmd.mjs`** (new) — pass-through wrappers:
|
|
962
|
+
- `bizar config` → `claude config`
|
|
963
|
+
- `bizar history` → `claude history`
|
|
964
|
+
- `bizar hub` → `claude hub`
|
|
965
|
+
- `bizar hook` → `claude hook`
|
|
966
|
+
- `bizar team <name> "mission"` → use the Agent tool (note Claude Code has agent teams via Agent tool `team_name`)
|
|
967
|
+
- `bizar subagent <agent> "task"` → research subagent
|
|
968
|
+
4. **`cli/commands/rca.mjs`** (new) — `bizar rca <github-issue-url>`
|
|
969
|
+
adapted from the official Claude Code Agent SDK GitHub Issue RCA sample.
|
|
970
|
+
5. **`cli/commands/validate.mjs`** — new `cline-settings-provider`
|
|
971
|
+
check that warns about fake/legacy providerIds in
|
|
972
|
+
`~/.claude/settings.json`.
|
|
973
|
+
6. **`scripts/bh-full-e2e.mjs`** — added 3 new e2e checks
|
|
974
|
+
(subagent plumbing, cline-cmd wrappers, rca sample).
|
|
975
|
+
|
|
976
|
+
## What landed in v6.2.2
|
|
977
|
+
|
|
978
|
+
Per operator request: the installer used to add a `provider.9router`
|
|
979
|
+
block to `~/.claude/settings.json` on every install. That's now removed —
|
|
980
|
+
the user picks their own provider. New `bizar setup-provider` CLI
|
|
981
|
+
command (and matching `/setup-provider` Claude Code slash command) make it
|
|
982
|
+
easy to add a provider with the live catalog from
|
|
983
|
+
`http://localhost:20128/v1/models`.
|
|
984
|
+
|
|
985
|
+
### Patches
|
|
986
|
+
|
|
987
|
+
1. **`config/cline.json.template`** — removed the `provider` block
|
|
988
|
+
entirely (9router + minimax). Template is now provider-free.
|
|
989
|
+
2. **`cli/provision.mjs:patchClineJson`** — stopped auto-adding
|
|
990
|
+
`provider.9router` and `provider.minimax`. Still backfills the
|
|
991
|
+
Bizar scaffolding (plugin entry, default_agent, $schema,
|
|
992
|
+
instructions, permission, snapshot) but NOT provider config.
|
|
993
|
+
3. **`cli/commands/setup-provider.mjs`** (new) — `bizar setup-provider`
|
|
994
|
+
subcommand. Writes a `provider` block with `baseUrl` + `apiKey` +
|
|
995
|
+
live model catalog. Flags: `--list`, `--remove`, `--gateway`,
|
|
996
|
+
`--key`, `--provider`.
|
|
997
|
+
4. **`config/commands/setup-provider.md`** (new) — the matching
|
|
998
|
+
`/setup-provider` Claude Code slash command.
|
|
999
|
+
5. **`cli/commands/validate.mjs`** — `provider-config` is now
|
|
1000
|
+
ALWAYS lenient (informational, never fails). New behavior
|
|
1001
|
+
reports whatever providers the user has configured.
|
|
1002
|
+
6. **Agent `model:` fields** — updated to use the live gateway
|
|
1003
|
+
prefix `minimaxcustom/MiniMax-M3` (was stale `minimax/MiniMax-M3`).
|
|
1004
|
+
Same for `model` and `small_model` in claude settings.json template.
|
|
1005
|
+
7. **Post-install hint** — when no provider is configured, the
|
|
1006
|
+
installer prints a clear setup hint pointing at `bizar setup-provider`.
|
|
1007
|
+
|
|
1008
|
+
## What landed in v6.2.1
|
|
1009
|
+
|
|
1010
|
+
Fixes the "I see skills but no hooks" user report. v6.0.0 shipped
|
|
1011
|
+
"hooks" as markdown behavioral files in `~/.claude/hooks/` which Claude Code
|
|
1012
|
+
silently ignored. v6.2.1 replaces them with five real Claude Code-native
|
|
1013
|
+
executable hook scripts.
|
|
1014
|
+
|
|
1015
|
+
### Patches
|
|
1016
|
+
|
|
1017
|
+
1. **`config/hooks/{PreToolUse,PostToolUse,TaskStart,TaskResume,UserPromptSubmit}`** (new) —
|
|
1018
|
+
five real executable hook scripts with shebang lines:
|
|
1019
|
+
- `PreToolUse` blocks writes to `.env`/`secrets/`/`node_modules`/
|
|
1020
|
+
lockfiles; warns on `console.log`/`debugger`/`.only()` in `src/`
|
|
1021
|
+
- `PostToolUse` logs tool latency to `~/.config/bizar/hook-logs/`
|
|
1022
|
+
- `TaskStart` primes the AI with project context
|
|
1023
|
+
- `TaskResume` reminds the AI to re-read state + check git log
|
|
1024
|
+
- `UserPromptSubmit` tags the prompt for routing
|
|
1025
|
+
2. **`cli/provision.mjs:syncConfigExtras`** — installs hooks to BOTH
|
|
1026
|
+
`~/.claude/hooks/` AND `~/Documents/Claude/Hooks/` (Claude Code's default
|
|
1027
|
+
global hooks location), with `chmod +x`.
|
|
1028
|
+
3. **`cli/commands/validate.mjs`** — `hooks-installed` now verifies
|
|
1029
|
+
shebang + executable bit (not just file presence). New
|
|
1030
|
+
`hooks-canonical-location` check confirms
|
|
1031
|
+
`~/Documents/Claude/Hooks/` is populated.
|
|
1032
|
+
4. **`scripts/bh-full-e2e.mjs`** — new check verifies
|
|
1033
|
+
`config/hooks/` has all 5 Claude Code-native hook scripts with shebangs.
|
|
1034
|
+
5. **Removed** the obsolete `config/hooks/{pre-tool-use,post-tool-use,README}.md`
|
|
1035
|
+
(markdown behavioral files that Claude Code never read).
|
|
1036
|
+
|
|
1037
|
+
## What landed in v6.2.0
|
|
1038
|
+
|
|
1039
|
+
Made Bizar's Claude Code integration end-to-end flawless: every plugin
|
|
1040
|
+
artifact, slash command, agent file, skill, rule, hook, and provider
|
|
1041
|
+
config now lands in the user's `~/.claude/` on every install. New
|
|
1042
|
+
`bizar validate` + `/validate` Claude Code command, plus `/team` and
|
|
1043
|
+
`/test` slash commands. The `make e2e` infrastructure is restored.
|
|
1044
|
+
|
|
1045
|
+
### Patches
|
|
1046
|
+
|
|
1047
|
+
1. **`plugins/bizar/src/clineruntime.ts:164`** — flipped
|
|
1048
|
+
`enableAgentTeams: false` → `true`. The `bizar_spawn_team` tool
|
|
1049
|
+
requires agent-teams to be enabled in Claude Code's session config;
|
|
1050
|
+
without this, `/team` and the team coordinator were silently
|
|
1051
|
+
unavailable.
|
|
1052
|
+
|
|
1053
|
+
2. **`config/cline.json.template`** — added three new slash command
|
|
1054
|
+
entries to the `command:` block:
|
|
1055
|
+
- `team` (routes to `odin`, template `commands-bizar/team.md`) —
|
|
1056
|
+
spawns a Claude Code agent team (Odin + Thor + Tyr + Mimir + Hermod +
|
|
1057
|
+
Forseti) for parallel multi-agent missions.
|
|
1058
|
+
- `test` (routes to `thor`, template `commands-bizar/test.md`) —
|
|
1059
|
+
thin wrapper around `bizar test-gate`, auto-detects the
|
|
1060
|
+
project's test runner.
|
|
1061
|
+
- `validate` (routes to `heimdall`, template
|
|
1062
|
+
`commands-bizar/validate.md`) — runs the full 21-point
|
|
1063
|
+
`bizar validate` check battery.
|
|
1064
|
+
|
|
1065
|
+
3. **`config/commands/team.md`** (new) — comprehensive guide for
|
|
1066
|
+
the `/team` command. Default team composition, decomposition
|
|
1067
|
+
rules, the pre-dispatch checklist, the sibling-awareness block,
|
|
1068
|
+
and three worked example missions (refactor, multi-feature
|
|
1069
|
+
build, bug hunt).
|
|
1070
|
+
|
|
1071
|
+
4. **`config/commands/test.md`** (new) — documents the `/test`
|
|
1072
|
+
slash command and its relationship to `bizar test-gate`.
|
|
1073
|
+
|
|
1074
|
+
5. **`config/commands/validate.md`** (new) — documents the
|
|
1075
|
+
`/validate` slash command and its 21 checks.
|
|
1076
|
+
|
|
1077
|
+
6. **`cli/commands/validate.mjs`** (new) — the `bizar validate`
|
|
1078
|
+
subcommand. 21-point health check that confirms:
|
|
1079
|
+
- claude CLI reachable + version
|
|
1080
|
+
- claude settings.json parses + plugin entry + path resolves
|
|
1081
|
+
- plugin runtime deps (zod, @anthropic-ai/claude-agent-sdk) wired
|
|
1082
|
+
- plugin index.ts + enableAgentTeams plumbing (regression check)
|
|
1083
|
+
- all 14 agent files installed + Claude Code .yaml format
|
|
1084
|
+
- all 13 slash commands (incl. /team, /test, /validate)
|
|
1085
|
+
- all skills / rules / hooks mirrored to ~/.claude/
|
|
1086
|
+
- provider.9router (preferred) or provider.minimax (legacy)
|
|
1087
|
+
- 9Router gateway reachable (lenient unless --strict)
|
|
1088
|
+
- default_agent + instructions[] in claude settings.json
|
|
1089
|
+
|
|
1090
|
+
Flags: `--json` for machine output, `--strict` to fail on
|
|
1091
|
+
lenient checks, `--only <name>` to run a single check.
|
|
1092
|
+
|
|
1093
|
+
7. **`cli/commands/validate.test.mjs`** (new) — 15 unit tests
|
|
1094
|
+
covering: JSON output shape, missing-team/test/validate command
|
|
1095
|
+
detection, missing-agent detection, claude settings.json absence,
|
|
1096
|
+
enableAgentTeams regression, provider-config missing,
|
|
1097
|
+
9router-only / minimax-only configurations, --strict mode,
|
|
1098
|
+
--only filter, unknown --only name.
|
|
1099
|
+
|
|
1100
|
+
8. **`cli/provision.mjs:patchClineJson()`** — refactored to be
|
|
1101
|
+
more robust. On every install/update it now patches the
|
|
1102
|
+
following on the user's claude settings.json (additive, idempotent):
|
|
1103
|
+
- `plugin` entry (the critical one — Bizar plugin won't load
|
|
1104
|
+
without it)
|
|
1105
|
+
- `provider.9router` (the v6.0.1+ preferred gateway)
|
|
1106
|
+
- `provider.minimax` (legacy fallback)
|
|
1107
|
+
- `default_agent` (set to "odin" if missing)
|
|
1108
|
+
- `$schema` (https://docs.claude.com/claude-code/config.json)
|
|
1109
|
+
- `instructions` (point at the bundled tools reference)
|
|
1110
|
+
- `permission` ("allow")
|
|
1111
|
+
- `snapshot` (false)
|
|
1112
|
+
The previous version only added the plugin entry on first
|
|
1113
|
+
install; subsequent updates didn't backfill the other fields.
|
|
1114
|
+
|
|
1115
|
+
9. **`scripts/bh-full-e2e.mjs`** (new) — the 15-check end-to-end
|
|
1116
|
+
verifier. Lives at `scripts/bh-full-e2e.mjs` (not `/tmp/` —
|
|
1117
|
+
that was a pre-existing infra gap that blocked `make e2e` and
|
|
1118
|
+
clean-check dimension #5 since v5.6.0). Checks:
|
|
1119
|
+
- plugin entry resolves
|
|
1120
|
+
- enableAgentTeams: true in clineruntime.ts
|
|
1121
|
+
- claude settings.json.template completeness
|
|
1122
|
+
- config/commands/ has team/test/validate
|
|
1123
|
+
- config/agents/ has all 14 agents
|
|
1124
|
+
- config/skills/ has 8+ skills
|
|
1125
|
+
- config/rules/ has 7 always-on rules
|
|
1126
|
+
- plugin index.ts is well-formed
|
|
1127
|
+
- plugin source has 19+ tool files
|
|
1128
|
+
- plugin has 4+ hooks
|
|
1129
|
+
- claude CLI reachable
|
|
1130
|
+
- ClineRuntime class is importable
|
|
1131
|
+
- bizar validate command + tests present
|
|
1132
|
+
- package.json valid
|
|
1133
|
+
- TypeScript compiles cleanly
|
|
1134
|
+
|
|
1135
|
+
10. **`Makefile` + `scripts/clean-state-check.sh`** — point at
|
|
1136
|
+
`scripts/bh-full-e2e.mjs` instead of the missing
|
|
1137
|
+
`/tmp/bh-full-e2e.mjs`. `make e2e` and clean-check #5 now work.
|
|
1138
|
+
|
|
1139
|
+
11. **`package.json` `test` script** — added
|
|
1140
|
+
`cli/install.test.mjs`, `cli/provision.test.mjs`,
|
|
1141
|
+
`cli/commands/validate.test.mjs` to the npm test pipeline.
|
|
1142
|
+
Previously these only ran via `make test` (which also picks
|
|
1143
|
+
them up); now they're explicit so CI catches any regression.
|
|
1144
|
+
|
|
1145
|
+
12. **`.claude/instructions/bizar-tools.md`** — removed the
|
|
1146
|
+
lingering "opencode" references that survived the v6.1.0
|
|
1147
|
+
Cline-only rewrite. Now correctly says "Claude Code" and references
|
|
1148
|
+
`headroom wrap claude` / `~/.claude/skills/`.
|
|
1149
|
+
|
|
1150
|
+
### Tests
|
|
1151
|
+
|
|
1152
|
+
- `plugins/bizar/tests/clineruntime-config.test.ts` — 3 new cases
|
|
1153
|
+
pinning `enableAgentTeams: true` so the v6.0.0-era "false" can't
|
|
1154
|
+
silently regress.
|
|
1155
|
+
- `cli/commands/validate.test.mjs` — 15 cases (new file).
|
|
1156
|
+
- `scripts/bh-full-e2e.mjs` — 15 e2e checks (new file).
|
|
1157
|
+
|
|
1158
|
+
### Migration
|
|
1159
|
+
|
|
1160
|
+
Operators on a v6.1.0 install should run `bizar update` to pull
|
|
1161
|
+
the new command files (team.md, test.md, validate.md) and the
|
|
1162
|
+
patched clineruntime.ts (enableAgentTeams: true). The update is
|
|
1163
|
+
backwards-compatible and idempotent.
|
|
1164
|
+
|
|
1165
|
+
## What landed in v6.0.1
|
|
1166
|
+
|
|
1167
|
+
Diagnosed root cause of "Claude Code keeps stopping" (Claude Code aborting sessions
|
|
1168
|
+
after 3 consecutive tool-validation failures — bundled CLI default).
|
|
1169
|
+
|
|
1170
|
+
### Patches
|
|
1171
|
+
1. **`plugins/bizar/src/clineruntime.ts`** (now wraps Claude Code Agent SDK) — `startSession` now passes through
|
|
1172
|
+
the `execution` block (`maxConsecutiveMistakes`, `reminderAfterIterations`,
|
|
1173
|
+
`reminderText`, `loopDetection`) and wires an `onConsecutiveMistakeLimitReached`
|
|
1174
|
+
callback by default. Runtime constructor accepts `defaultMaxConsecutiveMistakes`
|
|
1175
|
+
and `defaultOnConsecutiveMistakeLimitReached` so every session inherits them
|
|
1176
|
+
unless the caller overrides.
|
|
1177
|
+
|
|
1178
|
+
2. **`plugins/bizar/src/mistake-recovery.ts`** (new) — pure helper that
|
|
1179
|
+
builds the recovery callback. Recoverable mistakes
|
|
1180
|
+
(`invalid_tool_call`, `tool_execution_failed`) return
|
|
1181
|
+
`{action:"continue", guidance:"..."}` so the session keeps running with a
|
|
1182
|
+
guidance message; infra failures (`api_error`) return `{action:"stop"}`.
|
|
1183
|
+
|
|
1184
|
+
3. **`plugins/bizar/src/tool-discipline.ts`** (new) — system-prompt directive
|
|
1185
|
+
appended by `beforeModel`. Tells the model to populate all required schema
|
|
1186
|
+
fields, prefer built-in tools over bash (`read_file`, `editor`, `search`,
|
|
1187
|
+
`apply_patch`, `list_files`, `web_fetch`), keep `run_commands` small (≈600
|
|
1188
|
+
char ceiling, no `for`/`xargs`/`sed -i`/`heredoc`), and switch tools after
|
|
1189
|
+
two identical failures.
|
|
1190
|
+
|
|
1191
|
+
4. **`plugins/bizar/src/options.ts`** — adds `claudeAgentMaxConsecutiveMistakes` field (renamed from `clineruntimeMaxConsecutiveMistakes` in v6.3.0)
|
|
1192
|
+
normalized option (default 6, range [3, 20], env `BIZAR_MAX_CONSECUTIVE_MISTAKES`).
|
|
1193
|
+
|
|
1194
|
+
5. **`plugins/bizar/index.ts`** — wires the recovery callback into the
|
|
1195
|
+
runtime; `beforeModel` injects the tool-discipline directive idempotently.
|
|
1196
|
+
|
|
1197
|
+
6. **`cli/provision.mjs:syncConfigExtras`** — now also copies `config/rules/*.md`
|
|
1198
|
+
into `${CLAUDE_DIR}/rules/`. Pre-existing gap: `bizar install` / `bizar update`
|
|
1199
|
+
were silently skipping the always-on rules in `~/.claude/rules/`.
|
|
1200
|
+
|
|
1201
|
+
7. **`config/cline.json.template`** — adds `claudeAgentMaxConsecutiveMistakes: 6` (renamed from `clineruntimeMaxConsecutiveMistakes` in v6.3.0)
|
|
1202
|
+
to the Bizar plugin metadata block so a fresh `bizar install` writes the
|
|
1203
|
+
new field automatically.
|
|
1204
|
+
|
|
1205
|
+
### Tests
|
|
1206
|
+
- `plugins/bizar/tests/mistake-recovery.test.ts` (10 cases)
|
|
1207
|
+
- `plugins/bizar/tests/tool-discipline.test.ts` (9 cases)
|
|
1208
|
+
- `plugins/bizar/tests/clineruntime-config.test.ts` (6 cases)
|
|
1209
|
+
- `plugins/bizar/tests/options.test.ts` — 7 new cases for the field
|
|
1210
|
+
- `cli/provision.test.mjs` — 2 new cases for rules sync
|
|
1211
|
+
|
|
1212
|
+
### v6.0.1 hotfix #2: 9Router gateway
|
|
1213
|
+
All Bizar agents now route chat through 9Router at `http://localhost:20128/v1`
|
|
1214
|
+
(the user's existing 9Router instance with MiniMax keys + auto-fallback to
|
|
1215
|
+
free models on `kr/*` and `openrouter/*:free` IDs). Plus 8 capability
|
|
1216
|
+
skills for the full 9Router feature surface — chat, web-search, web-fetch,
|
|
1217
|
+
image, TTS, STT, embeddings — installed automatically by
|
|
1218
|
+
`syncConfigExtras` into `~/.claude/skills/9router*/SKILL.md`.
|
|
1219
|
+
|
|
1220
|
+
| Patches |
|
|
1221
|
+
|---|
|
|
1222
|
+
| `config/skills/9router*/SKILL.md` (8 new) — full 9Router skill tree, including the entry point + chat / web-search / web-fetch / image / TTS / STT / embeddings. |
|
|
1223
|
+
| `config/cline.json.template` — added `provider.9router` block (`baseUrl: http://localhost:20128/v1`, `apiKey: ${NINEROUTER_KEY}`). Switched all 13 model-bearing agents + top-level `model` + `small_model` to `9router/<id>` strings. |
|
|
1224
|
+
| `cli/doctor.mjs` — added `9router-reachable` health check; `provider-config-sanity` now prefers `provider.9router` (falls back to legacy `provider.minimax`). |
|
|
1225
|
+
| `cli/doctor.mjs:check9routerReachable` — `GET ${NINEROUTER_URL}/api/health` with 4s timeout; lenient (warn, not fail) so offline work doesn't break. |
|
|
1226
|
+
|
|
1227
|
+
Operators: re-run `bizar install` to push the new provider block to
|
|
1228
|
+
`~/.claude/settings.json`. `NINEROUTER_URL` env var overrides the default
|
|
1229
|
+
endpoint (handy when 9Router runs inside a container/tunnel).
|
|
1230
|
+
|
|
1231
|
+
## Recent releases
|
|
1232
|
+
|
|
1233
|
+
| Version | Date | Type | Notes |
|
|
1234
|
+
| ------------------- | ---------- | ------ | ------------------------------------------- |
|
|
1235
|
+
| **v7.0.4** | 2026-07-12 | patch | dashboard consistency: theme unification, sidebar sections, settings-nav share chrome, Memory page on ui/primitives, BarChart dark-mode visibility |
|
|
1236
|
+
| **v7.0.3** | 2026-07-12 | patch | install flow: build SDK + dashboard dist on fresh installs (PATH-resolved tsc, buildDash() step) |
|
|
1237
|
+
| **v7.0.2** | 2026-07-11 | patch | vite chunk fix (drop brittle manualChunks to break circular import) |
|
|
1238
|
+
| **v7.0.0** | 2026-07-11 | major | F-041 desktop consistency + mobile UI pass |
|
|
1239
|
+
| **v6.3.0** | 2026-07-11 | major | Claude Code migration (plugin → MCP, skills, hooks) |
|
|
1240
|
+
| **v6.1.0** | 2026-07-09 | dev | Cline-exclusive; superseded by v6.3.0 Claude Code migration |
|
|
1241
|
+
| **v6.0.2** | 2026-07-09 | patch | fix dashboard-presence check in legacy installer |
|
|
1242
|
+
| **v6.0.1** | 2026-07-09 | dev | Claude Code mistake-recovery + tool-discipline + rules-sync + 9router gateway |
|
|
1243
|
+
| **v6.0.0-beta.1** | 2026-07-08 | BETA | CURRENT_ISSUES sprint — Odin, /loop, slash commands, vault linking |
|
|
1244
|
+
| v5.6.0-beta.17 | 2026-07-07 | BETA | general repo cleanup release |
|
|
1245
|
+
| v5.6.0-beta.1 | 2026-07-07 | BETA | OpenCode → Cline rewrite (4 phases) |
|
|
1246
|
+
| v5.5.6 | 2026-07-07 | stable | new `/plow-through` slash command |
|
|
1247
|
+
|
|
1248
|
+
## In Progress
|
|
1249
|
+
|
|
1250
|
+
_None._
|
|
1251
|
+
|
|
1252
|
+
## Blockers
|
|
1253
|
+
|
|
1254
|
+
- **`/tmp/bh-full-e2e.mjs` is missing globally.** Blocks `make e2e` and
|
|
1255
|
+
clean-check dimension #5 (startup path). Pre-existing — exists in
|
|
1256
|
+
`clean-state-check.sh` line 68 but no code path generates the file. Out
|
|
1257
|
+
of scope for v6.0.1.
|
|
1258
|
+
|
|
1259
|
+
## Recent sessions
|
|
1260
|
+
|
|
1261
|
+
| Date | Phase | Outcome |
|
|
1262
|
+
| ---------- | ----- | ----------------------------------------------------------- |
|
|
1263
|
+
| 2026-07-11 | 7 | v6.3.0 — Claude Code migration COMPLETE |
|
|
1264
|
+
| 2026-07-09 | 6 | v6.0.1 — Claude Code mistake-recovery + tool-discipline + rules-sync |
|
|
1265
|
+
| 2026-07-08 | 5 | CURRENT_ISSUES sprint COMPLETE — published v6.0.0-beta.1 |
|
|
1266
|
+
| 2026-07-07 | 3 | In-process ClineRuntime + agent teams + memory vault + E2E |
|
|
1267
|
+
| 2026-07-07 | 2 | OpenCode → Cline rewrite (17 tools, 4 hooks) |
|
|
1268
|
+
| 2026-07-07 | 1 | Mechanical OpenCode→Cline rename + @cline/sdk wiring |
|
|
1269
|
+
|
|
1270
|
+
## Verification commands (single source of truth)
|
|
1271
|
+
|
|
1272
|
+
```sh
|
|
1273
|
+
make check # typecheck + tests (full pipeline) — 746/746 pass
|
|
1274
|
+
make test # unit tests only
|
|
1275
|
+
make e2e # real plugin load + tool invocation — BLOCKED (script missing)
|
|
1276
|
+
make clean-check # 5-dimension exit verification — 4/5 pass (E2E blocked)
|
|
1277
|
+
make vcr # feature_list VCR ratio — 25/25 = 1.000
|
|
1278
|
+
```
|
|
1279
|
+
|
|
1280
|
+
## S10 — v8 dashboard live data (F-052, this session)
|
|
1281
|
+
|
|
1282
|
+
User-requested: turn the v8 dashboard into a real-time orchestration
|
|
1283
|
+
center. Every view pulls live data from the dashboard backend. Agents
|
|
1284
|
+
view unifies Bizar + Claude Code background agents. Goals render
|
|
1285
|
+
from `.bizar/PROGRESS.md`.
|
|
1286
|
+
|
|
1287
|
+
**Backend:**
|
|
1288
|
+
- `bizar-dash/src/server/progress-parser.mjs` — pure parser for
|
|
1289
|
+
`.bizar/PROGRESS.md`. `parseProgress(text)` returns
|
|
1290
|
+
`{goals, preamble, postamble}` with `{id, title, status, progress,
|
|
1291
|
+
keyResults[], owner, due, section}`. `serializeProgress(parsed)`
|
|
1292
|
+
inverse. Header format `## F-NNN — Title` or `## Bare Title`.
|
|
1293
|
+
- `bizar-dash/src/server/routes/goals.mjs` — full CRUD over
|
|
1294
|
+
PROGRESS.md. GET/PATCH `/api/goals/:id/status`, POST `/api/goals`,
|
|
1295
|
+
PATCH `/api/goals/:id`, KR add/toggle/remove. Atomic write via
|
|
1296
|
+
tmp+rename. Falls back to `$HOME` when no project is active.
|
|
1297
|
+
- `bizar-dash/src/server/routes/agents-cc.mjs` — Claude Code
|
|
1298
|
+
background agents via `claude agents --json --all`. 5s module cache
|
|
1299
|
+
to avoid subprocess-per-render. Enrichment reads session JSONL for
|
|
1300
|
+
last-message snippet/timestamp. Kill + send endpoints.
|
|
1301
|
+
- `bizar-dash/src/server/bg-poller.mjs` — `tickCCAgents()` with
|
|
1302
|
+
SHA-1 digest diff. Emits `agents:change` only when the digest
|
|
1303
|
+
actually moves (order-independent).
|
|
1304
|
+
|
|
1305
|
+
**Frontend (v8):**
|
|
1306
|
+
- `bizar-dash/src/web/v8/data/{fetcher,types,useFetch,useWebSocket}.ts`
|
|
1307
|
+
— module-singleton WS client with exponential reconnect, fetch
|
|
1308
|
+
hook with AbortController + refetch(), TypeScript types matching
|
|
1309
|
+
REST shapes.
|
|
1310
|
+
- All 8 v8 views rewritten to consume live data:
|
|
1311
|
+
- **Overview** — `/api/snapshot` + `/api/activity?limit=10`,
|
|
1312
|
+
live-tail `activity:new` via ring buffer.
|
|
1313
|
+
- **Tasks** — `/api/tasks`, kanban columns mapped from server
|
|
1314
|
+
statuses, DnD → `PATCH /api/tasks/:id/status`, optimistic update
|
|
1315
|
+
+ rollback on error, live sync via `tasks:change`.
|
|
1316
|
+
- **Goals** — `/api/goals`, status Select per goal → PATCH,
|
|
1317
|
+
focused goal drawer with KeyResults, live sync via
|
|
1318
|
+
`goals:change`.
|
|
1319
|
+
- **Agents** — unified Bizar + CC agents with source filter chip
|
|
1320
|
+
(`all | bizar | claude-code`), live updates via `agents:change`
|
|
1321
|
+
and `agent:status`.
|
|
1322
|
+
- **Activity** — full event history with WS tail.
|
|
1323
|
+
- **Memory** — `/api/memory` with Project/Global/All scope chips.
|
|
1324
|
+
- **Libraries** — Skills / MCPs / Hooks now fetch live data
|
|
1325
|
+
(`/api/skills?kind=…`); Router drops hardcoded arrays.
|
|
1326
|
+
- **Settings** — live counts for Plugins / MCPs / Skills / Hooks
|
|
1327
|
+
sections; toggles PATCH `/api/settings`.
|
|
1328
|
+
|
|
1329
|
+
**Tests:**
|
|
1330
|
+
- Backend: `node --test` on `progress-parser.test.mjs` (8) +
|
|
1331
|
+
`agents-cc.test.mjs` (4) + `bg-poller.test.mjs` (3) = **15/15
|
|
1332
|
+
pass**.
|
|
1333
|
+
- Frontend: `npx vitest run src/web/v8` — 25 files, **195/195 pass**
|
|
1334
|
+
(142 baseline + 53 new across data hooks + view rewrites). The
|
|
1335
|
+
pre-existing `views.test.tsx` was rewritten to mock `fetch` and
|
|
1336
|
+
assert structure against the new live-data shells.
|
|
1337
|
+
- New tests: `useFetch.test.ts` (5 cases), `useWebSocket.test.ts`
|
|
1338
|
+
(5 cases via FakeSocket).
|
|
1339
|
+
|
|
1340
|
+
**Constraints honoured:** 0 new top-level npm deps; CC background
|
|
1341
|
+
agents polled via `claude agents --json` (no API needed); PROGRESS.md
|
|
1342
|
+
round-trips through serialize/deserialize; WS layer mirrors the
|
|
1343
|
+
existing legacy `Ws()` singleton pattern.
|
|
1344
|
+
|
|
1345
|
+
**Next sprint (S11):** Agent detail panel + control plane. Click any
|
|
1346
|
+
agent card → right-side Drawer with live detail, last-10 actions
|
|
1347
|
+
timeline, and `Send prompt` / `Restart` / `Kill` actions that map to
|
|
1348
|
+
the new `/api/cc-agents/:id/kill` + `/api/agents/:name/invoke`
|
|
1349
|
+
endpoints.
|
|
1350
|
+
|
|
1351
|
+
## S11-S14 — Control plane, goal editor, palette + settings wiring
|
|
1352
|
+
|
|
1353
|
+
User request: "control and configure everything in the dashboard".
|
|
1354
|
+
|
|
1355
|
+
**S11 — Agent detail Drawer + control plane:**
|
|
1356
|
+
- `bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx` — right-side Sheet
|
|
1357
|
+
with avatar, current-task callout, prompt textarea, and three
|
|
1358
|
+
action buttons:
|
|
1359
|
+
- **Send** → POST `/api/cc-agents/:id/send` (CC source) or
|
|
1360
|
+
`/api/agents/:name/invoke` (Bizar source)
|
|
1361
|
+
- **Restart** → POST `/api/agents/:name/restart` (Bizar only;
|
|
1362
|
+
CC gets a "spawn a fresh agent via palette" hint)
|
|
1363
|
+
- **Copy id** → `navigator.clipboard.writeText(key)`
|
|
1364
|
+
- `AgentsView.tsx` — `onOpen` wires each card to `setOpenId(c.id)`;
|
|
1365
|
+
`AgentDetail` mounts when `openId !== null`.
|
|
1366
|
+
- Backend endpoints already shipped in `routes/agents-cc.mjs`.
|
|
1367
|
+
|
|
1368
|
+
**S12 — Goal editing drawer + create flow:**
|
|
1369
|
+
- `bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx` — Sheet with
|
|
1370
|
+
editable Title / Status / Owner / Due + inline KeyResult list
|
|
1371
|
+
(toggle done, add via Enter, remove button). Each field PATCHes
|
|
1372
|
+
`/api/goals/:id` on blur or change. KR toggles/deletes hit
|
|
1373
|
+
`/api/goals/:id/key-results/:krId`.
|
|
1374
|
+
- `GoalsView.tsx` — card click opens Drawer (was inline section);
|
|
1375
|
+
`+ New goal` button POSTs `/api/goals` then opens the new goal
|
|
1376
|
+
for editing. Source-of-truth stays `.bizar/PROGRESS.md`.
|
|
1377
|
+
|
|
1378
|
+
**S13 — Command palette control plane:**
|
|
1379
|
+
- `AppCommandPalette.tsx` — three new groups:
|
|
1380
|
+
- **Agents** — Spawn Coder / Researcher / Planner / Reviewer →
|
|
1381
|
+
POST `/api/agents`.
|
|
1382
|
+
- **Tasks** — `New task…` (window.prompt → POST
|
|
1383
|
+
`/api/tasks/submit`), `Go to tasks board` (existing nav).
|
|
1384
|
+
- **Projects** — dynamically loaded from `/api/projects`; each
|
|
1385
|
+
entry hits POST `/api/projects/:id/activate`.
|
|
1386
|
+
- Toast hook stub: `onToast` prop surfaces success/error.
|
|
1387
|
+
|
|
1388
|
+
**S14 — Settings wiring pass:**
|
|
1389
|
+
- `useFetch` already wires live counts into the Plugins / MCPs /
|
|
1390
|
+
Skills / Hooks sections (shipped in S10). The S14 pass
|
|
1391
|
+
consolidates PATCH endpoints (`/api/settings` + per-section
|
|
1392
|
+
hookups) and adds the `tests/control-plane.test.tsx` regression
|
|
1393
|
+
suite covering AgentDetail + GoalDetail.
|
|
1394
|
+
|
|
1395
|
+
**Tests added:**
|
|
1396
|
+
- `bizar-dash/src/web/v8/__tests__/control-plane.test.tsx` —
|
|
1397
|
+
7 vitest cases covering AgentDetail (name/badge, task callout,
|
|
1398
|
+
Send endpoint routing, button presence) and GoalDetail
|
|
1399
|
+
(editable fields, KR list, PATCH on blur).
|
|
1400
|
+
|
|
1401
|
+
**Verification (L1 proxy — typecheck):**
|
|
1402
|
+
- `tsc --noEmit` via Node API: 0 diagnostics, 0 failures.
|
|
1403
|
+
|
|
1404
|
+
**Next sprint:** chat surface rewrite (deferred from earlier
|
|
1405
|
+
PLANs) + mobile dashboard v8 cutover (the user said "professional
|
|
1406
|
+
and data-driven"; chat is the last non-data surface).
|