@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.
Files changed (1012) hide show
  1. package/.claude/agents/agent-browser.md +1 -1
  2. package/.claude/agents/baldr.md +1 -1
  3. package/.claude/agents/forseti.md +1 -1
  4. package/.claude/agents/frigg.md +1 -1
  5. package/.claude/agents/heimdall.md +1 -1
  6. package/.claude/agents/hermod.md +1 -1
  7. package/.claude/agents/mimir.md +1 -1
  8. package/.claude/agents/odin.md +1 -1
  9. package/.claude/agents/quick.md +1 -1
  10. package/.claude/agents/semble-search.md +1 -1
  11. package/.claude/agents/thor.md +1 -1
  12. package/.claude/agents/tyr.md +1 -1
  13. package/.claude/agents/vidarr.md +1 -1
  14. package/.claude/agents/vor.md +1 -1
  15. package/.claude/commands/goal.md +98 -0
  16. package/.claude/settings.local.json +1 -2
  17. package/.claude/worktrees/kanban-overhaul/.claude/CLAUDE.md +15 -0
  18. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
  19. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
  20. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/SKILLS.md +109 -0
  21. package/.claude/worktrees/kanban-overhaul/.claude/agents/agent-browser.md +80 -0
  22. package/.claude/worktrees/kanban-overhaul/.claude/agents/baldr.md +49 -0
  23. package/.claude/worktrees/kanban-overhaul/.claude/agents/forseti.md +51 -0
  24. package/.claude/worktrees/kanban-overhaul/.claude/agents/frigg.md +42 -0
  25. package/.claude/worktrees/kanban-overhaul/.claude/agents/heimdall.md +33 -0
  26. package/.claude/worktrees/kanban-overhaul/.claude/agents/hermod.md +53 -0
  27. package/.claude/worktrees/kanban-overhaul/.claude/agents/mimir.md +49 -0
  28. package/.claude/worktrees/kanban-overhaul/.claude/agents/odin.md +287 -0
  29. package/.claude/worktrees/kanban-overhaul/.claude/agents/quick.md +34 -0
  30. package/.claude/worktrees/kanban-overhaul/.claude/agents/semble-search.md +50 -0
  31. package/.claude/worktrees/kanban-overhaul/.claude/agents/thor.md +53 -0
  32. package/.claude/worktrees/kanban-overhaul/.claude/agents/tyr.md +56 -0
  33. package/.claude/worktrees/kanban-overhaul/.claude/agents/vidarr.md +54 -0
  34. package/.claude/worktrees/kanban-overhaul/.claude/agents/vor.md +53 -0
  35. package/.claude/worktrees/kanban-overhaul/.claude/commands/audit.md +25 -0
  36. package/.claude/worktrees/kanban-overhaul/.claude/commands/bizar.md +22 -0
  37. package/.claude/worktrees/kanban-overhaul/.claude/commands/explain.md +17 -0
  38. package/.claude/worktrees/kanban-overhaul/.claude/commands/init.md +29 -0
  39. package/.claude/worktrees/kanban-overhaul/.claude/commands/learn.md +44 -0
  40. package/.claude/worktrees/kanban-overhaul/.claude/commands/plan.md +35 -0
  41. package/.claude/worktrees/kanban-overhaul/.claude/commands/plow-through.md +50 -0
  42. package/.claude/worktrees/kanban-overhaul/.claude/commands/pr-review.md +49 -0
  43. package/.claude/worktrees/kanban-overhaul/.claude/commands/setup-provider.md +96 -0
  44. package/.claude/worktrees/kanban-overhaul/.claude/commands/tailscale-serve.md +100 -0
  45. package/.claude/worktrees/kanban-overhaul/.claude/commands/team.md +132 -0
  46. package/.claude/worktrees/kanban-overhaul/.claude/commands/test.md +62 -0
  47. package/.claude/worktrees/kanban-overhaul/.claude/commands/validate.md +68 -0
  48. package/.claude/worktrees/kanban-overhaul/.claude/commands/visual-plan.md +24 -0
  49. package/.claude/worktrees/kanban-overhaul/.claude/hooks/README.md +92 -0
  50. package/.claude/worktrees/kanban-overhaul/.claude/hooks/posttooluse-editwrite.mjs +91 -0
  51. package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-bash.mjs +81 -0
  52. package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-editwrite.mjs +139 -0
  53. package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionend-recall.mjs +74 -0
  54. package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionstart-prime.mjs +80 -0
  55. package/.claude/worktrees/kanban-overhaul/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
  56. package/.claude/worktrees/kanban-overhaul/.claude/hooks/worker-suggest.mjs +110 -0
  57. package/.claude/worktrees/kanban-overhaul/.claude/settings.json +125 -0
  58. package/.claude/worktrees/kanban-overhaul/.claude/settings.local.json +8 -0
  59. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router/SKILL.md +80 -0
  60. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-chat/SKILL.md +73 -0
  61. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-embeddings/SKILL.md +69 -0
  62. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-image/SKILL.md +86 -0
  63. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-stt/SKILL.md +79 -0
  64. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-tts/SKILL.md +80 -0
  65. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  66. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-search/SKILL.md +91 -0
  67. package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/README.md +9 -0
  68. package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/SKILL.md +450 -0
  69. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/README.md +28 -0
  70. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  71. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  72. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  73. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  74. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  75. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  76. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/README.md +28 -0
  77. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/SKILL.md +304 -0
  78. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/coverage.md +370 -0
  79. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  80. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  81. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/mocking.md +364 -0
  82. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  83. package/.claude/worktrees/kanban-overhaul/.claude/skills/cubesandbox/SKILL.md +148 -0
  84. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/README.md +41 -0
  85. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  86. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  87. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  88. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  89. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  90. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  91. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  92. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  93. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  94. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  95. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  96. package/.claude/worktrees/kanban-overhaul/.claude/skills/glyph/SKILL.md +163 -0
  97. package/.claude/worktrees/kanban-overhaul/.claude/skills/harness-engineering/SKILL.md +143 -0
  98. package/.claude/worktrees/kanban-overhaul/.claude/skills/lightrag/SKILL.md +81 -0
  99. package/.claude/worktrees/kanban-overhaul/.claude/skills/memory-protocol/SKILL.md +105 -0
  100. package/.claude/worktrees/kanban-overhaul/.claude/skills/obsidian/SKILL.md +306 -0
  101. package/.claude/worktrees/kanban-overhaul/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  102. package/.claude/worktrees/kanban-overhaul/.claude/skills/self-improvement/SKILL.md +64 -0
  103. package/.claude/worktrees/kanban-overhaul/.dockerignore +31 -0
  104. package/.claude/worktrees/kanban-overhaul/.gitattributes +27 -0
  105. package/.claude/worktrees/kanban-overhaul/.harness/agents.json +17 -0
  106. package/.claude/worktrees/kanban-overhaul/.harness/arch-rules.json +69 -0
  107. package/.claude/worktrees/kanban-overhaul/.harness/topology.json +4 -0
  108. package/.claude/worktrees/kanban-overhaul/.nvmrc +1 -0
  109. package/.claude/worktrees/kanban-overhaul/.serena/project.yml +159 -0
  110. package/.claude/worktrees/kanban-overhaul/AGENTS.md +250 -0
  111. package/.claude/worktrees/kanban-overhaul/CHANGELOG.md +5410 -0
  112. package/.claude/worktrees/kanban-overhaul/CLAUDE.md +260 -0
  113. package/.claude/worktrees/kanban-overhaul/CURRENT_ISSUES_ AND_NEW_FEATURES.md +18 -0
  114. package/.claude/worktrees/kanban-overhaul/DECISIONS.md +66 -0
  115. package/.claude/worktrees/kanban-overhaul/Dockerfile +48 -0
  116. package/.claude/worktrees/kanban-overhaul/FINAL_GOAL.md +397 -0
  117. package/.claude/worktrees/kanban-overhaul/IMPLEMENTATION_PLAN.md +250 -0
  118. package/.claude/worktrees/kanban-overhaul/LICENSE +21 -0
  119. package/.claude/worktrees/kanban-overhaul/MILESTONES.md +257 -0
  120. package/.claude/worktrees/kanban-overhaul/Makefile +93 -0
  121. package/.claude/worktrees/kanban-overhaul/PROGRESS.md +1406 -0
  122. package/.claude/worktrees/kanban-overhaul/README.md +483 -0
  123. package/.claude/worktrees/kanban-overhaul/ROADMAP.md +609 -0
  124. package/.claude/worktrees/kanban-overhaul/bizar-dash/.graphifyignore +40 -0
  125. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/README.md +14 -0
  126. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/daily/2026-06-25.md +9 -0
  127. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/vault.json +7 -0
  128. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +103 -0
  129. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +338 -0
  130. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +81 -0
  131. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +172 -0
  132. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +44 -0
  133. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +247 -0
  134. package/.claude/worktrees/kanban-overhaul/bizar-dash/ARCHITECTURE.md +197 -0
  135. package/.claude/worktrees/kanban-overhaul/bizar-dash/CHANGELOG.md +235 -0
  136. package/.claude/worktrees/kanban-overhaul/bizar-dash/DESIGN.md +912 -0
  137. package/.claude/worktrees/kanban-overhaul/bizar-dash/GLYPH.md +418 -0
  138. package/.claude/worktrees/kanban-overhaul/bizar-dash/PLAN.md +1135 -0
  139. package/.claude/worktrees/kanban-overhaul/bizar-dash/critique.json +26 -0
  140. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/comments.json +1 -0
  141. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/meta.json +10 -0
  142. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/plan.json +174 -0
  143. package/.claude/worktrees/kanban-overhaul/bizar-dash/scripts/smoke-bg-retry.mjs +246 -0
  144. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-baseline/SKILL.md +80 -0
  145. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-browser/SKILL.md +181 -0
  146. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/bizar/SKILL.md +116 -0
  147. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/chat/SKILL.md +74 -0
  148. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/eval/SKILL.md +237 -0
  149. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/headroom/SKILL.md +94 -0
  150. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/lightrag/SKILL.md +86 -0
  151. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/minimax/SKILL.md +80 -0
  152. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/obsidian/SKILL.md +68 -0
  153. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/providers/SKILL.md +75 -0
  154. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/publishing/SKILL.md +146 -0
  155. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/sdk/SKILL.md +138 -0
  156. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/self-improvement/SKILL.md +53 -0
  157. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/skills-cli/SKILL.md +94 -0
  158. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/usage/SKILL.md +62 -0
  159. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli/dashboard-ports.mjs +488 -0
  160. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli.mjs +537 -0
  161. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/activity-log.mjs +174 -0
  162. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/agents-store.mjs +465 -0
  163. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/api.mjs +223 -0
  164. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifact-template.html +810 -0
  165. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifacts-store.mjs +733 -0
  166. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/auth.mjs +548 -0
  167. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/background-store.mjs +446 -0
  168. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/backup-store.mjs +530 -0
  169. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-poller.mjs +375 -0
  170. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-retry.mjs +446 -0
  171. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-spawner.mjs +390 -0
  172. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/browser.mjs +40 -0
  173. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
  174. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-info.mjs +412 -0
  175. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-runner.mjs +284 -0
  176. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-sdk.mjs +191 -0
  177. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/diagnostics-store.mjs +598 -0
  178. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-poller.mjs +105 -0
  179. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-store.mjs +177 -0
  180. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/digest-store.mjs +558 -0
  181. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval-store.mjs +281 -0
  182. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval.mjs +500 -0
  183. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/glyphs/mdx-compiler.mjs +596 -0
  184. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/headroom.mjs +649 -0
  185. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/path-safe.mjs +283 -0
  186. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/rate-limit.mjs +122 -0
  187. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/logger.mjs +71 -0
  188. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-consolidator.mjs +225 -0
  189. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-distillation.mjs +296 -0
  190. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-git.mjs +473 -0
  191. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-lightrag.mjs +1478 -0
  192. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-obsidian.mjs +230 -0
  193. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-schema.mjs +145 -0
  194. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-secrets.mjs +84 -0
  195. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-store.mjs +1093 -0
  196. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/metrics.mjs +268 -0
  197. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax-usage-store.mjs +372 -0
  198. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax.mjs +683 -0
  199. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mod-security.mjs +398 -0
  200. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mods-loader.mjs +1243 -0
  201. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/notifications-store.mjs +243 -0
  202. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/obsidian-store.mjs +318 -0
  203. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/ocr.mjs +55 -0
  204. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/otel.mjs +260 -0
  205. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/pair-store.mjs +138 -0
  206. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/progress-parser.mjs +221 -0
  207. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/projects-store.mjs +364 -0
  208. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/providers-store.mjs +1801 -0
  209. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/_shared.mjs +447 -0
  210. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/activity.mjs +195 -0
  211. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents-cc.mjs +194 -0
  212. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents.mjs +134 -0
  213. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/artifacts.mjs +279 -0
  214. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/auth.mjs +69 -0
  215. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/background.mjs +422 -0
  216. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/backup.mjs +112 -0
  217. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/chat.mjs +727 -0
  218. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
  219. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
  220. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/clipboard.mjs +173 -0
  221. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/config.mjs +180 -0
  222. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/diagnostics.mjs +50 -0
  223. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/dialogs.mjs +86 -0
  224. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/digests.mjs +82 -0
  225. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/distill.mjs +129 -0
  226. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/doctor.mjs +71 -0
  227. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/env-vars.mjs +231 -0
  228. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/eval.mjs +187 -0
  229. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/fs.mjs +429 -0
  230. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goal-planner.mjs +236 -0
  231. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goals.mjs +212 -0
  232. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/headroom.mjs +126 -0
  233. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/history.mjs +78 -0
  234. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/lightrag.mjs +169 -0
  235. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/memory.mjs +1524 -0
  236. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/minimax.mjs +133 -0
  237. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/misc.mjs +90 -0
  238. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/mods.mjs +359 -0
  239. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/notifications.mjs +54 -0
  240. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/obsidian.mjs +239 -0
  241. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/ocr.mjs +182 -0
  242. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/overview.mjs +92 -0
  243. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/pair.mjs +67 -0
  244. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/projects.mjs +175 -0
  245. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/providers.mjs +308 -0
  246. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/schedules.mjs +159 -0
  247. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/settings.mjs +51 -0
  248. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/skills.mjs +65 -0
  249. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tailscale.mjs +46 -0
  250. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tasks.mjs +518 -0
  251. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/themes.mjs +51 -0
  252. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/update.mjs +340 -0
  253. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/usage.mjs +136 -0
  254. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/users.mjs +102 -0
  255. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/voice.mjs +167 -0
  256. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/workspaces.mjs +299 -0
  257. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/auth.mjs +59 -0
  258. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/events.mjs +121 -0
  259. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/health.mjs +21 -0
  260. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/index.mjs +90 -0
  261. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/sessions.mjs +111 -0
  262. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-runner.mjs +556 -0
  263. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-store.mjs +268 -0
  264. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/search-store.mjs +220 -0
  265. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/serve-info.mjs +1110 -0
  266. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/server.mjs +966 -0
  267. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/settings-store.mjs +45 -0
  268. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/skills-store.mjs +190 -0
  269. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/state.mjs +437 -0
  270. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tailscale-store.mjs +113 -0
  271. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/task-delegator.mjs +969 -0
  272. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tasks-store.mjs +556 -0
  273. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tui.mjs +923 -0
  274. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/update-store.mjs +168 -0
  275. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-auth-file.mjs +99 -0
  276. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-event-bus.mjs +128 -0
  277. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-store.mjs +229 -0
  278. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-transcribe.mjs +72 -0
  279. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/watcher.mjs +81 -0
  280. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workers/transcription-worker.mjs +213 -0
  281. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workspaces.mjs +626 -0
  282. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/yaml.mjs +238 -0
  283. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/App.tsx +200 -0
  284. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
  285. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/types.ts +168 -0
  286. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
  287. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useWebSocket.ts +153 -0
  288. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/main.tsx +28 -0
  289. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/AppShell.tsx +90 -0
  290. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +29 -0
  291. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Sidebar.tsx +361 -0
  292. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/StatusBar.tsx +63 -0
  293. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Topbar.tsx +113 -0
  294. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/index.ts +15 -0
  295. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +137 -0
  296. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +101 -0
  297. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +158 -0
  298. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +232 -0
  299. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Button.tsx +141 -0
  300. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +32 -0
  301. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +49 -0
  302. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Field.tsx +78 -0
  303. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Form.tsx +23 -0
  304. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +112 -0
  305. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Input.tsx +94 -0
  306. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +74 -0
  307. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Select.tsx +171 -0
  308. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Slider.tsx +68 -0
  309. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Switch.tsx +56 -0
  310. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +64 -0
  311. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +36 -0
  312. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +85 -0
  313. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Accordion.tsx +134 -0
  314. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Avatar.tsx +175 -0
  315. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Badge.tsx +93 -0
  316. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/BarList.tsx +101 -0
  317. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Card.tsx +140 -0
  318. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Chip.tsx +96 -0
  319. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Kbd.tsx +42 -0
  320. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +93 -0
  321. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +98 -0
  322. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/StatTile.tsx +150 -0
  323. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Table.tsx +170 -0
  324. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Timeline.tsx +130 -0
  325. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +122 -0
  326. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +95 -0
  327. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +39 -0
  328. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +143 -0
  329. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +149 -0
  330. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +8 -0
  331. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +231 -0
  332. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +48 -0
  333. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +56 -0
  334. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +103 -0
  335. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +67 -0
  336. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +30 -0
  337. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +66 -0
  338. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +89 -0
  339. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +176 -0
  340. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +245 -0
  341. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +115 -0
  342. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/index.ts +349 -0
  343. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +115 -0
  344. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +391 -0
  345. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCardBadges.tsx +111 -0
  346. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +181 -0
  347. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +126 -0
  348. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +638 -0
  349. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +43 -0
  350. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +130 -0
  351. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +141 -0
  352. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +291 -0
  353. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +90 -0
  354. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +30 -0
  355. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +161 -0
  356. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +144 -0
  357. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +224 -0
  358. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +81 -0
  359. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +164 -0
  360. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +128 -0
  361. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Box.tsx +144 -0
  362. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Center.tsx +40 -0
  363. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +67 -0
  364. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +104 -0
  365. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +77 -0
  366. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +33 -0
  367. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +62 -0
  368. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +42 -0
  369. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +73 -0
  370. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +49 -0
  371. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +91 -0
  372. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +88 -0
  373. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +109 -0
  374. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/globals.css +220 -0
  375. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/reset.css +57 -0
  376. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/tokens.css +217 -0
  377. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +66 -0
  378. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +94 -0
  379. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +88 -0
  380. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useDensity.ts +15 -0
  381. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useTheme.ts +16 -0
  382. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/utils/cx.ts +19 -0
  383. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +71 -0
  384. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +172 -0
  385. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +247 -0
  386. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +137 -0
  387. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +108 -0
  388. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +77 -0
  389. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +152 -0
  390. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Router.tsx +72 -0
  391. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +330 -0
  392. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +106 -0
  393. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +792 -0
  394. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/vite-env.d.ts +15 -0
  395. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8.html +17 -0
  396. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/FORMAT.md +76 -0
  397. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/README.md +19 -0
  398. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/agents/greeter.md +8 -0
  399. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/commands/hello.md +6 -0
  400. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/mod.json +20 -0
  401. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +9 -0
  402. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +10 -0
  403. package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/setup.ts +63 -0
  404. package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/smoke-v2.mjs +212 -0
  405. package/.claude/worktrees/kanban-overhaul/bizar-dash/tsconfig.json +23 -0
  406. package/.claude/worktrees/kanban-overhaul/bizar-dash/vite.config.ts +66 -0
  407. package/.claude/worktrees/kanban-overhaul/bizar-dash/vitest.config.ts +20 -0
  408. package/.claude/worktrees/kanban-overhaul/bizar-plugins/registry.json +62 -0
  409. package/.claude/worktrees/kanban-overhaul/bookmarklet/bizar-clipper.js +48 -0
  410. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/README.md +43 -0
  411. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/background.js +95 -0
  412. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/content.js +170 -0
  413. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-128.png +0 -0
  414. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-16.png +0 -0
  415. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-48.png +0 -0
  416. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon.svg +4 -0
  417. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/manifest.json +32 -0
  418. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.html +66 -0
  419. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.js +110 -0
  420. package/.claude/worktrees/kanban-overhaul/bun.lock +1558 -0
  421. package/.claude/worktrees/kanban-overhaul/cli/agent-browser-up.sh +152 -0
  422. package/.claude/worktrees/kanban-overhaul/cli/agent-browser-update.mjs +322 -0
  423. package/.claude/worktrees/kanban-overhaul/cli/artifact-cli.mjs +605 -0
  424. package/.claude/worktrees/kanban-overhaul/cli/artifact-render.mjs +621 -0
  425. package/.claude/worktrees/kanban-overhaul/cli/artifact-server.mjs +847 -0
  426. package/.claude/worktrees/kanban-overhaul/cli/artifact-templates.mjs +523 -0
  427. package/.claude/worktrees/kanban-overhaul/cli/artifact.mjs +63 -0
  428. package/.claude/worktrees/kanban-overhaul/cli/atomic.mjs +73 -0
  429. package/.claude/worktrees/kanban-overhaul/cli/audit.mjs +141 -0
  430. package/.claude/worktrees/kanban-overhaul/cli/banner.mjs +41 -0
  431. package/.claude/worktrees/kanban-overhaul/cli/bg.mjs +471 -0
  432. package/.claude/worktrees/kanban-overhaul/cli/bin.mjs +698 -0
  433. package/.claude/worktrees/kanban-overhaul/cli/bootstrap.mjs +77 -0
  434. package/.claude/worktrees/kanban-overhaul/cli/commands/artifact.mjs +20 -0
  435. package/.claude/worktrees/kanban-overhaul/cli/commands/claim.mjs +282 -0
  436. package/.claude/worktrees/kanban-overhaul/cli/commands/claude-cmd.mjs +348 -0
  437. package/.claude/worktrees/kanban-overhaul/cli/commands/clip.mjs +163 -0
  438. package/.claude/worktrees/kanban-overhaul/cli/commands/cost.mjs +279 -0
  439. package/.claude/worktrees/kanban-overhaul/cli/commands/dash.mjs +193 -0
  440. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/cloudflare.mjs +250 -0
  441. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/docker.mjs +222 -0
  442. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/fly.mjs +161 -0
  443. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/vercel.mjs +225 -0
  444. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy.mjs +240 -0
  445. package/.claude/worktrees/kanban-overhaul/cli/commands/eval.mjs +396 -0
  446. package/.claude/worktrees/kanban-overhaul/cli/commands/headroom.mjs +204 -0
  447. package/.claude/worktrees/kanban-overhaul/cli/commands/install.mjs +170 -0
  448. package/.claude/worktrees/kanban-overhaul/cli/commands/lightrag.mjs +170 -0
  449. package/.claude/worktrees/kanban-overhaul/cli/commands/marketplace.mjs +64 -0
  450. package/.claude/worktrees/kanban-overhaul/cli/commands/memory.mjs +25 -0
  451. package/.claude/worktrees/kanban-overhaul/cli/commands/minimax.mjs +288 -0
  452. package/.claude/worktrees/kanban-overhaul/cli/commands/mod.mjs +185 -0
  453. package/.claude/worktrees/kanban-overhaul/cli/commands/ocr.mjs +182 -0
  454. package/.claude/worktrees/kanban-overhaul/cli/commands/plugin.mjs +358 -0
  455. package/.claude/worktrees/kanban-overhaul/cli/commands/rca.mjs +198 -0
  456. package/.claude/worktrees/kanban-overhaul/cli/commands/sandbox.mjs +220 -0
  457. package/.claude/worktrees/kanban-overhaul/cli/commands/service.mjs +79 -0
  458. package/.claude/worktrees/kanban-overhaul/cli/commands/setup-provider.mjs +466 -0
  459. package/.claude/worktrees/kanban-overhaul/cli/commands/tailscale.mjs +258 -0
  460. package/.claude/worktrees/kanban-overhaul/cli/commands/usage.mjs +113 -0
  461. package/.claude/worktrees/kanban-overhaul/cli/commands/util.mjs +577 -0
  462. package/.claude/worktrees/kanban-overhaul/cli/commands/validate.mjs +541 -0
  463. package/.claude/worktrees/kanban-overhaul/cli/commands/voice.mjs +211 -0
  464. package/.claude/worktrees/kanban-overhaul/cli/commands/workspace.mjs +247 -0
  465. package/.claude/worktrees/kanban-overhaul/cli/copy.mjs +586 -0
  466. package/.claude/worktrees/kanban-overhaul/cli/cost-gate.mjs +501 -0
  467. package/.claude/worktrees/kanban-overhaul/cli/dev-link.mjs +191 -0
  468. package/.claude/worktrees/kanban-overhaul/cli/digest.mjs +149 -0
  469. package/.claude/worktrees/kanban-overhaul/cli/doctor.mjs +217 -0
  470. package/.claude/worktrees/kanban-overhaul/cli/export.mjs +95 -0
  471. package/.claude/worktrees/kanban-overhaul/cli/feature-list-bridge.mjs +400 -0
  472. package/.claude/worktrees/kanban-overhaul/cli/heads-up.mjs +295 -0
  473. package/.claude/worktrees/kanban-overhaul/cli/init.mjs +368 -0
  474. package/.claude/worktrees/kanban-overhaul/cli/install.mjs +640 -0
  475. package/.claude/worktrees/kanban-overhaul/cli/memory-constants.mjs +76 -0
  476. package/.claude/worktrees/kanban-overhaul/cli/memory.mjs +1850 -0
  477. package/.claude/worktrees/kanban-overhaul/cli/plugin-runtime-deps.mjs +250 -0
  478. package/.claude/worktrees/kanban-overhaul/cli/post-install-smoke.mjs +256 -0
  479. package/.claude/worktrees/kanban-overhaul/cli/prompts.mjs +168 -0
  480. package/.claude/worktrees/kanban-overhaul/cli/providers-detect.mjs +233 -0
  481. package/.claude/worktrees/kanban-overhaul/cli/provision-claude.mjs +1176 -0
  482. package/.claude/worktrees/kanban-overhaul/cli/provision.mjs +2233 -0
  483. package/.claude/worktrees/kanban-overhaul/cli/repair.mjs +209 -0
  484. package/.claude/worktrees/kanban-overhaul/cli/service-controller.mjs +927 -0
  485. package/.claude/worktrees/kanban-overhaul/cli/service-env.mjs +139 -0
  486. package/.claude/worktrees/kanban-overhaul/cli/service.mjs +492 -0
  487. package/.claude/worktrees/kanban-overhaul/cli/update.mjs +29 -0
  488. package/.claude/worktrees/kanban-overhaul/cli/utils.mjs +221 -0
  489. package/.claude/worktrees/kanban-overhaul/cli/worker-dispatcher.mjs +259 -0
  490. package/.claude/worktrees/kanban-overhaul/config/AGENTS.md +595 -0
  491. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/AGENT_BASELINE.md +155 -0
  492. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/CLINE_TOOLS.md +398 -0
  493. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/SKILLS.md +109 -0
  494. package/.claude/worktrees/kanban-overhaul/config/agents/agent-browser.md +90 -0
  495. package/.claude/worktrees/kanban-overhaul/config/agents/baldr.md +60 -0
  496. package/.claude/worktrees/kanban-overhaul/config/agents/forseti.md +60 -0
  497. package/.claude/worktrees/kanban-overhaul/config/agents/frigg.md +52 -0
  498. package/.claude/worktrees/kanban-overhaul/config/agents/heimdall.md +44 -0
  499. package/.claude/worktrees/kanban-overhaul/config/agents/hermod.md +64 -0
  500. package/.claude/worktrees/kanban-overhaul/config/agents/mimir.md +60 -0
  501. package/.claude/worktrees/kanban-overhaul/config/agents/odin.md +310 -0
  502. package/.claude/worktrees/kanban-overhaul/config/agents/quick.md +47 -0
  503. package/.claude/worktrees/kanban-overhaul/config/agents/semble-search.md +59 -0
  504. package/.claude/worktrees/kanban-overhaul/config/agents/thor.md +64 -0
  505. package/.claude/worktrees/kanban-overhaul/config/agents/tyr.md +67 -0
  506. package/.claude/worktrees/kanban-overhaul/config/agents/vidarr.md +65 -0
  507. package/.claude/worktrees/kanban-overhaul/config/agents/vor.md +62 -0
  508. package/.claude/worktrees/kanban-overhaul/config/commands/audit.md +5 -0
  509. package/.claude/worktrees/kanban-overhaul/config/commands/bizar.md +22 -0
  510. package/.claude/worktrees/kanban-overhaul/config/commands/explain.md +5 -0
  511. package/.claude/worktrees/kanban-overhaul/config/commands/init.md +26 -0
  512. package/.claude/worktrees/kanban-overhaul/config/commands/learn.md +5 -0
  513. package/.claude/worktrees/kanban-overhaul/config/commands/plan.md +30 -0
  514. package/.claude/worktrees/kanban-overhaul/config/commands/plow-through.md +47 -0
  515. package/.claude/worktrees/kanban-overhaul/config/commands/pr-review.md +5 -0
  516. package/.claude/worktrees/kanban-overhaul/config/commands/setup-provider.md +95 -0
  517. package/.claude/worktrees/kanban-overhaul/config/commands/tailscale-serve.md +97 -0
  518. package/.claude/worktrees/kanban-overhaul/config/commands/team.md +124 -0
  519. package/.claude/worktrees/kanban-overhaul/config/commands/test.md +60 -0
  520. package/.claude/worktrees/kanban-overhaul/config/commands/validate.md +66 -0
  521. package/.claude/worktrees/kanban-overhaul/config/commands/visual-plan.md +19 -0
  522. package/.claude/worktrees/kanban-overhaul/config/hooks/PostToolUse +66 -0
  523. package/.claude/worktrees/kanban-overhaul/config/hooks/PreToolUse +82 -0
  524. package/.claude/worktrees/kanban-overhaul/config/hooks/README.md +68 -0
  525. package/.claude/worktrees/kanban-overhaul/config/hooks/TaskResume +48 -0
  526. package/.claude/worktrees/kanban-overhaul/config/hooks/TaskStart +47 -0
  527. package/.claude/worktrees/kanban-overhaul/config/hooks/UserPromptSubmit +55 -0
  528. package/.claude/worktrees/kanban-overhaul/config/rules/general.md +9 -0
  529. package/.claude/worktrees/kanban-overhaul/config/rules/git.md +11 -0
  530. package/.claude/worktrees/kanban-overhaul/config/rules/javascript.md +10 -0
  531. package/.claude/worktrees/kanban-overhaul/config/rules/python.md +10 -0
  532. package/.claude/worktrees/kanban-overhaul/config/rules/testing.md +10 -0
  533. package/.claude/worktrees/kanban-overhaul/config/rules/thinking.md +56 -0
  534. package/.claude/worktrees/kanban-overhaul/config/rules/uncertainty.md +70 -0
  535. package/.claude/worktrees/kanban-overhaul/config/skills/9router/SKILL.md +80 -0
  536. package/.claude/worktrees/kanban-overhaul/config/skills/9router-chat/SKILL.md +73 -0
  537. package/.claude/worktrees/kanban-overhaul/config/skills/9router-embeddings/SKILL.md +69 -0
  538. package/.claude/worktrees/kanban-overhaul/config/skills/9router-image/SKILL.md +86 -0
  539. package/.claude/worktrees/kanban-overhaul/config/skills/9router-stt/SKILL.md +79 -0
  540. package/.claude/worktrees/kanban-overhaul/config/skills/9router-tts/SKILL.md +80 -0
  541. package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-fetch/SKILL.md +99 -0
  542. package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-search/SKILL.md +91 -0
  543. package/.claude/worktrees/kanban-overhaul/config/skills/bizar/README.md +9 -0
  544. package/.claude/worktrees/kanban-overhaul/config/skills/bizar/SKILL.md +447 -0
  545. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/README.md +28 -0
  546. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/SKILL.md +634 -0
  547. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/agents/openai.yaml +4 -0
  548. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/concurrency.md +320 -0
  549. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/error-handling.md +229 -0
  550. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  551. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  552. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  553. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/README.md +28 -0
  554. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/SKILL.md +304 -0
  555. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/agents/openai.yaml +4 -0
  556. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/coverage.md +370 -0
  557. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/framework-compare.md +175 -0
  558. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  559. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/mocking.md +364 -0
  560. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/tdd-workflow.md +308 -0
  561. package/.claude/worktrees/kanban-overhaul/config/skills/cubesandbox/SKILL.md +148 -0
  562. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/README.md +41 -0
  563. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/SKILL.md +439 -0
  564. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/agents/openai.yaml +4 -0
  565. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  566. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/host-tests.md +164 -0
  567. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  568. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/kconfig.md +159 -0
  569. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  570. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  571. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/nvs.md +121 -0
  572. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  573. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  574. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  575. package/.claude/worktrees/kanban-overhaul/config/skills/glyph/SKILL.md +163 -0
  576. package/.claude/worktrees/kanban-overhaul/config/skills/harness-engineering/SKILL.md +142 -0
  577. package/.claude/worktrees/kanban-overhaul/config/skills/lightrag/SKILL.md +81 -0
  578. package/.claude/worktrees/kanban-overhaul/config/skills/memory-protocol/SKILL.md +105 -0
  579. package/.claude/worktrees/kanban-overhaul/config/skills/obsidian/SKILL.md +306 -0
  580. package/.claude/worktrees/kanban-overhaul/config/skills/read-the-damn-docs/SKILL.md +113 -0
  581. package/.claude/worktrees/kanban-overhaul/config/skills/self-improvement/SKILL.md +64 -0
  582. package/.claude/worktrees/kanban-overhaul/config/trigger-patterns.json +186 -0
  583. package/.claude/worktrees/kanban-overhaul/docker-compose.yml +50 -0
  584. package/.claude/worktrees/kanban-overhaul/docs/A11Y.md +81 -0
  585. package/.claude/worktrees/kanban-overhaul/docs/DEPLOY.md +360 -0
  586. package/.claude/worktrees/kanban-overhaul/docs/DOCKER.md +250 -0
  587. package/.claude/worktrees/kanban-overhaul/docs/INDEX.md +223 -0
  588. package/.claude/worktrees/kanban-overhaul/docs/PLUGIN_REGISTRY.md +107 -0
  589. package/.claude/worktrees/kanban-overhaul/docs/RELEASING.md +693 -0
  590. package/.claude/worktrees/kanban-overhaul/docs/architecture.md +317 -0
  591. package/.claude/worktrees/kanban-overhaul/docs/code-review.md +242 -0
  592. package/.claude/worktrees/kanban-overhaul/docs/curator.md +144 -0
  593. package/.claude/worktrees/kanban-overhaul/docs/dashboard-ui-migration.md +807 -0
  594. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-001-cline-rewrite.md +114 -0
  595. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-002-in-process-clinecore.md +139 -0
  596. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-003-in-process-memory-vault.md +101 -0
  597. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-004-cline-agent-teams.md +112 -0
  598. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-005-bg-agents-via-dashboard.md +77 -0
  599. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-006-kanban-board.md +69 -0
  600. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-007-tool-approval-gate.md +147 -0
  601. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-008-skill-curator.md +100 -0
  602. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-009-pre-compaction-flush.md +106 -0
  603. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-010-knowledge-graph-tools.md +95 -0
  604. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-011-claude-code-migration.md +172 -0
  605. package/.claude/worktrees/kanban-overhaul/docs/graph-tools.md +130 -0
  606. package/.claude/worktrees/kanban-overhaul/docs/migration-guide.md +471 -0
  607. package/.claude/worktrees/kanban-overhaul/docs/migrations/cline-replacement.md +118 -0
  608. package/.claude/worktrees/kanban-overhaul/docs/postmortems/2026-06-18-plugin-state-deadlock.md +250 -0
  609. package/.claude/worktrees/kanban-overhaul/docs/quality-document.md +74 -0
  610. package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.2.md +66 -0
  611. package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.4.md +85 -0
  612. package/.claude/worktrees/kanban-overhaul/docs/releases/v2.3.0.md +96 -0
  613. package/.claude/worktrees/kanban-overhaul/docs/releases/v3.24.0.md +155 -0
  614. package/.claude/worktrees/kanban-overhaul/docs/releases/v4.0.0.md +123 -0
  615. package/.claude/worktrees/kanban-overhaul/docs/releases/v7.0.0.md +173 -0
  616. package/.claude/worktrees/kanban-overhaul/docs/safety.md +216 -0
  617. package/.claude/worktrees/kanban-overhaul/feature_list.json +1297 -0
  618. package/.claude/worktrees/kanban-overhaul/init.sh +211 -0
  619. package/.claude/worktrees/kanban-overhaul/install.sh +498 -0
  620. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/INSTRUCTIONS.md +82 -0
  621. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/mod.json +37 -0
  622. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/route.mjs +136 -0
  623. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/web/index.html +180 -0
  624. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/INSTRUCTIONS.md +81 -0
  625. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/mod.json +61 -0
  626. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/route.mjs +461 -0
  627. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/web/index.html +263 -0
  628. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/INSTRUCTIONS.md +87 -0
  629. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/agents/thor.md +64 -0
  630. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/mod.json +36 -0
  631. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/route.mjs +98 -0
  632. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/web/index.html +126 -0
  633. package/.claude/worktrees/kanban-overhaul/package.json +154 -0
  634. package/.claude/worktrees/kanban-overhaul/packages/sdk/ARCHITECTURE.md +70 -0
  635. package/.claude/worktrees/kanban-overhaul/packages/sdk/LICENSE +21 -0
  636. package/.claude/worktrees/kanban-overhaul/packages/sdk/README.md +80 -0
  637. package/.claude/worktrees/kanban-overhaul/packages/sdk/package.json +30 -0
  638. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/agent-registry.ts +304 -0
  639. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/byzantine.ts +587 -0
  640. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/index.ts +147 -0
  641. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/queen.ts +173 -0
  642. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/types.ts +199 -0
  643. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/dangerous-patterns.ts +127 -0
  644. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/audit.ts +156 -0
  645. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/budget.ts +269 -0
  646. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/envelope.ts +144 -0
  647. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/hmac.ts +160 -0
  648. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/index.ts +443 -0
  649. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/pii.ts +241 -0
  650. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/policy.ts +112 -0
  651. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/trust.ts +146 -0
  652. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/fingerprint.ts +0 -0
  653. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/index.ts +114 -0
  654. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/bin.ts +51 -0
  655. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/server.ts +848 -0
  656. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/memory/index.ts +160 -0
  657. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/codemod-intent.ts +125 -0
  658. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/index.ts +247 -0
  659. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation-shim.mjs +18 -0
  660. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation.ts +249 -0
  661. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/model-router.ts +235 -0
  662. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/q-learning-router.ts +304 -0
  663. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/swarm-topology.ts +279 -0
  664. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/version.ts +4 -0
  665. package/.claude/worktrees/kanban-overhaul/packages/sdk/tsconfig.json +25 -0
  666. package/.claude/worktrees/kanban-overhaul/packages/sdk/vitest.config.ts +9 -0
  667. package/.claude/worktrees/kanban-overhaul/plugins/bizar/ARCHITECTURE.md +72 -0
  668. package/.claude/worktrees/kanban-overhaul/plugins/bizar/CONSTRAINTS.md +62 -0
  669. package/.claude/worktrees/kanban-overhaul/plugins/bizar/LICENSE +21 -0
  670. package/.claude/worktrees/kanban-overhaul/plugins/bizar/README.md +46 -0
  671. package/.claude/worktrees/kanban-overhaul/plugins/bizar/index.ts +50 -0
  672. package/.claude/worktrees/kanban-overhaul/plugins/bizar/package.json +18 -0
  673. package/.claude/worktrees/kanban-overhaul/plugins/bizar/tsconfig.json +29 -0
  674. package/.claude/worktrees/kanban-overhaul/scripts/bh-full-e2e.mjs +298 -0
  675. package/.claude/worktrees/kanban-overhaul/scripts/check-agents.mjs +73 -0
  676. package/.claude/worktrees/kanban-overhaul/scripts/check-arch.sh +80 -0
  677. package/.claude/worktrees/kanban-overhaul/scripts/check-deps.mjs +492 -0
  678. package/.claude/worktrees/kanban-overhaul/scripts/clean-state-check.sh +81 -0
  679. package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-commit +59 -0
  680. package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-push +54 -0
  681. package/.claude/worktrees/kanban-overhaul/scripts/install-hooks.sh +29 -0
  682. package/.claude/worktrees/kanban-overhaul/scripts/install-service.mjs +190 -0
  683. package/.claude/worktrees/kanban-overhaul/scripts/mirror-claude-md.sh +78 -0
  684. package/.claude/worktrees/kanban-overhaul/scripts/session-trace.sh +52 -0
  685. package/.claude/worktrees/kanban-overhaul/scripts/test-in-container.sh +157 -0
  686. package/.claude/worktrees/kanban-overhaul/scripts/verify-feature.sh +102 -0
  687. package/.claude/worktrees/kanban-overhaul/skills-lock.json +11 -0
  688. package/.claude/worktrees/kanban-overhaul/templates/clean-state-checklist.md +55 -0
  689. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/README.md +32 -0
  690. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/functions-index.template.js +15 -0
  691. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/wrangler.toml.template +9 -0
  692. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/.env.template +16 -0
  693. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/README.md +58 -0
  694. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/docker-compose.template.yml +23 -0
  695. package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/README.md +35 -0
  696. package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/fly.toml.template +28 -0
  697. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/README.md +29 -0
  698. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/api-index.template.js +18 -0
  699. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/vercel.json.template +16 -0
  700. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/README.md +58 -0
  701. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/citation.json +16 -0
  702. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-review.json +16 -0
  703. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-search-basic.json +28 -0
  704. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/concise-output.json +16 -0
  705. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/context-window.json +16 -0
  706. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/error-recovery.json +16 -0
  707. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/json-output.json +20 -0
  708. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/latency-bounds.json +16 -0
  709. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/multi-language.json +16 -0
  710. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/regression-suite.json +79 -0
  711. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/response-format.json +30 -0
  712. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/safe-paths.json +16 -0
  713. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-correctness.json +24 -0
  714. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-multi-step.json +18 -0
  715. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/unicode-handling.json +16 -0
  716. package/.claude/worktrees/kanban-overhaul/templates/evaluator-rubric.md +50 -0
  717. package/.claude/worktrees/kanban-overhaul/templates/plan/htmx.min.js +1 -0
  718. package/.claude/worktrees/kanban-overhaul/templates/plan/library/bug-investigation.mdx +79 -0
  719. package/.claude/worktrees/kanban-overhaul/templates/plan/library/decision-record.mdx +71 -0
  720. package/.claude/worktrees/kanban-overhaul/templates/plan/library/feature-design.mdx +92 -0
  721. package/.claude/worktrees/kanban-overhaul/templates/plan/meta.json.template +8 -0
  722. package/.claude/worktrees/kanban-overhaul/templates/plan/plan.mdx.template +46 -0
  723. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/README.md +121 -0
  724. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/index.js +66 -0
  725. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/plugin.json +42 -0
  726. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/tests/plugin.test.js +83 -0
  727. package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-backup.json +12 -0
  728. package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-cleanup.json +12 -0
  729. package/.claude/worktrees/kanban-overhaul/templates/schedules/hourly-health-check.json +12 -0
  730. package/.claude/worktrees/kanban-overhaul/templates/schedules/webhook-on-push.json +13 -0
  731. package/.claude/worktrees/kanban-overhaul/templates/schedules/weekly-digest.json +13 -0
  732. package/.claude/worktrees/kanban-overhaul/templates/sprint-contract.md +47 -0
  733. package/.claude/worktrees/kanban-overhaul/tsconfig.json +44 -0
  734. package/.claude/worktrees/kanban-overhaul/vite.config.ts +51 -0
  735. package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js +16 -0
  736. package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js.map +1 -0
  737. package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js +12 -0
  738. package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js.map +1 -0
  739. package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js +23 -0
  740. package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js.map +1 -0
  741. package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js +6 -0
  742. package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js.map +1 -0
  743. package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js → Card-CeZsWlcP.js} +1 -1
  744. package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js.map → Card-CeZsWlcP.js.map} +1 -1
  745. package/bizar-dash/dist/assets/Chip-OPjSKl2I.js +1 -0
  746. package/bizar-dash/dist/assets/Chip-OPjSKl2I.js.map +1 -0
  747. package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js → EmptyState-BrLA8mbE.js} +1 -1
  748. package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js.map → EmptyState-BrLA8mbE.js.map} +1 -1
  749. package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js +11 -0
  750. package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js.map +1 -0
  751. package/bizar-dash/dist/assets/{Grid-C62gCPqt.js → Grid-B7NgNtff.js} +1 -1
  752. package/bizar-dash/dist/assets/{Grid-C62gCPqt.js.map → Grid-B7NgNtff.js.map} +1 -1
  753. package/bizar-dash/dist/assets/Input-BW_5Sl6N.js +1 -0
  754. package/bizar-dash/dist/assets/Input-BW_5Sl6N.js.map +1 -0
  755. package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js +21 -0
  756. package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js.map +1 -0
  757. package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js +67 -0
  758. package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js.map +1 -0
  759. package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js +13 -0
  760. package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js.map +1 -0
  761. package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js +1 -0
  762. package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js.map +1 -0
  763. package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js +1 -0
  764. package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js.map +1 -0
  765. package/bizar-dash/dist/assets/Select-B6Ho36Tq.js +11 -0
  766. package/bizar-dash/dist/assets/Select-B6Ho36Tq.js.map +1 -0
  767. package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js +1 -0
  768. package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js.map +1 -0
  769. package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js +38 -0
  770. package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js.map +1 -0
  771. package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js +1 -0
  772. package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js.map +1 -0
  773. package/bizar-dash/dist/assets/Slider-B_jPr-SR.js +1 -0
  774. package/bizar-dash/dist/assets/Slider-B_jPr-SR.js.map +1 -0
  775. package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js +1 -0
  776. package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js.map +1 -0
  777. package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js +10 -0
  778. package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js.map +1 -0
  779. package/bizar-dash/dist/assets/TasksView-BXADmjgb.js +1 -0
  780. package/bizar-dash/dist/assets/TasksView-BXADmjgb.js.map +1 -0
  781. package/bizar-dash/dist/assets/Textarea-KIN98DVH.js +1 -0
  782. package/bizar-dash/dist/assets/Textarea-KIN98DVH.js.map +1 -0
  783. package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js → ViewHeader-CPbqI-w8.js} +1 -1
  784. package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js.map → ViewHeader-CPbqI-w8.js.map} +1 -1
  785. package/bizar-dash/dist/assets/{brain-DeoXNDE2.js → brain-jN_ldx3U.js} +1 -1
  786. package/bizar-dash/dist/assets/{brain-DeoXNDE2.js.map → brain-jN_ldx3U.js.map} +1 -1
  787. package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js → calendar-DZGgPP2_.js} +2 -2
  788. package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js.map → calendar-DZGgPP2_.js.map} +1 -1
  789. package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js → circle-check-XhUtiACZ.js} +1 -1
  790. package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js.map → circle-check-XhUtiACZ.js.map} +1 -1
  791. package/bizar-dash/dist/assets/clock-BXBnSbox.js +6 -0
  792. package/bizar-dash/dist/assets/clock-BXBnSbox.js.map +1 -0
  793. package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js → cmdk-D15rXxc5.js} +2 -2
  794. package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js.map → cmdk-D15rXxc5.js.map} +1 -1
  795. package/bizar-dash/dist/assets/dnd-kit-Bormfg7j.js +5 -0
  796. package/bizar-dash/dist/assets/{dnd-kit-DR2Qzzxk.js.map → dnd-kit-Bormfg7j.js.map} +1 -1
  797. package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js +11 -0
  798. package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js.map +1 -0
  799. package/bizar-dash/dist/assets/index-C0JBGB5M.js +1 -0
  800. package/bizar-dash/dist/assets/index-C0JBGB5M.js.map +1 -0
  801. package/bizar-dash/dist/assets/index-CrWI7sQR.js +1 -0
  802. package/bizar-dash/dist/assets/index-CrWI7sQR.js.map +1 -0
  803. package/bizar-dash/dist/assets/main-CCimEcWH.js +134 -0
  804. package/bizar-dash/dist/assets/main-CCimEcWH.js.map +1 -0
  805. package/bizar-dash/dist/assets/{main-COdgjqbZ.css → main-CcQfRfIJ.css} +1 -1
  806. package/bizar-dash/dist/assets/{minus-CrStJTZ7.js → play-B0rTjpSg.js} +2 -2
  807. package/bizar-dash/dist/assets/play-B0rTjpSg.js.map +1 -0
  808. package/bizar-dash/dist/assets/plus-BaTQsS9G.js +6 -0
  809. package/bizar-dash/dist/assets/plus-BaTQsS9G.js.map +1 -0
  810. package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js +6 -0
  811. package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js.map +1 -0
  812. package/bizar-dash/dist/assets/terminal-k-1HFHcN.js +11 -0
  813. package/bizar-dash/dist/assets/terminal-k-1HFHcN.js.map +1 -0
  814. package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js +6 -0
  815. package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js.map +1 -0
  816. package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js +6 -0
  817. package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js.map +1 -0
  818. package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js → wrench-CbBE0oQ0.js} +2 -2
  819. package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js.map → wrench-CbBE0oQ0.js.map} +1 -1
  820. package/bizar-dash/dist/v8.html +3 -3
  821. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  822. package/bizar-dash/src/server/api.mjs +15 -0
  823. package/bizar-dash/src/server/bg-poller.mjs +81 -1
  824. package/bizar-dash/src/server/bg-poller.test.mjs +28 -0
  825. package/bizar-dash/src/server/progress-parser.mjs +237 -0
  826. package/bizar-dash/src/server/progress-parser.test.mjs +105 -0
  827. package/bizar-dash/src/server/routes/agents-cc.mjs +381 -0
  828. package/bizar-dash/src/server/routes/agents-cc.test.mjs +35 -0
  829. package/bizar-dash/src/server/routes/goals.mjs +307 -0
  830. package/bizar-dash/src/server/routes/spawn.mjs +59 -0
  831. package/bizar-dash/src/server/routes/tasks.mjs +11 -0
  832. package/bizar-dash/src/server/server.mjs +1 -1
  833. package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  834. package/bizar-dash/src/web/v8/App.tsx +56 -7
  835. package/bizar-dash/src/web/v8/__tests__/App.test.tsx +2 -2
  836. package/bizar-dash/src/web/v8/__tests__/BackgroundJobsView.test.tsx +172 -0
  837. package/bizar-dash/src/web/v8/__tests__/MemoryView.test.tsx +91 -0
  838. package/bizar-dash/src/web/v8/__tests__/NotificationsPopover.test.tsx +91 -0
  839. package/bizar-dash/src/web/v8/__tests__/SchedulesView.test.tsx +157 -0
  840. package/bizar-dash/src/web/v8/__tests__/Topbar.test.tsx +86 -0
  841. package/bizar-dash/src/web/v8/__tests__/changelog.test.tsx +79 -0
  842. package/bizar-dash/src/web/v8/__tests__/control-plane.test.tsx +104 -0
  843. package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +10 -4
  844. package/bizar-dash/src/web/v8/__tests__/useFetch.test.ts +92 -0
  845. package/bizar-dash/src/web/v8/__tests__/useWebSocket.test.ts +87 -0
  846. package/bizar-dash/src/web/v8/__tests__/views.test.tsx +116 -40
  847. package/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
  848. package/bizar-dash/src/web/v8/data/types.ts +156 -0
  849. package/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
  850. package/bizar-dash/src/web/v8/data/useWebSocket.ts +161 -0
  851. package/bizar-dash/src/web/v8/shell/Sidebar.tsx +46 -12
  852. package/bizar-dash/src/web/v8/shell/Topbar.tsx +30 -4
  853. package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +283 -0
  854. package/bizar-dash/src/web/v8/ui/agents/AgentStreamPanel.tsx +371 -0
  855. package/bizar-dash/src/web/v8/ui/feedback/NotificationsPopover.tsx +239 -0
  856. package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +251 -0
  857. package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +6 -3
  858. package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +3 -3
  859. package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +10 -5
  860. package/bizar-dash/src/web/v8/ui/styles/globals.css +5 -0
  861. package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +415 -16
  862. package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +151 -87
  863. package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +442 -0
  864. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.test.tsx +1 -1
  865. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +148 -30
  866. package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +176 -67
  867. package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +78 -11
  868. package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +212 -42
  869. package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +112 -52
  870. package/bizar-dash/src/web/v8/views/Router.tsx +23 -37
  871. package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +395 -0
  872. package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +651 -210
  873. package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +142 -49
  874. package/bizar-dash/tests/components/Button.test.tsx +51 -14
  875. package/bizar-dash/tests/components/Card.test.tsx +37 -20
  876. package/bizar-dash/tests/components/Dialog.test.tsx +80 -0
  877. package/bizar-dash/tests/components/Toast.test.tsx +48 -95
  878. package/bizar-dash/tests/goals-decompose.test.mjs +179 -0
  879. package/bizar-dash/tests/setup.ts +21 -0
  880. package/bizar-dash/tests/ui/primitives/VisuallyHidden.test.tsx +30 -15
  881. package/bizar-dash/vite.config.ts +15 -0
  882. package/bizar-dash/vitest.config.ts +4 -1
  883. package/cli/bin.mjs +32 -0
  884. package/cli/install.mjs +26 -1
  885. package/cli/provision-claude.mjs +86 -0
  886. package/package.json +1 -1
  887. package/packages/sdk/.harness/agents.json +17 -0
  888. package/packages/sdk/.harness/topology.json +4 -0
  889. package/scripts/run-dev.mjs +84 -0
  890. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js +0 -6
  891. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js.map +0 -1
  892. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js +0 -1
  893. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js.map +0 -1
  894. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js +0 -1
  895. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js.map +0 -1
  896. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js +0 -8
  897. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js.map +0 -1
  898. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js +0 -1
  899. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js.map +0 -1
  900. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js +0 -11
  901. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js.map +0 -1
  902. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js +0 -21
  903. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js.map +0 -1
  904. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js +0 -67
  905. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js.map +0 -1
  906. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js +0 -13
  907. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js.map +0 -1
  908. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js +0 -1
  909. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js.map +0 -1
  910. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js +0 -1
  911. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js.map +0 -1
  912. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js +0 -30
  913. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js.map +0 -1
  914. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js +0 -48
  915. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js.map +0 -1
  916. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js +0 -11
  917. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js.map +0 -1
  918. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js +0 -1
  919. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js.map +0 -1
  920. package/bizar-dash/dist/assets/dnd-kit-DR2Qzzxk.js +0 -5
  921. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js +0 -6
  922. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js.map +0 -1
  923. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js +0 -6
  924. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js.map +0 -1
  925. package/bizar-dash/dist/assets/main-Cw6gybzS.js +0 -109
  926. package/bizar-dash/dist/assets/main-Cw6gybzS.js.map +0 -1
  927. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js +0 -6
  928. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js.map +0 -1
  929. package/bizar-dash/dist/assets/minus-CrStJTZ7.js.map +0 -1
  930. /package/bizar-dash/tests/{BackgroundAgents.test.tsx → v7-archive/BackgroundAgents.test.tsx} +0 -0
  931. /package/bizar-dash/tests/{a11y → v7-archive/a11y}/forms.test.tsx +0 -0
  932. /package/bizar-dash/tests/{a11y.test.tsx → v7-archive/a11y.test.tsx} +0 -0
  933. /package/bizar-dash/tests/{autosave.test.tsx → v7-archive/autosave.test.tsx} +0 -0
  934. /package/bizar-dash/tests/{backup-restore.test.tsx → v7-archive/backup-restore.test.tsx} +0 -0
  935. /package/bizar-dash/tests/{chat-composer.test.tsx → v7-archive/chat-composer.test.tsx} +0 -0
  936. /package/bizar-dash/tests/{communication-log.test.tsx → v7-archive/communication-log.test.tsx} +0 -0
  937. /package/bizar-dash/tests/{components → v7-archive/components}/Modal.test.tsx +0 -0
  938. /package/bizar-dash/tests/{components → v7-archive/components}/Spinner.test.tsx +0 -0
  939. /package/bizar-dash/tests/{components → v7-archive/components}/StatusBadge.test.tsx +0 -0
  940. /package/bizar-dash/tests/{components → v7-archive/components}/doctor-panel.test.tsx +0 -0
  941. /package/bizar-dash/tests/{components → v7-archive/components}/screenshot-ocr.test.tsx +0 -0
  942. /package/bizar-dash/tests/{components → v7-archive/components}/settings-search.test.tsx +0 -0
  943. /package/bizar-dash/tests/{components → v7-archive/components}/workspace-selector.test.tsx +0 -0
  944. /package/bizar-dash/tests/{ui → v7-archive}/controls/Button.test.tsx +0 -0
  945. /package/bizar-dash/tests/{ui → v7-archive}/controls/Checkbox.test.tsx +0 -0
  946. /package/bizar-dash/tests/{ui → v7-archive}/controls/IconButton.test.tsx +0 -0
  947. /package/bizar-dash/tests/{ui → v7-archive}/controls/Kbd.test.tsx +0 -0
  948. /package/bizar-dash/tests/{ui → v7-archive}/controls/NumberInput.test.tsx +0 -0
  949. /package/bizar-dash/tests/{ui → v7-archive}/controls/RadioGroup.test.tsx +0 -0
  950. /package/bizar-dash/tests/{ui → v7-archive}/controls/SearchInput.test.tsx +0 -0
  951. /package/bizar-dash/tests/{ui → v7-archive}/controls/Select.test.tsx +0 -0
  952. /package/bizar-dash/tests/{ui → v7-archive}/controls/Slider.test.tsx +0 -0
  953. /package/bizar-dash/tests/{ui → v7-archive}/controls/TextInput.test.tsx +0 -0
  954. /package/bizar-dash/tests/{ui → v7-archive}/controls/Textarea.test.tsx +0 -0
  955. /package/bizar-dash/tests/{ui → v7-archive}/controls/Toggle.test.tsx +0 -0
  956. /package/bizar-dash/tests/{ui → v7-archive}/data/BarChart.test.tsx +0 -0
  957. /package/bizar-dash/tests/{ui → v7-archive}/data/DataTable.test.tsx +0 -0
  958. /package/bizar-dash/tests/{ui → v7-archive}/data/EmptyState.test.tsx +0 -0
  959. /package/bizar-dash/tests/{ui → v7-archive}/data/ErrorState.test.tsx +0 -0
  960. /package/bizar-dash/tests/{ui → v7-archive}/data/KeyValueList.test.tsx +0 -0
  961. /package/bizar-dash/tests/{ui → v7-archive}/data/LoadingState.test.tsx +0 -0
  962. /package/bizar-dash/tests/{ui → v7-archive}/data/Sparkline.test.tsx +0 -0
  963. /package/bizar-dash/tests/{ui → v7-archive}/data/StatTile.test.tsx +0 -0
  964. /package/bizar-dash/tests/{dep-graph.test.tsx → v7-archive/dep-graph.test.tsx} +0 -0
  965. /package/bizar-dash/tests/{eval-web-ui.test.tsx → v7-archive/eval-web-ui.test.tsx} +0 -0
  966. /package/bizar-dash/tests/{event-log.test.tsx → v7-archive/event-log.test.tsx} +0 -0
  967. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Badge.test.tsx +0 -0
  968. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Dialog.test.tsx +0 -0
  969. /package/bizar-dash/tests/{ui → v7-archive}/feedback/ProgressBar.test.tsx +0 -0
  970. /package/bizar-dash/tests/{ui → v7-archive}/feedback/StatusDot.test.tsx +0 -0
  971. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Toast.test.tsx +0 -0
  972. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Tooltip.test.tsx +0 -0
  973. /package/bizar-dash/tests/{goal-input.test.tsx → v7-archive/goal-input.test.tsx} +0 -0
  974. /package/bizar-dash/tests/{goap-planner.test.ts → v7-archive/goap-planner.test.ts} +0 -0
  975. /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useModal.test.tsx +0 -0
  976. /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useToast.test.tsx +0 -0
  977. /package/bizar-dash/tests/{ui → v7-archive}/layout/AppShell.test.tsx +0 -0
  978. /package/bizar-dash/tests/{ui → v7-archive}/layout/Breadcrumbs.test.tsx +0 -0
  979. /package/bizar-dash/tests/{ui → v7-archive}/layout/Panel.test.tsx +0 -0
  980. /package/bizar-dash/tests/{ui → v7-archive}/layout/PanelHeader.test.tsx +0 -0
  981. /package/bizar-dash/tests/{ui → v7-archive}/layout/Sidebar.test.tsx +0 -0
  982. /package/bizar-dash/tests/{ui → v7-archive}/layout/Tabs.test.tsx +0 -0
  983. /package/bizar-dash/tests/{ui → v7-archive}/layout/Topbar.test.tsx +0 -0
  984. /package/bizar-dash/tests/{ui → v7-archive}/layout/ViewHeader.test.tsx +0 -0
  985. /package/bizar-dash/tests/{lib → v7-archive/lib}/i18n.test.ts +0 -0
  986. /package/bizar-dash/tests/{lib → v7-archive/lib}/search-fuzzy.test.ts +0 -0
  987. /package/bizar-dash/tests/{lib → v7-archive/lib}/utils.test.ts +0 -0
  988. /package/bizar-dash/tests/{memory-graph-view.test.tsx → v7-archive/memory-graph-view.test.tsx} +0 -0
  989. /package/bizar-dash/tests/{mobile-chat.test.tsx → v7-archive/mobile-chat.test.tsx} +0 -0
  990. /package/bizar-dash/tests/{mobile-layout.test.tsx → v7-archive/mobile-layout.test.tsx} +0 -0
  991. /package/bizar-dash/tests/{mobile-overview.test.tsx → v7-archive/mobile-overview.test.tsx} +0 -0
  992. /package/bizar-dash/tests/{mobile-settings.test.tsx → v7-archive/mobile-settings.test.tsx} +0 -0
  993. /package/bizar-dash/tests/{mobile-tasks.test.tsx → v7-archive/mobile-tasks.test.tsx} +0 -0
  994. /package/bizar-dash/tests/{ui → v7-archive}/navigation/CommandPalette.test.tsx +0 -0
  995. /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavGroup.test.tsx +0 -0
  996. /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavLink.test.tsx +0 -0
  997. /package/bizar-dash/tests/{quality-gates.test.tsx → v7-archive/quality-gates.test.tsx} +0 -0
  998. /package/bizar-dash/tests/{settings-layout.test.tsx → v7-archive/settings-layout.test.tsx} +0 -0
  999. /package/bizar-dash/tests/{settings-mode-wiring.test.tsx → v7-archive/settings-mode-wiring.test.tsx} +0 -0
  1000. /package/bizar-dash/tests/{settings-nav.test.tsx → v7-archive/settings-nav.test.tsx} +0 -0
  1001. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Box.test.tsx +0 -0
  1002. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Grid.test.tsx +0 -0
  1003. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Inline.test.tsx +0 -0
  1004. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Separator.test.tsx +0 -0
  1005. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Stack.test.tsx +0 -0
  1006. /package/bizar-dash/tests/{views → v7-archive/views}/Agents.test.tsx +0 -0
  1007. /package/bizar-dash/tests/{views → v7-archive/views}/Memory.test.tsx +0 -0
  1008. /package/bizar-dash/tests/{views → v7-archive/views}/Overview.test.tsx +0 -0
  1009. /package/bizar-dash/tests/{views → v7-archive/views}/Tasks.test.tsx +0 -0
  1010. /package/bizar-dash/tests/{views → v7-archive/views}/sidebar.test.tsx +0 -0
  1011. /package/bizar-dash/tests/{views → v7-archive/views}/topbar.test.tsx +0 -0
  1012. /package/bizar-dash/tests/{voice-recorder.test.tsx → v7-archive/voice-recorder.test.tsx} +0 -0
@@ -0,0 +1,807 @@
1
+ # Dashboard UI Migration Guide
2
+
3
+ > For Bizar Harness `f040-dashboard-redesign` and future maintainers.
4
+ > Targets the new design system at `bizar-dash/src/web/ui/`.
5
+
6
+ ---
7
+
8
+ ## 1. Overview
9
+
10
+ ### Why migrate incrementally
11
+
12
+ Migrating all views in one pass is high-risk: the dashboard has 20+ views, a large CSS surface, and active development on the Overview, Tasks, and Agents redesigns. Replacing everything at once would block the current session's work and create an unreviewable diff. Instead, each view is migrated independently, tested in isolation, and committed separately. This keeps VCR (Verification Completion Ratio) at 1.0 throughout and allows rollback of a single view without affecting the rest.
13
+
14
+ ### What's in the new ui/ library
15
+
16
+ The new design system lives at `bizar-dash/src/web/ui/` and is organized into seven categories:
17
+
18
+ | Category | Path | Purpose |
19
+ |---|---|---|
20
+ | `styles/` | `ui/styles/` | `reset.css`, `tokens.css`, `globals.css` — token definitions and base resets |
21
+ | `theme/` | `ui/theme/ThemeProvider, useTheme` | Light/dark switching, token exposure |
22
+ | `utils/` | `ui/utils/cx` | Class-name combiner (drop-in for `lib/utils/cn`) |
23
+ | `primitives/` | `ui/primitives/` | Box, Stack, Inline, Grid, Separator, VisuallyHidden |
24
+ | `controls/` | `ui/controls/` | Button, IconButton, Toggle, TextInput, NumberInput, Select, Checkbox, RadioGroup, Slider, SearchInput, Kbd |
25
+ | `data/` | `ui/data/` | StatTile, Sparkline, BarChart, DataTable, KeyValueList, EmptyState, LoadingState, ErrorState |
26
+ | `feedback/` | `ui/feedback/` | Toast, Dialog, Tooltip, Badge, StatusDot, ProgressBar |
27
+ | `layout/` | `ui/layout/` | AppShell, Sidebar, Topbar, Panel, PanelHeader, Tabs, Breadcrumbs |
28
+ | `navigation/` | `ui/navigation/` | NavLink, NavGroup, CommandPalette |
29
+
30
+ ### What stays
31
+
32
+ The old components at `bizar-dash/src/web/components/` (Button, Card, Modal, etc.) and the legacy CSS at `bizar-dash/src/web/styles/main.css` are **still functional**. They are not removed during migration. A view is considered migrated when it imports exclusively from `ui/`; the old components remain available for views that have not yet been migrated.
33
+
34
+ ### Token-first migration principle
35
+
36
+ **Always switch to CSS variables BEFORE swapping components.** This separates concerns: first make the old component tree themable via tokens, then swap the components. Skipping this step means theme bugs get locked inside new components and become harder to find.
37
+
38
+ ---
39
+
40
+ ## 2. Migration Order
41
+
42
+ | # | View | Old components used (typical) | Reason for order |
43
+ |---|---|---|---|
44
+ | 1 | **Settings** | Card, Button, Toggle, Select | Simplest view; few components; validates the migration pattern end-to-end |
45
+ | 2 | **Providers** | Card, Button, Badge, Toggle | Low complexity, no external data dependencies |
46
+ | 3 | **Memory** | Card, Button, StatTile, DataTable | Demonstrates data components; validates token bindings for numeric displays |
47
+ | 4 | **Activity** | Card, Badge, StatusDot | Low interactivity; validates badge/status migration |
48
+ | 5 | **History** | Card, Button, DataTable | Demonstrates table + pagination; uses tabular-nums token |
49
+ | 6 | **Configs** | Card, Button, TextInput, Toggle | Form-heavy; validates input migration |
50
+ | 7 | **Doctor** | Card, Badge, ErrorState, Button | Uses semantic tokens (error, warning); validates dark mode for diagnostics |
51
+ | 8 | **Artifacts** | Card, Button, Badge, Dialog | File/artifact list; validates dialog + badge in context |
52
+ | 9 | **BackgroundAgents** | Card, Button, Toggle, StatTile | Agent list; validates numeric/stat components |
53
+ | 10 | **Schedules** | Card, Button, DataTable, Toggle | Temporal data; validates time formatting with tokens |
54
+ | 11 | **Chat** | Card, Button, Input, Dialog | High interactivity; do late because changes here risk sessions |
55
+ | 12 | **Eval** | Card, Button, BarChart, StatTile | Analytics-heavy; validates chart components and data bindings |
56
+ | 13 | **EvalReport** | Card, BarChart, DataTable, Badge | Most complex analytics view; depends on Eval (#12) being stable |
57
+ | 14 | **GoalPlanner** | Card, Button, Panel, Tabs | Layout-heavy (tabs + panels); validates full layout stack |
58
+ | 15 | **Harness** | Card, Button, Toggle, StatTile | Configuration + stats; leverages several categories |
59
+ | 16 | **MiniMaxUsage** | Card, BarChart, StatTile, DataTable | Chart-heavy; depends on BarChart being settled |
60
+ | 17 | **Mods** | Card, Button, Toggle, Badge | Extension list; straightforward |
61
+ | 18 | **ModView** | Card, Button, Panel, Tabs | Detail view for a single mod; layout-heavy |
62
+ | 19 | **Skills** | Card, Button, Toggle, Badge | Simple list view |
63
+ | 20 | **SpawnAgentModal** | Dialog, Button, Select, TextInput | Modal form; validates Dialog + form controls |
64
+ | 21 | **Workspace** | AppShell, Sidebar, Topbar, Panel, NavLink | Heavy layout shell; last because it affects every view |
65
+
66
+ > **Note:** Overview, Tasks, and Agents are being redesigned in the current session (`f040-dashboard-redesign`) and are excluded from this migration guide. Do not migrate them here.
67
+
68
+ ---
69
+
70
+ ## 3. Per-Component Migration Guide
71
+
72
+ ### 3.1 Primitives
73
+
74
+ #### Box
75
+
76
+ - **Old:** `<div className={cn("flex flex-col p-4")}>` from `lib/utils/cn`
77
+ - **New:** `<Box padding="4" direction="col">` from `ui/primitives/Box`
78
+
79
+ #### Stack (vertical)
80
+
81
+ - **Old:** `<div className="flex flex-col gap-2">`
82
+ - **New:** `<Stack gap="2" direction="vertical">` from `ui/primitives/Stack`
83
+
84
+ #### Inline (horizontal)
85
+
86
+ - **Old:** `<div className="flex items-center gap-2">`
87
+ - **New:** `<Inline gap="2" align="center">` from `ui/primitives/Inline`
88
+
89
+ #### Grid
90
+
91
+ - **Old:** `<div className="grid grid-cols-3 gap-4">`
92
+ - **New:** `<Grid columns={3} gap="4">` from `ui/primitives/Grid`
93
+
94
+ #### Separator
95
+
96
+ - **Old:** `<div className="border-t border-slate-200" />` (light) / `border-slate-700` (dark)
97
+ - **New:** `<Separator />` from `ui/primitives/Separator` — handles light/dark automatically
98
+
99
+ #### VisuallyHidden
100
+
101
+ - **Old:** `<span className="sr-only">Label</span>`
102
+ - **New:** `<VisuallyHidden>Label</VisuallyHidden>` from `ui/primitives/VisuallyHidden`
103
+
104
+ ---
105
+
106
+ ### 3.2 Controls
107
+
108
+ #### Button
109
+
110
+ ```tsx
111
+ // BEFORE — old Button at components/Button.tsx
112
+ import { Button } from 'components/Button';
113
+ import { cn } from 'lib/utils/cn';
114
+
115
+ // Note: old Button had a 'success' variant
116
+ <Button variant="success" onClick={handleSave}>Save</Button>
117
+ <Button variant="ghost" size="sm">Cancel</Button>
118
+ <Button variant="outline" disabled>Loading</Button>
119
+
120
+ // AFTER — new Button at ui/controls/Button.tsx
121
+ import { Button } from 'ui/controls/Button';
122
+ import { cx } from 'ui/utils/cx';
123
+
124
+ // Note: new Button has NO 'success' variant — use 'primary' + success icon
125
+ <Button variant="primary" onClick={handleSave}>Save</Button>
126
+ <Button variant="ghost" size="sm">Cancel</Button>
127
+ <Button variant="outline" disabled>Loading</Button>
128
+ ```
129
+
130
+ **Gotcha:** The new `Button` does NOT have a `success` variant. For success actions, use `variant="primary"` and add a checkmark icon inside the button label. For destructive actions, use `variant="destructive"`.
131
+
132
+ #### IconButton
133
+
134
+ ```tsx
135
+ // BEFORE
136
+ import { IconButton } from 'components/Button';
137
+ <IconButton icon={<TrashIcon />} onClick={handleDelete} aria-label="Delete" />
138
+
139
+ // AFTER
140
+ import { IconButton } from 'ui/controls/IconButton';
141
+ <IconButton icon={<TrashIcon />} onClick={handleDelete} label="Delete" />
142
+ ```
143
+
144
+ #### Toggle
145
+
146
+ ```tsx
147
+ // BEFORE
148
+ import { Toggle } from 'components/Toggle';
149
+ <Toggle checked={enabled} onChange={setEnabled} label="Enable feature" />
150
+
151
+ // AFTER
152
+ import { Toggle } from 'ui/controls/Toggle';
153
+ <Toggle checked={enabled} onChange={setEnabled} label="Enable feature" />
154
+ // API is largely the same; tokens are now wired internally
155
+ ```
156
+
157
+ #### TextInput / NumberInput / SearchInput
158
+
159
+ ```tsx
160
+ // BEFORE
161
+ import { TextInput } from 'components/Input';
162
+ <TextInput value={name} onChange={e => setName(e.target.value)} placeholder="Name" />
163
+
164
+ // AFTER
165
+ import { TextInput } from 'ui/controls/TextInput';
166
+ <TextInput value={name} onChange={setName} placeholder="Name" />
167
+ // Note: onChange now receives the parsed value directly, not an event
168
+ ```
169
+
170
+ **Gotcha:** `onChange` signature changed from `(e: React.ChangeEvent) => void` to `(value: string) => void`. Update all handlers accordingly.
171
+
172
+ #### Select
173
+
174
+ ```tsx
175
+ // BEFORE
176
+ import { Select } from 'components/Select';
177
+ <Select value={provider} onChange={setProvider} options={providerOptions} />
178
+
179
+ // AFTER
180
+ import { Select } from 'ui/controls/Select';
181
+ <Select value={provider} onChange={setProvider} options={providerOptions} />
182
+ // API is the same; styling is now token-driven
183
+ ```
184
+
185
+ #### Checkbox
186
+
187
+ ```tsx
188
+ // BEFORE
189
+ import { Checkbox } from 'components/Checkbox';
190
+ <Checkbox checked={checked} onChange={setChecked} label="Accept terms" />
191
+
192
+ // AFTER
193
+ import { Checkbox } from 'ui/controls/Checkbox';
194
+ <Checkbox checked={checked} onChange={setChecked} label="Accept terms" />
195
+ ```
196
+
197
+ #### RadioGroup
198
+
199
+ ```tsx
200
+ // BEFORE
201
+ import { RadioGroup } from 'components/RadioGroup';
202
+ <RadioGroup value={mode} onChange={setMode} options={modeOptions} />
203
+
204
+ // AFTER
205
+ import { RadioGroup } from 'ui/controls/RadioGroup';
206
+ <RadioGroup value={mode} onChange={setMode} options={modeOptions} />
207
+ ```
208
+
209
+ #### Slider
210
+
211
+ ```tsx
212
+ // BEFORE
213
+ import { Slider } from 'components/Slider';
214
+ <Slider value={threshold} onChange={setThreshold} min={0} max={100} step={1} />
215
+
216
+ // AFTER
217
+ import { Slider } from 'ui/controls/Slider';
218
+ <Slider value={threshold} onChange={setThreshold} min={0} max={100} step={1} />
219
+ ```
220
+
221
+ #### Kbd
222
+
223
+ ```tsx
224
+ // BEFORE — custom styled <kbd> element
225
+ <kbd className="px-1 py-0.5 rounded border border-slate-300 text-xs font-mono">Ctrl</kbd>
226
+
227
+ // AFTER
228
+ import { Kbd } from 'ui/controls/Kbd';
229
+ <Kbd>Ctrl</Kbd>
230
+ ```
231
+
232
+ ---
233
+
234
+ ### 3.3 Data
235
+
236
+ #### StatTile
237
+
238
+ ```tsx
239
+ // BEFORE — custom Card with numeric display
240
+ import { Card } from 'components/Card';
241
+ <Card className="p-4">
242
+ <span className="text-sm text-slate-500">Total Requests</span>
243
+ <span className="text-2xl font-bold font-mono">12,482</span>
244
+ </Card>
245
+
246
+ // AFTER — dedicated StatTile at ui/data/StatTile
247
+ import { StatTile } from 'ui/data/StatTile';
248
+ <StatTile label="Total Requests" value={12482} format="number" />
249
+ ```
250
+
251
+ #### Sparkline
252
+
253
+ ```tsx
254
+ // BEFORE — custom SVG or third-party
255
+ import { Sparkline } from 'components/Charts';
256
+
257
+ // AFTER
258
+ import { Sparkline } from 'ui/data/Sparkline';
259
+ <Sparkline data={[10, 40, 25, 60, 55, 85, 70]} width={120} height={32} />
260
+ ```
261
+
262
+ #### BarChart
263
+
264
+ ```tsx
265
+ // BEFORE
266
+ import { BarChart } from 'components/Charts';
267
+ <BarChart data={chartData} height={200} />
268
+
269
+ // AFTER
270
+ import { BarChart } from 'ui/data/BarChart';
271
+ <BarChart data={chartData} height={200} />
272
+ ```
273
+
274
+ #### DataTable
275
+
276
+ ```tsx
277
+ // BEFORE
278
+ import { DataTable } from 'components/DataTable';
279
+ <DataTable columns={columns} data={rows} onSort={handleSort} />
280
+
281
+ // AFTER
282
+ import { DataTable } from 'ui/data/DataTable';
283
+ <DataTable columns={columns} data={rows} onSort={handleSort} />
284
+ // New: numeric columns automatically use tabular-nums
285
+ ```
286
+
287
+ **Gotcha:** The new `DataTable` applies `font-variant-numeric: tabular-nums` to numeric cells automatically via `globals.css`. Do not manually add `font-mono` to numeric columns — it is already handled.
288
+
289
+ #### KeyValueList
290
+
291
+ ```tsx
292
+ // BEFORE — custom dl/dt/dd layout
293
+ <dl className="grid grid-cols-2 gap-2">
294
+ {entries.map(([k, v]) => (
295
+ <>
296
+ <dt className="text-sm text-slate-500">{k}</dt>
297
+ <dd className="text-sm font-mono">{v}</dd>
298
+ </>
299
+ ))}
300
+ </dl>
301
+
302
+ // AFTER
303
+ import { KeyValueList } from 'ui/data/KeyValueList';
304
+ <KeyValueList entries={entries} />
305
+ ```
306
+
307
+ #### EmptyState / LoadingState / ErrorState
308
+
309
+ ```tsx
310
+ // BEFORE
311
+ <div className="flex flex-col items-center justify-center p-8 text-slate-500">
312
+ <Icon className="w-8 h-8 mb-2" />
313
+ <span>No items found</span>
314
+ </div>
315
+
316
+ // AFTER
317
+ import { EmptyState } from 'ui/data/EmptyState';
318
+ import { LoadingState } from 'ui/data/LoadingState';
319
+ import { ErrorState } from 'ui/data/ErrorState';
320
+
321
+ <EmptyState icon={<Icon />} message="No items found" />
322
+ <LoadingState />
323
+ <ErrorState message={error.message} onRetry={retry} />
324
+ ```
325
+
326
+ ---
327
+
328
+ ### 3.4 Feedback
329
+
330
+ #### Toast
331
+
332
+ ```tsx
333
+ // BEFORE
334
+ import { toast } from 'react-hot-toast';
335
+ toast.success('Saved!');
336
+ toast.error('Failed to save');
337
+
338
+ // AFTER
339
+ import { useToast } from 'ui/feedback/Toast';
340
+ // Note: Toast is consumed via the ToastProvider (already in AppShell)
341
+ // Use via context: const { addToast } = useToast();
342
+ // addToast({ variant: 'success', message: 'Saved!' });
343
+ ```
344
+
345
+ #### Dialog
346
+
347
+ ```tsx
348
+ // BEFORE
349
+ import { Modal } from 'components/Modal';
350
+ <Modal isOpen={open} onClose={handleClose} title="Confirm">
351
+ <p>Are you sure?</p>
352
+ <Button onClick={handleConfirm}>Confirm</Button>
353
+ </Modal>
354
+
355
+ // AFTER
356
+ import { Dialog } from 'ui/feedback/Dialog';
357
+ import { DialogTrigger } from 'ui/feedback/DialogTrigger';
358
+ <Dialog open={open} onOpenChange={setOpen} title="Confirm">
359
+ <p>Are you sure?</p>
360
+ <DialogFooter>
361
+ <Button variant="ghost" onClick={handleClose}>Cancel</Button>
362
+ <Button variant="primary" onClick={handleConfirm}>Confirm</Button>
363
+ </DialogFooter>
364
+ </Dialog>
365
+ ```
366
+
367
+ **Gotcha:** The new `Dialog` uses controlled `open` prop. If the old `Modal` was uncontrolled, wrap it in a local `useState` to control it.
368
+
369
+ #### Tooltip
370
+
371
+ ```tsx
372
+ // BEFORE
373
+ import { Tooltip } from 'components/Tooltip';
374
+ <Tooltip content="Settings">
375
+ <button>...</button>
376
+ </Tooltip>
377
+
378
+ // AFTER
379
+ import { Tooltip } from 'ui/feedback/Tooltip';
380
+ <Tooltip content="Settings">
381
+ <button>...</button>
382
+ </Tooltip>
383
+ ```
384
+
385
+ #### Badge / StatusDot
386
+
387
+ ```tsx
388
+ // BEFORE
389
+ import { Badge } from 'components/Badge';
390
+ <Badge variant="success">Active</Badge>
391
+ <Badge variant="warning">Pending</Badge>
392
+
393
+ // AFTER
394
+ import { Badge } from 'ui/feedback/Badge';
395
+ import { StatusDot } from 'ui/feedback/StatusDot';
396
+ <Badge variant="success">Active</Badge>
397
+ <StatusDot status="active" /> {/* inline indicator */}
398
+ ```
399
+
400
+ #### ProgressBar
401
+
402
+ ```tsx
403
+ // BEFORE — custom div with width percentage
404
+ <div className="h-2 bg-slate-200 rounded-full overflow-hidden">
405
+ <div className="h-full bg-blue-500 rounded-full" style={{ width: `${pct}%` }} />
406
+ </div>
407
+
408
+ // AFTER
409
+ import { ProgressBar } from 'ui/feedback/ProgressBar';
410
+ <ProgressBar value={pct} size="md" />
411
+ ```
412
+
413
+ ---
414
+
415
+ ### 3.5 Layout
416
+
417
+ #### Panel (replacement for Card)
418
+
419
+ ```tsx
420
+ // BEFORE
421
+ import { Card } from 'components/Card';
422
+ <Card className="p-4">
423
+ <h3>Title</h3>
424
+ <p>Content</p>
425
+ </Card>
426
+
427
+ // AFTER
428
+ import { Panel } from 'ui/layout/Panel';
429
+ import { PanelHeader } from 'ui/layout/PanelHeader';
430
+ <Panel>
431
+ <PanelHeader title="Title" />
432
+ <p>Content</p>
433
+ </Panel>
434
+ ```
435
+
436
+ **Gotcha:** `Card` and `Panel` are different components. The new `Panel` has built-in `PanelHeader` slot and uses `--surface-*` tokens instead of hardcoded slate colors. Do not import `Panel` expecting it to be a drop-in `Card` replacement — Panel has a different content model.
437
+
438
+ #### Tabs
439
+
440
+ ```tsx
441
+ // BEFORE
442
+ import { Tabs } from 'components/Tabs';
443
+ <Tabs active={tab} onChange={setTab} tabs={[{ id: 'a', label: 'Tab A' }]} />
444
+
445
+ // AFTER
446
+ import { Tabs } from 'ui/layout/Tabs';
447
+ import { Tab } from 'ui/layout/Tab';
448
+ <Tabs active={tab} onChange={setTab}>
449
+ <Tab id="a" label="Tab A">Content</Tab>
450
+ <Tab id="b" label="Tab B">Content</Tab>
451
+ </Tabs>
452
+ ```
453
+
454
+ **Gotcha:** The new `Tabs` is a controlled compound component. The old `Tabs` may have accepted an array; the new one uses `Tab` children.
455
+
456
+ #### Breadcrumbs
457
+
458
+ ```tsx
459
+ // BEFORE
460
+ <nav className="flex items-center gap-1 text-sm text-slate-500">
461
+ <a href="/" className="hover:text-slate-700">Home</a>
462
+ <ChevronRight className="w-3 h-3" />
463
+ <span className="text-slate-900">Current</span>
464
+ </nav>
465
+
466
+ // AFTER
467
+ import { Breadcrumbs } from 'ui/layout/Breadcrumbs';
468
+ import { BreadcrumbItem } from 'ui/layout/BreadcrumbItem';
469
+ <Breadcrumbs>
470
+ <BreadcrumbItem href="/">Home</BreadcrumbItem>
471
+ <BreadcrumbItem>Current</BreadcrumbItem>
472
+ </Breadcrumbs>
473
+ ```
474
+
475
+ #### AppShell / Sidebar / Topbar
476
+
477
+ These are structural components that wrap the full view. When migrating `Workspace`, these will replace the custom layout divs.
478
+
479
+ ```tsx
480
+ // BEFORE — custom layout divs in Workspace.tsx
481
+ <div className="flex h-screen overflow-hidden bg-white">
482
+ <aside className="w-60 border-r border-slate-200">Sidebar</aside>
483
+ <div className="flex flex-col flex-1">
484
+ <header className="h-14 border-b border-slate-200">Topbar</header>
485
+ <main className="flex-1 overflow-auto">Content</main>
486
+ </div>
487
+ </div>
488
+
489
+ // AFTER
490
+ import { AppShell } from 'ui/layout/AppShell';
491
+ import { Sidebar } from 'ui/layout/Sidebar';
492
+ import { Topbar } from 'ui/layout/Topbar';
493
+ <AppShell
494
+ sidebar={<Sidebar items={navItems} />}
495
+ topbar={<Topbar title="Workspace" />}
496
+ >
497
+ Content
498
+ </AppShell>
499
+ ```
500
+
501
+ ---
502
+
503
+ ### 3.6 Navigation
504
+
505
+ #### NavLink
506
+
507
+ ```tsx
508
+ // BEFORE
509
+ import { NavLink } from 'components/NavLink';
510
+ <NavLink to="/settings" icon={<SettingsIcon />} active={currentPath === '/settings'}>
511
+ Settings
512
+ </NavLink>
513
+
514
+ // AFTER
515
+ import { NavLink } from 'ui/navigation/NavLink';
516
+ <NavLink href="/settings" icon={<SettingsIcon />} isActive={currentPath === '/settings'}>
517
+ Settings
518
+ </NavLink>
519
+ ```
520
+
521
+ #### NavGroup
522
+
523
+ ```tsx
524
+ // BEFORE — custom collapsible nav section
525
+ <div className="px-3 py-2">
526
+ <button className="flex items-center justify-between w-full text-sm font-medium">
527
+ Agents <ChevronDown className="w-4 h-4" />
528
+ </button>
529
+ <div className="mt-1 ml-2 space-y-1">{children}</div>
530
+ </div>
531
+
532
+ // AFTER
533
+ import { NavGroup } from 'ui/navigation/NavGroup';
534
+ <NavGroup label="Agents" icon={<ChevronDownIcon />}>
535
+ {children}
536
+ </NavGroup>
537
+ ```
538
+
539
+ #### CommandPalette
540
+
541
+ ```tsx
542
+ // BEFORE — custom command search modal
543
+ // (many views built custom search modals)
544
+
545
+ // AFTER
546
+ import { CommandPalette } from 'ui/navigation/CommandPalette';
547
+ // Use the provider at App level; individual views register commands via context
548
+ ```
549
+
550
+ ---
551
+
552
+ ## 4. Token Reference
553
+
554
+ Tokens are CSS custom properties defined in `ui/styles/tokens.css` and available globally. They are the **only** permitted way to express color, spacing, and type values in migrated views.
555
+
556
+ ### Colors
557
+
558
+ ```css
559
+ /* Surface */
560
+ --surface-base: /* base background */
561
+ --surface-raised: /* cards, panels */
562
+ --surface-overlay: /* dialogs, dropdowns */
563
+ --surface-muted: /* disabled, secondary */
564
+
565
+ /* Text */
566
+ --text-primary: /* primary text */
567
+ --text-secondary: /* secondary / muted text */
568
+ --text-disabled: /* disabled state */
569
+ --text-inverse: /* text on dark backgrounds */
570
+
571
+ /* Border */
572
+ --border-default: /* default border */
573
+ --border-subtle: /* hairline, dividers */
574
+ --border-strong: /* emphasized borders */
575
+
576
+ /* Accent */
577
+ --accent-primary: /* primary interactive */
578
+ --accent-primary-hover:
579
+ --accent-secondary:
580
+ --accent-muted:
581
+
582
+ /* Semantic */
583
+ --semantic-success: /* success / active */
584
+ --semantic-warning: /* warning / pending */
585
+ --semantic-error: /* error / danger */
586
+ --semantic-info: /* info / neutral */
587
+
588
+ /* Chart (pre-bound to accessible palette) */
589
+ --chart-1: --accent-primary
590
+ --chart-2: --accent-secondary
591
+ --chart-3: --semantic-success
592
+ --chart-4: --semantic-warning
593
+ --chart-5: --semantic-info
594
+ ```
595
+
596
+ ### Spacing Scale
597
+
598
+ ```css
599
+ --space-0: 0
600
+ --space-px: 1px
601
+ --space-0-5: 0.125rem /* 2px */
602
+ --space-1: 0.25rem /* 4px */
603
+ --space-1-5: 0.375rem /* 6px */
604
+ --space-2: 0.5rem /* 8px */
605
+ --space-2-5: 0.625rem /* 10px */
606
+ --space-3: 0.75rem /* 12px */
607
+ --space-3-5: 0.875rem /* 14px */
608
+ --space-4: 1rem /* 16px */
609
+ --space-5: 1.25rem /* 20px */
610
+ --space-6: 1.5rem /* 24px */
611
+ --space-8: 2rem /* 32px */
612
+ --space-10: 2.5rem /* 40px */
613
+ --space-12: 3rem /* 48px */
614
+ --space-16: 4rem /* 64px */
615
+ ```
616
+
617
+ ### Type Scale
618
+
619
+ ```css
620
+ --text-xs: 0.75rem /* 12px */
621
+ --text-sm: 0.875rem /* 14px */
622
+ --text-base: 1rem /* 16px */
623
+ --text-lg: 1.125rem /* 18px */
624
+ --text-xl: 1.25rem /* 20px */
625
+ --text-2xl: 1.5rem /* 24px */
626
+ --text-3xl: 1.875rem /* 30px */
627
+ --text-4xl: 2.25rem /* 36px */
628
+ ```
629
+
630
+ ### Radii
631
+
632
+ ```css
633
+ --radius-sm: 0.25rem /* 4px — small chips, badges */
634
+ --radius-md: 0.375rem /* 6px — buttons, inputs */
635
+ --radius-lg: 0.5rem /* 8px — cards, panels */
636
+ --radius-xl: 0.75rem /* 12px — dialogs */
637
+ --radius-full: 9999px /* pills, avatars */
638
+ ```
639
+
640
+ ### Shadows
641
+
642
+ The design system uses **no shadows beyond hairline borders**. Do not add `box-shadow` to panels or cards. If you need elevation, use the `--surface-overlay` token with a subtle border instead.
643
+
644
+ ```css
645
+ /* No shadow tokens exist. The system is border-based, not shadow-based. */
646
+ ```
647
+
648
+ ### Animation Tokens
649
+
650
+ ```css
651
+ --duration-fast: 100ms
652
+ --duration-normal: 200ms
653
+ --duration-slow: 300ms
654
+ --ease-default: cubic-bezier(0.4, 0, 0.2, 1)
655
+ --ease-in: cubic-bezier(0.4, 0, 1, 1)
656
+ --ease-out: cubic-bezier(0, 0, 0.2, 1)
657
+ --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1)
658
+ ```
659
+
660
+ ### Layout Dimensions
661
+
662
+ ```css
663
+ --sidebar-width: 16rem /* 256px */
664
+ --sidebar-width-narrow: 12rem /* 192px */
665
+ --topbar-height: 3.5rem /* 56px */
666
+ --panel-gap: 1rem /* 16px */
667
+ --content-max-width: 1280px
668
+ ```
669
+
670
+ ---
671
+
672
+ ## 5. Common Gotchas
673
+
674
+ 1. **Don't import from `lib/utils` for className — use `ui/utils/cx`**
675
+ The legacy `lib/utils/cn` merges Tailwind classes at runtime. The new `ui/utils/cx` is a thin wrapper that also handles token-aware conditional classes. Both exist during migration; prefer `cx` in new code.
676
+
677
+ 2. **Old `Card` lives at `components/Card.tsx` — new `Panel` lives at `ui/layout/Panel.tsx`. They're different.**
678
+ `Card` uses hardcoded slate colors and padding conventions from the old design. `Panel` uses `--surface-*` tokens and has a `PanelHeader` slot. Do not alias one as the other.
679
+
680
+ 3. **Tokens are CSS custom properties — use `var(--token)` in CSS or `tokens.colorTokens.accent` in TS**
681
+ The `useTheme()` hook from `ui/theme/` exposes `tokens` as a typed object. Always use tokens rather than raw color strings. For one-off cases in CSS, `var(--accent-primary)` is preferred over `#hex`.
682
+
683
+ 4. **Use `font-variant-numeric: tabular-nums` (already on body in globals.css) for numeric columns**
684
+ The `globals.css` already applies `font-variant-numeric: tabular-nums` to `body`. Numeric displays (DataTable cells, StatTile values, chart labels) should not add `font-mono` — they should rely on the global token. If a numeric column looks wrong, check the computed style before adding overrides.
685
+
686
+ 5. **Light/dark theming: switch via `useTheme().setTheme('dark')` — no manual className flipping**
687
+ The `useTheme()` hook returns `{ theme, setTheme, tokens }`. Do not add `dark:` className prefixes in component code. If a component behaves differently in dark mode, it should query `--text-primary` etc. via the token system.
688
+
689
+ 6. **The new design system has NO gradients, NO shadows beyond hairline. If you're tempted to add one, push back.**
690
+ The design rules at `.harness/arch-rules.json` enforce border-based elevation, not shadow-based. Adding a gradient or shadow is a design decision that belongs in the token definition, not in a view.
691
+
692
+ 7. **`onChange` signature changes on form controls are common. Check each control's type signature.**
693
+ TextInput, NumberInput, SearchInput all changed `onChange` from `(e: React.ChangeEvent) => void` to `(value: T) => void`. SearchInput may additionally debounce.
694
+
695
+ 8. **Dialog is now a controlled compound component. Uncontrolled usage requires a local `useState`.**
696
+ The old `Modal` may have auto-handled open/close state. The new `Dialog` is fully controlled via the `open`/`onOpenChange` props.
697
+
698
+ ---
699
+
700
+ ## 6. Testing Migration
701
+
702
+ Tests for migrated UI components live at:
703
+
704
+ ```
705
+ bizar-dash/tests/components/ui/*.test.tsx
706
+ ```
707
+
708
+ ### Setup
709
+
710
+ Use the same RTL (react-testing-library) setup as the legacy tests in `bizar-dash/tests/`. Each test file should import from the `ui/` path aliases defined in the Vite config:
711
+
712
+ ```tsx
713
+ // e.g. bizar-dash/tests/components/ui/Button.test.tsx
714
+ import { render, screen, userEvent } from 'test/setup';
715
+ import { Button } from 'ui/controls/Button';
716
+ import { ThemeProvider } from 'ui/theme/ThemeProvider';
717
+
718
+ test('Button renders with correct token-driven styles', async () => {
719
+ render(
720
+ <ThemeProvider>
721
+ <Button variant="primary">Click me</Button>
722
+ </ThemeProvider>
723
+ );
724
+ expect(screen.getByRole('button', { name: 'Click me' })).toBeVisible();
725
+ });
726
+ ```
727
+
728
+ ### What to test per migrated view
729
+
730
+ For each migrated view, existing tests should continue to pass (no behavior change). Add new tests for:
731
+
732
+ - **Token correctness:** verify a component reads from CSS tokens, not hardcoded colors
733
+ - **Theme switching:** render in `'light'` and `'dark'` mode via `useTheme().setTheme`, assert no visual breakage
734
+ - **Accessibility:** verify `aria-` attributes are correctly set on controls that use them (e.g. `Toggle`, `Checkbox`, `RadioGroup`)
735
+ - **Focus management:** for `Dialog`, verify focus trapping and escape-key closing
736
+
737
+ ### Running tests
738
+
739
+ ```sh
740
+ # Run ui component tests
741
+ bun test bizar-dash/tests/components/ui/
742
+
743
+ # Run all dashboard tests
744
+ bun test bizar-dash/tests/
745
+
746
+ # E2E (full plugin load)
747
+ make e2e
748
+ ```
749
+
750
+ ---
751
+
752
+ ## 7. Checklist Per View
753
+
754
+ Use this checklist for each view migration. Copy and fill in the view name.
755
+
756
+ ---
757
+
758
+ ### Migrating `<ViewName>`
759
+
760
+ ```markdown
761
+ ## Migrating <ViewName>
762
+
763
+ - [ ] Read the current view at `bizar-dash/src/web/views/<ViewName>/index.tsx`
764
+ - [ ] List all old components used (Button, Card, Badge, etc.)
765
+ - [ ] List all hardcoded color values (hex, rgb, named colors)
766
+ - [ ] Replace `lib/utils/cn` imports with `ui/utils/cx`
767
+ - [ ] Replace old `Card` with `ui/layout/Panel` + `ui/layout/PanelHeader`
768
+ - [ ] Replace old `Button` with `ui/controls/Button` (note: 'success' → 'primary' + icon)
769
+ - [ ] Replace other old controls with new equivalents (Toggle, Select, TextInput, etc.)
770
+ - [ ] Replace data components (StatTile, DataTable, BarChart, etc.)
771
+ - [ ] Replace feedback components (Badge, StatusDot, Dialog, etc.)
772
+ - [ ] Replace layout components (Tabs, Breadcrumbs, etc.)
773
+ - [ ] Replace navigation components (NavLink, NavGroup, etc.)
774
+ - [ ] Switch all hardcoded colors to `var(--token)` or `tokens.colorTokens.*`
775
+ - [ ] Add `ThemeProvider` wrapper if not already present in view
776
+ - [ ] Test in light mode
777
+ - [ ] Test in dark mode
778
+ - [ ] Run `bun run typecheck` — must pass
779
+ - [ ] Run `bun test bizar-dash/tests/` — all tests must pass
780
+ - [ ] Run `make e2e` — plugin loads, dashboard renders
781
+ - [ ] Update CHANGELOG.md (add `dashboard-ui-migration: migrated <ViewName>` entry)
782
+ - [ ] Commit with message: "migrate(<ViewName>): use new ui/ design system"
783
+ ```
784
+
785
+ ---
786
+
787
+ ## 8. Open Questions
788
+
789
+ The following questions should be resolved before mass migration begins:
790
+
791
+ 1. **Should old `components/Button.tsx` be removed after all views migrate, or kept as a compat shim?**
792
+ Keeping it as a shim adds maintenance burden. Removing it requires a full audit that no dangling imports exist. Recommend: remove after all 20 views are migrated and a final grep for `from 'components/Button'` returns nothing.
793
+
794
+ 2. **Should the old `styles/main.css` be split into per-view CSS, or kept as one file?**
795
+ The legacy `main.css` contains global resets and utility classes. The new `ui/styles/` is modular. A decision is needed on whether legacy utility classes (e.g. `flex`, `grid`, `text-sm`) are still needed in migrated views or if the new `Stack`/`Inline`/`Grid` primitives fully replace them.
796
+
797
+ 3. **Should we add Storybook for `ui/` components?**
798
+ The current test setup uses RTL. Storybook would enable visual regression testing and design review. The cost is maintaining `.stories.tsx` files alongside the components. Recommend adding after the first 5 views are migrated (to have enough examples).
799
+
800
+ 4. **Should mobile views share the same `ui/` library or have their own?**
801
+ The mobile dashboard at `bizar-dash/src/web/mobile/` currently uses the same component paths. The new `ui/` library does not yet have mobile-specific responsive tokens. If mobile is in scope, a responsive token audit is needed before mobile views can migrate.
802
+
803
+ 5. **How should third-party chart libraries (if any) be integrated with the token system?**
804
+ If `BarChart` or `Sparkline` wrap a third-party library, chart colors must be bound to chart tokens (`--chart-1` through `--chart-5`) rather than passed as hex strings. Confirm this is enforced in the component implementation.
805
+
806
+ 6. **Should the migration include a visual regression baseline?**
807
+ With 20 views migrating incrementally, a visual regression tool (e.g. Playwright screenshots) would catch unintended style changes. Without it, only manual review catches token drift. Recommend setting up a basic screenshot CI after view 3 is migrated.