@polderlabs/bizar 8.1.0 → 10.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bizar-dash/BROWSER_VERIFICATION.md +190 -0
- package/bizar-dash/CHANGELOG.md +452 -0
- package/bizar-dash/CONTROL_SURFACES.md +157 -0
- package/bizar-dash/SETTINGS_AUDIT.md +225 -0
- package/bizar-dash/dist/assets/ActivityFeed-DbZT1TnN.js +11 -0
- package/bizar-dash/dist/assets/ActivityFeed-DbZT1TnN.js.map +1 -0
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js +7 -0
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js.map +1 -0
- package/bizar-dash/dist/assets/AdminView-DSbzp67e.js +11 -0
- package/bizar-dash/dist/assets/AdminView-DSbzp67e.js.map +1 -0
- package/bizar-dash/dist/assets/AgentsView-BaR-e4UO.js +13 -0
- package/bizar-dash/dist/assets/AgentsView-BaR-e4UO.js.map +1 -0
- package/bizar-dash/dist/assets/ArtifactsView-Dddh5NWn.js +6 -0
- package/bizar-dash/dist/assets/ArtifactsView-Dddh5NWn.js.map +1 -0
- package/bizar-dash/dist/assets/AuthView-CcTxahxz.js +16 -0
- package/bizar-dash/dist/assets/AuthView-CcTxahxz.js.map +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-DxiSs69H.js +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-DxiSs69H.js.map +1 -0
- package/bizar-dash/dist/assets/BackupView-BPS8REBD.js +1 -0
- package/bizar-dash/dist/assets/BackupView-BPS8REBD.js.map +1 -0
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js +1 -0
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js.map +1 -0
- package/bizar-dash/dist/assets/{Card-BzJeYR2D.js → Card-ZAdgpn3-.js} +1 -1
- package/bizar-dash/dist/assets/{Card-BzJeYR2D.js.map → Card-ZAdgpn3-.js.map} +1 -1
- package/bizar-dash/dist/assets/ChatView-CM_mrwom.js +9 -0
- package/bizar-dash/dist/assets/ChatView-CM_mrwom.js.map +1 -0
- package/bizar-dash/dist/assets/{Chip-CN2bvm7a.js → Chip-k5K9DYAf.js} +1 -1
- package/bizar-dash/dist/assets/{Chip-CN2bvm7a.js.map → Chip-k5K9DYAf.js.map} +1 -1
- package/bizar-dash/dist/assets/ClaudeSessionsView-Dq40JNVC.js +1 -0
- package/bizar-dash/dist/assets/ClaudeSessionsView-Dq40JNVC.js.map +1 -0
- package/bizar-dash/dist/assets/ClipboardView-B-TwPtaC.js +1 -0
- package/bizar-dash/dist/assets/ClipboardView-B-TwPtaC.js.map +1 -0
- package/bizar-dash/dist/assets/ConfigView-C_eZMscY.js +1 -0
- package/bizar-dash/dist/assets/ConfigView-C_eZMscY.js.map +1 -0
- package/bizar-dash/dist/assets/DiagnosticsView-Cex6UdD8.js +2 -0
- package/bizar-dash/dist/assets/DiagnosticsView-Cex6UdD8.js.map +1 -0
- package/bizar-dash/dist/assets/DialogsView-DTMRJd0K.js +6 -0
- package/bizar-dash/dist/assets/DialogsView-DTMRJd0K.js.map +1 -0
- package/bizar-dash/dist/assets/DoctorView-BTCUpzXT.js +6 -0
- package/bizar-dash/dist/assets/DoctorView-BTCUpzXT.js.map +1 -0
- package/bizar-dash/dist/assets/{EmptyState-DEiBv4-r.js → EmptyState-DQzo47a_.js} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-DEiBv4-r.js.map → EmptyState-DQzo47a_.js.map} +1 -1
- package/bizar-dash/dist/assets/EnvVarsView-Dnap-pmQ.js +8 -0
- package/bizar-dash/dist/assets/EnvVarsView-Dnap-pmQ.js.map +1 -0
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js +6 -0
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js.map +1 -0
- package/bizar-dash/dist/assets/EvalView-B0YgoXpm.js +1 -0
- package/bizar-dash/dist/assets/EvalView-B0YgoXpm.js.map +1 -0
- package/bizar-dash/dist/assets/GoalsView-YEbgpx2i.js +6 -0
- package/bizar-dash/dist/assets/GoalsView-YEbgpx2i.js.map +1 -0
- package/bizar-dash/dist/assets/Grid-CN6IV8NB.js +1 -0
- package/bizar-dash/dist/assets/Grid-CN6IV8NB.js.map +1 -0
- package/bizar-dash/dist/assets/HeadroomView-C_-l8ojG.js +11 -0
- package/bizar-dash/dist/assets/HeadroomView-C_-l8ojG.js.map +1 -0
- package/bizar-dash/dist/assets/HistoryView-BICvR96Y.js +1 -0
- package/bizar-dash/dist/assets/HistoryView-BICvR96Y.js.map +1 -0
- package/bizar-dash/dist/assets/Input-BRHotaQu.js +1 -0
- package/bizar-dash/dist/assets/Input-BRHotaQu.js.map +1 -0
- package/bizar-dash/dist/assets/{KanbanCard-DZEaAiEr.js → KanbanCard-BvkJ9Xwg.js} +3 -13
- package/bizar-dash/dist/assets/KanbanCard-BvkJ9Xwg.js.map +1 -0
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js +52 -0
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js.map +1 -0
- package/bizar-dash/dist/assets/LightRAGView-DKfQd0lo.js +6 -0
- package/bizar-dash/dist/assets/LightRAGView-DKfQd0lo.js.map +1 -0
- package/bizar-dash/dist/assets/ListHeader-DRqP1u_I.js +1 -0
- package/bizar-dash/dist/assets/ListHeader-DRqP1u_I.js.map +1 -0
- package/bizar-dash/dist/assets/MemoryView-DouzHGXp.js +8 -0
- package/bizar-dash/dist/assets/MemoryView-DouzHGXp.js.map +1 -0
- package/bizar-dash/dist/assets/MessageBubble-CIapZ4YY.js +29 -0
- package/bizar-dash/dist/assets/MessageBubble-CIapZ4YY.js.map +1 -0
- package/bizar-dash/dist/assets/MiscView-BqxBRW9r.js +1 -0
- package/bizar-dash/dist/assets/MiscView-BqxBRW9r.js.map +1 -0
- package/bizar-dash/dist/assets/ModsView-B9apzm7l.js +6 -0
- package/bizar-dash/dist/assets/ModsView-B9apzm7l.js.map +1 -0
- package/bizar-dash/dist/assets/NotificationsView-O1BrGRRZ.js +6 -0
- package/bizar-dash/dist/assets/NotificationsView-O1BrGRRZ.js.map +1 -0
- package/bizar-dash/dist/assets/ObsidianView-0_Nc0IwJ.js +1 -0
- package/bizar-dash/dist/assets/ObsidianView-0_Nc0IwJ.js.map +1 -0
- package/bizar-dash/dist/assets/OverviewView-D6WmCxyc.js +1 -0
- package/bizar-dash/dist/assets/OverviewView-D6WmCxyc.js.map +1 -0
- package/bizar-dash/dist/assets/ProgressBar-BXqAmiA8.js +1 -0
- package/bizar-dash/dist/assets/ProgressBar-BXqAmiA8.js.map +1 -0
- package/bizar-dash/dist/assets/ProjectsView-BbHq_OF3.js +11 -0
- package/bizar-dash/dist/assets/ProjectsView-BbHq_OF3.js.map +1 -0
- package/bizar-dash/dist/assets/ProvidersView-dQOPha2i.js +11 -0
- package/bizar-dash/dist/assets/ProvidersView-dQOPha2i.js.map +1 -0
- package/bizar-dash/dist/assets/SchedulesView-DllGEgon.js +1 -0
- package/bizar-dash/dist/assets/SchedulesView-DllGEgon.js.map +1 -0
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js +6 -0
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsRow-BNSh_paj.js +1 -0
- package/bizar-dash/dist/assets/SettingsRow-BNSh_paj.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsView-B2LyDoxB.js +18 -0
- package/bizar-dash/dist/assets/SettingsView-B2LyDoxB.js.map +1 -0
- package/bizar-dash/dist/assets/Sheet-C-djzbtS.js +1 -0
- package/bizar-dash/dist/assets/{Sheet-C_sIEw35.js.map → Sheet-C-djzbtS.js.map} +1 -1
- package/bizar-dash/dist/assets/Slider-DmOSInmR.js +1 -0
- package/bizar-dash/dist/assets/Slider-DmOSInmR.js.map +1 -0
- package/bizar-dash/dist/assets/Sparkline-fGhOoGf0.js +1 -0
- package/bizar-dash/dist/assets/Sparkline-fGhOoGf0.js.map +1 -0
- package/bizar-dash/dist/assets/Switch-D5gPfsKd.js +10 -0
- package/bizar-dash/dist/assets/Switch-D5gPfsKd.js.map +1 -0
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js +1 -0
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js.map +1 -0
- package/bizar-dash/dist/assets/{Textarea-Dk97nmjO.js → Textarea-Cv1HX9p1.js} +1 -1
- package/bizar-dash/dist/assets/{Textarea-Dk97nmjO.js.map → Textarea-Cv1HX9p1.js.map} +1 -1
- package/bizar-dash/dist/assets/UpdateView-Bj0LzpMs.js +6 -0
- package/bizar-dash/dist/assets/UpdateView-Bj0LzpMs.js.map +1 -0
- package/bizar-dash/dist/assets/UsageView-CE-23yYu.js +1 -0
- package/bizar-dash/dist/assets/UsageView-CE-23yYu.js.map +1 -0
- package/bizar-dash/dist/assets/{ViewHeader-dPd4zAyj.js → ViewHeader-2Oyjj9Yt.js} +2 -2
- package/bizar-dash/dist/assets/{ViewHeader-dPd4zAyj.js.map → ViewHeader-2Oyjj9Yt.js.map} +1 -1
- package/bizar-dash/dist/assets/VoiceView-C3S92MfP.js +1 -0
- package/bizar-dash/dist/assets/VoiceView-C3S92MfP.js.map +1 -0
- package/bizar-dash/dist/assets/{brain-BajPVibR.js → brain-B8oDQ4kM.js} +1 -1
- package/bizar-dash/dist/assets/{brain-BajPVibR.js.map → brain-B8oDQ4kM.js.map} +1 -1
- package/bizar-dash/dist/assets/{calendar-CaP_Bbgc.js → calendar-C1WTDPNZ.js} +1 -1
- package/bizar-dash/dist/assets/{calendar-CaP_Bbgc.js.map → calendar-C1WTDPNZ.js.map} +1 -1
- package/bizar-dash/dist/assets/chevron-down-DjgW4FtB.js +6 -0
- package/bizar-dash/dist/assets/chevron-down-DjgW4FtB.js.map +1 -0
- package/bizar-dash/dist/assets/circle-COwUk6Jw.js +6 -0
- package/bizar-dash/dist/assets/circle-COwUk6Jw.js.map +1 -0
- package/bizar-dash/dist/assets/circle-alert-D_fRRCnG.js +6 -0
- package/bizar-dash/dist/assets/circle-alert-D_fRRCnG.js.map +1 -0
- package/bizar-dash/dist/assets/circle-check-CYpMZPTO.js +6 -0
- package/bizar-dash/dist/assets/circle-check-CYpMZPTO.js.map +1 -0
- package/bizar-dash/dist/assets/clock-BsVbT1kp.js +6 -0
- package/bizar-dash/dist/assets/clock-BsVbT1kp.js.map +1 -0
- package/bizar-dash/dist/assets/{cmdk-BLWIhKrV.js → cmdk-DMW_3pWz.js} +3 -3
- package/bizar-dash/dist/assets/{cmdk-BLWIhKrV.js.map → cmdk-DMW_3pWz.js.map} +1 -1
- package/bizar-dash/dist/assets/{dnd-kit-DU8GZk7s.js → dnd-kit-DWBZ6HFE.js} +1 -1
- package/bizar-dash/dist/assets/{dnd-kit-DU8GZk7s.js.map → dnd-kit-DWBZ6HFE.js.map} +1 -1
- package/bizar-dash/dist/assets/download-Cct5qHWG.js +6 -0
- package/bizar-dash/dist/assets/download-Cct5qHWG.js.map +1 -0
- package/bizar-dash/dist/assets/external-link-CKZQsK9X.js +6 -0
- package/bizar-dash/dist/assets/external-link-CKZQsK9X.js.map +1 -0
- package/bizar-dash/dist/assets/file-text-DNFl94X6.js +6 -0
- package/bizar-dash/dist/assets/file-text-DNFl94X6.js.map +1 -0
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js +6 -0
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js.map +1 -0
- package/bizar-dash/dist/assets/{git-pull-request-CFRRwdxp.js → git-pull-request-o7G3ez_L.js} +1 -1
- package/bizar-dash/dist/assets/{git-pull-request-CFRRwdxp.js.map → git-pull-request-o7G3ez_L.js.map} +1 -1
- package/bizar-dash/dist/assets/index-CRPdftkz.js +1 -0
- package/bizar-dash/dist/assets/index-CRPdftkz.js.map +1 -0
- package/bizar-dash/dist/assets/index-VI2tohpo.js +1 -0
- package/bizar-dash/dist/assets/index-VI2tohpo.js.map +1 -0
- package/bizar-dash/dist/assets/main-zDgXFFYt.js +244 -0
- package/bizar-dash/dist/assets/main-zDgXFFYt.js.map +1 -0
- package/bizar-dash/dist/assets/pause-B_hjj388.js +6 -0
- package/bizar-dash/dist/assets/pause-B_hjj388.js.map +1 -0
- package/bizar-dash/dist/assets/pencil-BQXiRgKu.js +6 -0
- package/bizar-dash/dist/assets/pencil-BQXiRgKu.js.map +1 -0
- package/bizar-dash/dist/assets/play-DF3wgBsQ.js +6 -0
- package/bizar-dash/dist/assets/play-DF3wgBsQ.js.map +1 -0
- package/bizar-dash/dist/assets/plug-DpD127rq.js +6 -0
- package/bizar-dash/dist/assets/plug-DpD127rq.js.map +1 -0
- package/bizar-dash/dist/assets/{plus-CVH1JB04.js → plus-CbojvfqK.js} +1 -1
- package/bizar-dash/dist/assets/{plus-CVH1JB04.js.map → plus-CbojvfqK.js.map} +1 -1
- package/bizar-dash/dist/assets/power-off-EnQo8iQy.js +6 -0
- package/bizar-dash/dist/assets/power-off-EnQo8iQy.js.map +1 -0
- package/bizar-dash/dist/assets/power-uH0f5Ihr.js +6 -0
- package/bizar-dash/dist/assets/power-uH0f5Ihr.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-ccw-BQ_hQs-U.js +6 -0
- package/bizar-dash/dist/assets/refresh-ccw-BQ_hQs-U.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-cw-CYS8luDH.js +6 -0
- package/bizar-dash/dist/assets/refresh-cw-CYS8luDH.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-ccw-CTVANG1v.js +6 -0
- package/bizar-dash/dist/assets/rotate-ccw-CTVANG1v.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-cw-BSsC5XrT.js +6 -0
- package/bizar-dash/dist/assets/rotate-cw-BSsC5XrT.js.map +1 -0
- package/bizar-dash/dist/assets/save-kxSwq3AI.js +6 -0
- package/bizar-dash/dist/assets/save-kxSwq3AI.js.map +1 -0
- package/bizar-dash/dist/assets/send-DkuyD_Sf.js +6 -0
- package/bizar-dash/dist/assets/send-DkuyD_Sf.js.map +1 -0
- package/bizar-dash/dist/assets/shield-alert-COajyBNI.js +6 -0
- package/bizar-dash/dist/assets/shield-alert-COajyBNI.js.map +1 -0
- package/bizar-dash/dist/assets/{trash-2-JtYRQ79q.js → trash-2-BzH_id_0.js} +1 -1
- package/bizar-dash/dist/assets/{trash-2-JtYRQ79q.js.map → trash-2-BzH_id_0.js.map} +1 -1
- package/bizar-dash/dist/assets/trending-up-DWgBlnxO.js +6 -0
- package/bizar-dash/dist/assets/trending-up-DWgBlnxO.js.map +1 -0
- package/bizar-dash/dist/assets/{triangle-alert-Nzbrm0I2.js → triangle-alert-D3wjJjjj.js} +1 -1
- package/bizar-dash/dist/assets/{triangle-alert-Nzbrm0I2.js.map → triangle-alert-D3wjJjjj.js.map} +1 -1
- package/bizar-dash/dist/assets/upload--yQe-28C.js +6 -0
- package/bizar-dash/dist/assets/upload--yQe-28C.js.map +1 -0
- package/bizar-dash/dist/assets/zap-BVpFD6-i.js +6 -0
- package/bizar-dash/dist/assets/zap-BVpFD6-i.js.map +1 -0
- package/bizar-dash/dist/{v8.html → index.html} +2 -2
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/agents-store.mjs +1 -0
- package/bizar-dash/src/server/api.mjs +10 -0
- package/bizar-dash/src/server/claude-runner.mjs +5 -0
- package/bizar-dash/src/server/dialog-store.mjs +84 -2
- package/bizar-dash/src/server/memory-lightrag.mjs +14 -9
- package/bizar-dash/src/server/progress-parser.mjs +33 -5
- package/bizar-dash/src/server/progress-parser.test.mjs +24 -0
- package/bizar-dash/src/server/routes/admin.mjs +163 -0
- package/bizar-dash/src/server/routes/agents-cc.mjs +171 -24
- package/bizar-dash/src/server/routes/agents.mjs +20 -5
- package/bizar-dash/src/server/routes/claude-session-detail.mjs +38 -0
- package/bizar-dash/src/server/routes/dialogs.mjs +31 -0
- package/bizar-dash/src/server/routes/goals.mjs +117 -13
- package/bizar-dash/src/server/routes/overview.mjs +131 -4
- package/bizar-dash/src/server/routes/overview.test.mjs +65 -0
- package/bizar-dash/src/server/routes/providers.mjs +53 -0
- package/bizar-dash/src/server/routes/spawn.mjs +59 -0
- package/bizar-dash/src/server/routes/tasks.mjs +51 -1
- package/bizar-dash/src/server/server.mjs +21 -10
- package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/bizar-dash/src/web/v8/App.tsx +158 -8
- package/bizar-dash/src/web/v8/__tests__/BackgroundJobsView.test.tsx +172 -0
- package/bizar-dash/src/web/v8/__tests__/MemoryView.test.tsx +91 -0
- package/bizar-dash/src/web/v8/__tests__/NotificationsPopover.test.tsx +91 -0
- package/bizar-dash/src/web/v8/__tests__/SchedulesView.test.tsx +157 -0
- package/bizar-dash/src/web/v8/__tests__/Topbar.test.tsx +86 -0
- package/bizar-dash/src/web/v8/__tests__/admin-view.test.tsx +105 -0
- package/bizar-dash/src/web/v8/__tests__/agent-card-metrics.test.tsx +54 -0
- package/bizar-dash/src/web/v8/__tests__/agent-detail-tasks.test.tsx +68 -0
- package/bizar-dash/src/web/v8/__tests__/agent-hierarchy.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/agents-stuck-banner.test.tsx +142 -0
- package/bizar-dash/src/web/v8/__tests__/artifacts-view.test.tsx +102 -0
- package/bizar-dash/src/web/v8/__tests__/audit-fixes.test.tsx +139 -0
- package/bizar-dash/src/web/v8/__tests__/auth-view.test.tsx +94 -0
- package/bizar-dash/src/web/v8/__tests__/changelog.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/chat-types.test.ts +55 -0
- package/bizar-dash/src/web/v8/__tests__/chat-view.test.tsx +142 -0
- package/bizar-dash/src/web/v8/__tests__/claude-sessions-view.test.tsx +159 -0
- package/bizar-dash/src/web/v8/__tests__/clipboard-view.test.tsx +90 -0
- package/bizar-dash/src/web/v8/__tests__/config-view.test.tsx +111 -0
- package/bizar-dash/src/web/v8/__tests__/dialogs-view.test.tsx +81 -0
- package/bizar-dash/src/web/v8/__tests__/env-vars-view.test.tsx +123 -0
- package/bizar-dash/src/web/v8/__tests__/goals-cc-roundtrip.test.tsx +94 -0
- package/bizar-dash/src/web/v8/__tests__/history-view.test.tsx +96 -0
- package/bizar-dash/src/web/v8/__tests__/lightrag-view.test.tsx +90 -0
- package/bizar-dash/src/web/v8/__tests__/misc-view.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/mods-view.test.tsx +123 -0
- package/bizar-dash/src/web/v8/__tests__/new-views.test.tsx +177 -0
- package/bizar-dash/src/web/v8/__tests__/obsidian-view.test.tsx +82 -0
- package/bizar-dash/src/web/v8/__tests__/overview-trends.test.tsx +87 -0
- package/bizar-dash/src/web/v8/__tests__/projects-view.test.tsx +134 -0
- package/bizar-dash/src/web/v8/__tests__/providers-view.test.tsx +100 -0
- package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +10 -4
- package/bizar-dash/src/web/v8/__tests__/update-view.test.tsx +89 -0
- package/bizar-dash/src/web/v8/__tests__/views.test.tsx +6 -0
- package/bizar-dash/src/web/v8/__tests__/voice-view.test.tsx +80 -0
- package/bizar-dash/src/web/v8/data/types.ts +75 -2
- package/bizar-dash/src/web/v8/data/useWebSocket.ts +54 -1
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +98 -13
- package/bizar-dash/src/web/v8/shell/Topbar.tsx +30 -4
- package/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +96 -15
- package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +202 -15
- package/bizar-dash/src/web/v8/ui/agents/AgentLiveOutput.tsx +252 -0
- package/bizar-dash/src/web/v8/ui/agents/AgentStreamPanel.tsx +1 -1
- package/bizar-dash/src/web/v8/ui/chat/ChatDrawer.tsx +208 -0
- package/bizar-dash/src/web/v8/ui/chat/EventStream.tsx +83 -0
- package/bizar-dash/src/web/v8/ui/chat/MessageBubble.tsx +174 -0
- package/bizar-dash/src/web/v8/ui/data/ListHeader.tsx +94 -0
- package/bizar-dash/src/web/v8/ui/feedback/ErrorState.tsx +116 -0
- package/bizar-dash/src/web/v8/ui/feedback/NotificationsPopover.tsx +239 -0
- package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +34 -1
- package/bizar-dash/src/web/v8/ui/index.ts +7 -1
- package/bizar-dash/src/web/v8/ui/tasks/TaskDetail.tsx +313 -0
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +465 -33
- package/bizar-dash/src/web/v8/views/Admin/AdminView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/Agents/AgentHierarchy.tsx +212 -0
- package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +328 -21
- package/bizar-dash/src/web/v8/views/Artifacts/ArtifactsView.tsx +241 -0
- package/bizar-dash/src/web/v8/views/Auth/AuthView.tsx +175 -0
- package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +442 -0
- package/bizar-dash/src/web/v8/views/Backup/BackupView.tsx +204 -0
- package/bizar-dash/src/web/v8/views/Chat/ChatView.tsx +356 -0
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionDetail.tsx +133 -0
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionsView.tsx +331 -0
- package/bizar-dash/src/web/v8/views/Clipboard/ClipboardView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +22 -7
- package/bizar-dash/src/web/v8/views/Config/ConfigView.tsx +364 -0
- package/bizar-dash/src/web/v8/views/Diagnostics/DiagnosticsView.tsx +160 -0
- package/bizar-dash/src/web/v8/views/Dialogs/DialogsView.tsx +196 -0
- package/bizar-dash/src/web/v8/views/Doctor/DoctorView.tsx +181 -0
- package/bizar-dash/src/web/v8/views/EnvVars/EnvVarsView.tsx +365 -0
- package/bizar-dash/src/web/v8/views/Eval/EvalView.tsx +278 -0
- package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +169 -11
- package/bizar-dash/src/web/v8/views/Headroom/HeadroomView.tsx +201 -0
- package/bizar-dash/src/web/v8/views/History/HistoryView.tsx +227 -0
- package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +13 -3
- package/bizar-dash/src/web/v8/views/LightRAG/LightRAGView.tsx +183 -0
- package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +203 -22
- package/bizar-dash/src/web/v8/views/Misc/MiscView.tsx +159 -0
- package/bizar-dash/src/web/v8/views/Mods/ModsView.tsx +348 -0
- package/bizar-dash/src/web/v8/views/Notifications/NotificationsView.tsx +178 -0
- package/bizar-dash/src/web/v8/views/Obsidian/ObsidianView.tsx +193 -0
- package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +114 -11
- package/bizar-dash/src/web/v8/views/Projects/ProjectsView.tsx +253 -0
- package/bizar-dash/src/web/v8/views/Providers/ProvidersView.tsx +371 -0
- package/bizar-dash/src/web/v8/views/Router.tsx +135 -0
- package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +427 -0
- package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +343 -34
- package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +177 -12
- package/bizar-dash/src/web/v8/views/Update/UpdateView.tsx +270 -0
- package/bizar-dash/src/web/v8/views/Usage/UsageView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/Voice/VoiceView.tsx +192 -0
- package/bizar-dash/tests/goals-decompose.test.mjs +5 -3
- package/bizar-dash/tests/tasks-patch-routes.test.mjs +194 -0
- package/bizar-dash/vite.config.ts +11 -3
- package/cli/__tests__/esm-no-require.test.mjs +97 -0
- package/cli/commands/tailscale.mjs +1 -3
- package/cli/commands/voice.mjs +2 -2
- package/cli/service-env.mjs +4 -5
- package/package.json +12 -3
- package/packages/sdk/dist/agent-registry.d.ts +134 -0
- package/packages/sdk/dist/agent-registry.js +228 -0
- package/packages/sdk/dist/consensus/byzantine.d.ts +159 -0
- package/packages/sdk/dist/consensus/byzantine.js +507 -0
- package/packages/sdk/dist/consensus/index.d.ts +60 -0
- package/packages/sdk/dist/consensus/index.js +76 -0
- package/packages/sdk/dist/consensus/queen.d.ts +86 -0
- package/packages/sdk/dist/consensus/queen.js +158 -0
- package/packages/sdk/dist/consensus/types.d.ts +155 -0
- package/packages/sdk/dist/consensus/types.js +29 -0
- package/packages/sdk/dist/dangerous-patterns.d.ts +27 -0
- package/packages/sdk/dist/dangerous-patterns.js +107 -0
- package/packages/sdk/dist/federation/audit.d.ts +71 -0
- package/packages/sdk/dist/federation/audit.js +133 -0
- package/packages/sdk/dist/federation/budget.d.ts +111 -0
- package/packages/sdk/dist/federation/budget.js +227 -0
- package/packages/sdk/dist/federation/envelope.d.ts +83 -0
- package/packages/sdk/dist/federation/envelope.js +92 -0
- package/packages/sdk/dist/federation/hmac.d.ts +61 -0
- package/packages/sdk/dist/federation/hmac.js +120 -0
- package/packages/sdk/dist/federation/index.d.ts +108 -0
- package/packages/sdk/dist/federation/index.js +275 -0
- package/packages/sdk/dist/federation/pii.d.ts +72 -0
- package/packages/sdk/dist/federation/pii.js +178 -0
- package/packages/sdk/dist/federation/policy.d.ts +50 -0
- package/packages/sdk/dist/federation/policy.js +76 -0
- package/packages/sdk/dist/federation/trust.d.ts +80 -0
- package/packages/sdk/dist/federation/trust.js +126 -0
- package/packages/sdk/dist/fingerprint.d.ts +18 -0
- package/packages/sdk/dist/fingerprint.js +0 -0
- package/packages/sdk/dist/index.d.ts +25 -0
- package/packages/sdk/dist/index.js +25 -0
- package/packages/sdk/dist/mcp/bin.d.ts +16 -0
- package/packages/sdk/dist/mcp/bin.js +46 -0
- package/packages/sdk/dist/mcp/server.d.ts +105 -0
- package/packages/sdk/dist/mcp/server.js +682 -0
- package/packages/sdk/dist/memory/index.d.ts +43 -0
- package/packages/sdk/dist/memory/index.js +159 -0
- package/packages/sdk/dist/router/codemod-intent.d.ts +68 -0
- package/packages/sdk/{src/router/codemod-intent.ts → dist/router/codemod-intent.js} +53 -66
- package/packages/sdk/dist/router/index.d.ts +100 -0
- package/packages/sdk/dist/router/index.js +149 -0
- package/packages/sdk/dist/router/memory-distillation.d.ts +58 -0
- package/packages/sdk/dist/router/memory-distillation.js +195 -0
- package/packages/sdk/dist/router/model-router.d.ts +83 -0
- package/packages/sdk/dist/router/model-router.js +207 -0
- package/packages/sdk/dist/router/q-learning-router.d.ts +85 -0
- package/packages/sdk/dist/router/q-learning-router.js +273 -0
- package/packages/sdk/dist/swarm-topology.d.ts +87 -0
- package/packages/sdk/dist/swarm-topology.js +219 -0
- package/packages/sdk/dist/version.d.ts +5 -0
- package/packages/sdk/dist/version.js +5 -0
- package/packages/sdk/package.json +1 -1
- package/plugins/bizar/LICENSE +21 -0
- package/plugins/bizar/dist/index.d.ts +25 -0
- package/plugins/bizar/dist/index.js +32 -0
- package/plugins/bizar/package.json +18 -0
- package/.claude/CLAUDE.md +0 -15
- package/.claude/agents/_shared/AGENT_BASELINE.md +0 -168
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +0 -412
- package/.claude/agents/_shared/SKILLS.md +0 -109
- package/.claude/agents/agent-browser.md +0 -80
- package/.claude/agents/baldr.md +0 -49
- package/.claude/agents/forseti.md +0 -51
- package/.claude/agents/frigg.md +0 -42
- package/.claude/agents/heimdall.md +0 -33
- package/.claude/agents/hermod.md +0 -53
- package/.claude/agents/mimir.md +0 -49
- package/.claude/agents/odin.md +0 -287
- package/.claude/agents/quick.md +0 -34
- package/.claude/agents/semble-search.md +0 -50
- package/.claude/agents/thor.md +0 -53
- package/.claude/agents/tyr.md +0 -56
- package/.claude/agents/vidarr.md +0 -54
- package/.claude/agents/vor.md +0 -53
- package/.claude/commands/audit.md +0 -25
- package/.claude/commands/bizar.md +0 -22
- package/.claude/commands/explain.md +0 -17
- package/.claude/commands/goal.md +0 -98
- package/.claude/commands/init.md +0 -29
- package/.claude/commands/learn.md +0 -44
- package/.claude/commands/plan.md +0 -35
- package/.claude/commands/plow-through.md +0 -50
- package/.claude/commands/pr-review.md +0 -49
- package/.claude/commands/setup-provider.md +0 -96
- package/.claude/commands/tailscale-serve.md +0 -100
- package/.claude/commands/team.md +0 -132
- package/.claude/commands/test.md +0 -62
- package/.claude/commands/validate.md +0 -68
- package/.claude/commands/visual-plan.md +0 -24
- package/.claude/hooks/README.md +0 -92
- package/.claude/hooks/posttooluse-editwrite.mjs +0 -91
- package/.claude/hooks/pretooluse-bash.mjs +0 -81
- package/.claude/hooks/pretooluse-editwrite.mjs +0 -139
- package/.claude/hooks/sessionend-recall.mjs +0 -74
- package/.claude/hooks/sessionstart-prime.mjs +0 -80
- package/.claude/hooks/userpromptsubmit-tag.mjs +0 -80
- package/.claude/hooks/worker-suggest.mjs +0 -110
- package/.claude/settings.json +0 -125
- package/.claude/settings.local.json +0 -7
- package/.claude/skills/9router/SKILL.md +0 -80
- package/.claude/skills/9router-chat/SKILL.md +0 -73
- package/.claude/skills/9router-embeddings/SKILL.md +0 -69
- package/.claude/skills/9router-image/SKILL.md +0 -86
- package/.claude/skills/9router-stt/SKILL.md +0 -79
- package/.claude/skills/9router-tts/SKILL.md +0 -80
- package/.claude/skills/9router-web-fetch/SKILL.md +0 -99
- package/.claude/skills/9router-web-search/SKILL.md +0 -91
- package/.claude/skills/bizar/README.md +0 -9
- package/.claude/skills/bizar/SKILL.md +0 -450
- package/.claude/skills/cpp-coding-standards/README.md +0 -28
- package/.claude/skills/cpp-coding-standards/SKILL.md +0 -634
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +0 -320
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +0 -229
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +0 -216
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +0 -282
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +0 -96
- package/.claude/skills/cpp-testing/README.md +0 -28
- package/.claude/skills/cpp-testing/SKILL.md +0 -304
- package/.claude/skills/cpp-testing/references/coverage.md +0 -370
- package/.claude/skills/cpp-testing/references/framework-compare.md +0 -175
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +0 -499
- package/.claude/skills/cpp-testing/references/mocking.md +0 -364
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +0 -308
- package/.claude/skills/cubesandbox/SKILL.md +0 -148
- package/.claude/skills/embedded-esp-idf/README.md +0 -41
- package/.claude/skills/embedded-esp-idf/SKILL.md +0 -439
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +0 -214
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +0 -164
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +0 -157
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +0 -159
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +0 -118
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +0 -137
- package/.claude/skills/embedded-esp-idf/references/nvs.md +0 -121
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +0 -192
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +0 -47
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +0 -77
- package/.claude/skills/glyph/SKILL.md +0 -163
- package/.claude/skills/harness-engineering/SKILL.md +0 -143
- package/.claude/skills/lightrag/SKILL.md +0 -81
- package/.claude/skills/memory-protocol/SKILL.md +0 -105
- package/.claude/skills/obsidian/SKILL.md +0 -306
- package/.claude/skills/read-the-damn-docs/SKILL.md +0 -113
- package/.claude/skills/self-improvement/SKILL.md +0 -64
- package/bizar-dash/dist/assets/ActivityFeed-CqF6iSDQ.js +0 -6
- package/bizar-dash/dist/assets/ActivityFeed-CqF6iSDQ.js.map +0 -1
- package/bizar-dash/dist/assets/ActivityView-qdhDjRtL.js +0 -1
- package/bizar-dash/dist/assets/ActivityView-qdhDjRtL.js.map +0 -1
- package/bizar-dash/dist/assets/AgentsView-BwXkOayl.js +0 -28
- package/bizar-dash/dist/assets/AgentsView-BwXkOayl.js.map +0 -1
- package/bizar-dash/dist/assets/Badge-BH4C3aUF.js +0 -1
- package/bizar-dash/dist/assets/Badge-BH4C3aUF.js.map +0 -1
- package/bizar-dash/dist/assets/Button-RmN1RKhE.js +0 -6
- package/bizar-dash/dist/assets/Button-RmN1RKhE.js.map +0 -1
- package/bizar-dash/dist/assets/GoalsView-CvsrzEez.js +0 -6
- package/bizar-dash/dist/assets/GoalsView-CvsrzEez.js.map +0 -1
- package/bizar-dash/dist/assets/KanbanCard-DZEaAiEr.js.map +0 -1
- package/bizar-dash/dist/assets/LibrariesView-CPgKGPpM.js +0 -67
- package/bizar-dash/dist/assets/LibrariesView-CPgKGPpM.js.map +0 -1
- package/bizar-dash/dist/assets/MemoryView-Bbez5pMN.js +0 -13
- package/bizar-dash/dist/assets/MemoryView-Bbez5pMN.js.map +0 -1
- package/bizar-dash/dist/assets/OverviewView-BDegBWgg.js +0 -1
- package/bizar-dash/dist/assets/OverviewView-BDegBWgg.js.map +0 -1
- package/bizar-dash/dist/assets/Select-xwxbK8Ed.js +0 -16
- package/bizar-dash/dist/assets/Select-xwxbK8Ed.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsRow-CppSgkT_.js +0 -10
- package/bizar-dash/dist/assets/SettingsRow-CppSgkT_.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsView-DUc2meHV.js +0 -43
- package/bizar-dash/dist/assets/SettingsView-DUc2meHV.js.map +0 -1
- package/bizar-dash/dist/assets/Sheet-C_sIEw35.js +0 -1
- package/bizar-dash/dist/assets/Sparkline-D664vGWW.js +0 -1
- package/bizar-dash/dist/assets/Sparkline-D664vGWW.js.map +0 -1
- package/bizar-dash/dist/assets/StatTile-BRsUIA6P.js +0 -16
- package/bizar-dash/dist/assets/StatTile-BRsUIA6P.js.map +0 -1
- package/bizar-dash/dist/assets/TasksView-DVyX5-DY.js +0 -1
- package/bizar-dash/dist/assets/TasksView-DVyX5-DY.js.map +0 -1
- package/bizar-dash/dist/assets/index-AL3OLUfz.js +0 -1
- package/bizar-dash/dist/assets/index-AL3OLUfz.js.map +0 -1
- package/bizar-dash/dist/assets/main-LxX9zTRk.js +0 -109
- package/bizar-dash/dist/assets/main-LxX9zTRk.js.map +0 -1
- package/bizar-dash/dist/assets/terminal-B2sSd5t7.js +0 -11
- package/bizar-dash/dist/assets/terminal-B2sSd5t7.js.map +0 -1
- package/bizar-dash/dist/assets/useFetch-CoVWwbml.js +0 -1
- package/bizar-dash/dist/assets/useFetch-CoVWwbml.js.map +0 -1
- package/bizar-dash/dist/assets/useWebSocket-CVIQB8yG.js +0 -1
- package/bizar-dash/dist/assets/useWebSocket-CVIQB8yG.js.map +0 -1
- package/bizar-dash/dist/assets/wrench-B7go551L.js +0 -6
- package/bizar-dash/dist/assets/wrench-B7go551L.js.map +0 -1
- package/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +0 -106
- package/bizar-dash/src/web/v8/views/Tasks/TasksKanbanPlaceholder.tsx +0 -62
- package/packages/sdk/ARCHITECTURE.md +0 -70
- package/packages/sdk/README.md +0 -80
- package/packages/sdk/src/agent-registry.ts +0 -304
- package/packages/sdk/src/consensus/byzantine.ts +0 -587
- package/packages/sdk/src/consensus/index.ts +0 -147
- package/packages/sdk/src/consensus/queen.ts +0 -173
- package/packages/sdk/src/consensus/types.ts +0 -199
- package/packages/sdk/src/dangerous-patterns.ts +0 -127
- package/packages/sdk/src/federation/audit.ts +0 -156
- package/packages/sdk/src/federation/budget.ts +0 -269
- package/packages/sdk/src/federation/envelope.ts +0 -144
- package/packages/sdk/src/federation/hmac.ts +0 -160
- package/packages/sdk/src/federation/index.ts +0 -443
- package/packages/sdk/src/federation/pii.ts +0 -241
- package/packages/sdk/src/federation/policy.ts +0 -112
- package/packages/sdk/src/federation/trust.ts +0 -146
- package/packages/sdk/src/fingerprint.ts +0 -0
- package/packages/sdk/src/index.ts +0 -114
- package/packages/sdk/src/mcp/bin.ts +0 -51
- package/packages/sdk/src/mcp/server.ts +0 -848
- package/packages/sdk/src/memory/index.ts +0 -160
- package/packages/sdk/src/router/index.ts +0 -247
- package/packages/sdk/src/router/memory-distillation-shim.mjs +0 -18
- package/packages/sdk/src/router/memory-distillation.ts +0 -249
- package/packages/sdk/src/router/model-router.ts +0 -235
- package/packages/sdk/src/router/q-learning-router.ts +0 -304
- package/packages/sdk/src/swarm-topology.ts +0 -279
- package/packages/sdk/src/version.ts +0 -4
- package/packages/sdk/tests/agent-registry.test.ts +0 -285
- package/packages/sdk/tests/consensus.test.ts +0 -376
- package/packages/sdk/tests/federation/audit.test.ts +0 -164
- package/packages/sdk/tests/federation/budget.test.ts +0 -189
- package/packages/sdk/tests/federation/envelope.test.ts +0 -120
- package/packages/sdk/tests/federation/hmac.test.ts +0 -194
- package/packages/sdk/tests/federation/orchestrator.test.ts +0 -176
- package/packages/sdk/tests/federation/pii.test.ts +0 -106
- package/packages/sdk/tests/federation/policy.test.ts +0 -140
- package/packages/sdk/tests/federation/trust.test.ts +0 -124
- package/packages/sdk/tests/mcp-tools.test.ts +0 -204
- package/packages/sdk/tests/memory-distillation.test.mjs +0 -186
- package/packages/sdk/tests/model-router.test.mjs +0 -108
- package/packages/sdk/tests/q-learning-router.test.mjs +0 -100
- package/packages/sdk/tests/router-orchestrator.test.mjs +0 -172
- package/packages/sdk/tests/router.test.mjs +0 -91
- package/packages/sdk/tests/sdk.test.mjs +0 -172
- package/packages/sdk/tests/swarm-topology.test.ts +0 -258
- package/packages/sdk/tsconfig.json +0 -25
- /package/bizar-dash/src/web/{v8.html → index.html} +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Browser Verification — v10.0.5
|
|
2
|
+
|
|
3
|
+
> Real Chrome-for-Testing runs against a freshly-booted dashboard
|
|
4
|
+
> server. Closes every "no transcript evidence" stop-hook gap from
|
|
5
|
+
> the v10.0.1 rollup, and ships a logged-in mutation round-trip
|
|
6
|
+
> (Settings PUT / Agent POST / Task POST / CC-style goal append).
|
|
7
|
+
|
|
8
|
+
## How to reproduce
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
# From repo root:
|
|
12
|
+
node tests/e2e/dashboard-browser-smoke.mjs # 7 routes, Overview screenshot
|
|
13
|
+
node tests/e2e/dashboard-auth-walkthrough.mjs # 12 sidebar views, per-view proof
|
|
14
|
+
node tests/e2e/dashboard-mutation-roundtrip.mjs # 4 mutation round-trips to disk
|
|
15
|
+
node tests/e2e/cold-boot-perf.mjs # boot latency regression
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Spawn with `HOME=/tmp/<run>-home-<pid>` so all backend stores
|
|
19
|
+
(agents, tasks, settings, agent-status, projects) redirect to a
|
|
20
|
+
tmp directory — never touches the user's real `$HOME`.
|
|
21
|
+
|
|
22
|
+
Each script writes its shots + `results.json` into a fresh
|
|
23
|
+
`/tmp/bh-{smoke|walkthrough|cold-boot}-<pid>/` directory.
|
|
24
|
+
|
|
25
|
+
## What each run proves
|
|
26
|
+
|
|
27
|
+
### 1. `dashboard-browser-smoke.mjs` (v10-S7)
|
|
28
|
+
|
|
29
|
+
First landing-page evidence. 9/9 PASS — `01-landing.png` is a real
|
|
30
|
+
Overview with sidebar groups (Workspace / Operations / Libraries /
|
|
31
|
+
System), StatTiles reading `Goals at risk 2/4`, `Agents running
|
|
32
|
+
0/5`, `Active tasks 0/0`, `Tokens (24h) —`, Needs-Attention
|
|
33
|
+
"2 of 4 goals at risk. Review PROGRESS.md or the Goals view", and
|
|
34
|
+
the active-project picker showing the persisted fixture name.
|
|
35
|
+
|
|
36
|
+
### 2. `dashboard-auth-walkthrough.mjs` (v10-S10 + v10.0.2, EXPANDED)
|
|
37
|
+
|
|
38
|
+
Closes the v10-S7 limitation: every reachable sidebar view is now
|
|
39
|
+
exercised in a logged-in browser state. Drives `agent-browser`
|
|
40
|
+
through real sidebar clicks (state-based router, not hash),
|
|
41
|
+
screenshots each view, asserts the active sidebar item matches and
|
|
42
|
+
the main region renders view-specific content past the auth gate.
|
|
43
|
+
**15/15 PASS**:
|
|
44
|
+
|
|
45
|
+
| View | innerTextBytes | Active sidebar match | Content match |
|
|
46
|
+
|--------------|---------------:|----------------------|-------------------------------------|
|
|
47
|
+
| Overview | 367 | overview | Active project + Goals at-risk tile |
|
|
48
|
+
| Tasks | 220 | tasks | Kanban columns / count tile |
|
|
49
|
+
| Goals | 740 | goals | G-001/G-002/G-003 cards |
|
|
50
|
+
| Agents | 242 | agents | odin/thor/frigg roster |
|
|
51
|
+
| Activity | 321 | activity | Day-grouped changelog |
|
|
52
|
+
| Memory | 247 | memory | Memory list / source chips |
|
|
53
|
+
| Schedules | 155 | schedules | Recurring schedule list |
|
|
54
|
+
| Background | 147 | background | Background instances / Pause |
|
|
55
|
+
| Skills | 160 | skills | Skills library |
|
|
56
|
+
| MCPs | 152 | mcps | MCP library |
|
|
57
|
+
| Hooks | 164 | hooks | Hooks library |
|
|
58
|
+
| Settings | 4011 | settings | 19-section nav + content |
|
|
59
|
+
|
|
60
|
+
The walkthrough also seeds 3 Bizar agents (odin/thor/frigg), 4
|
|
61
|
+
tasks across the queued/doing/done/blocked columns, a CC session
|
|
62
|
+
stub at `$HOME/.config/bizar/agent-status.json`, and 3 goals in
|
|
63
|
+
`projectRoot/.bizar/PROGRESS.md`. Each reachable sidebar item is
|
|
64
|
+
now screenshot-verified with view-specific content.
|
|
65
|
+
|
|
66
|
+
> Note on chat: the v8 sidebar (`App.tsx:125–160` with
|
|
67
|
+
> `defaultSections={false}`) intentionally does not render a chat
|
|
68
|
+
> button. The 12 items above are the full set the dashboard ships
|
|
69
|
+
> in v10.0.2.
|
|
70
|
+
|
|
71
|
+
### 3. `dashboard-mutation-roundtrip.mjs` (v10.0.2, NEW)
|
|
72
|
+
|
|
73
|
+
Closes the v10.0.1 stop-hook gap: "control and configure
|
|
74
|
+
everything" had no transcript proving any click in the logged-in
|
|
75
|
+
browser actually mutated the backend. Now 4 mutations, each
|
|
76
|
+
proves on-disk persistence **and** that the same API endpoint
|
|
77
|
+
the view consumes returns the new row. **4/4 PASS**:
|
|
78
|
+
|
|
79
|
+
| Mutation | Path on disk | GET-back check |
|
|
80
|
+
|----------------------------|-------------------------------------------------------------|-------------------------------|
|
|
81
|
+
| `PUT /api/settings` | `~/.config/bizar/settings.json` | `GET /api/settings` envelope |
|
|
82
|
+
| `POST /api/agents` | `~/.config/cline/agents/<name>.md` | `GET /api/agents` includes |
|
|
83
|
+
| `POST /api/tasks` | `~/.config/cline/projects/<id>/tasks.json` | `GET /api/tasks` envelope |
|
|
84
|
+
| `POST /api/goals` (CC `/goal`) | `projectRoot/.bizar/PROGRESS.md` | `GET /api/goals` includes |
|
|
85
|
+
|
|
86
|
+
Each result row writes its on-disk evidence (file path + last 280
|
|
87
|
+
bytes after the write) into `results.json` so a reviewer can grep
|
|
88
|
+
the evidence directory for proof.
|
|
89
|
+
|
|
90
|
+
### 4. `cold-boot-perf.mjs` (v10-S9, NEW)
|
|
91
|
+
|
|
92
|
+
Regression for the cold-boot event-loop starvation bug. With both
|
|
93
|
+
opt-outs (`BIZAR_LIGHTRAG_AUTOSTART=0` and `BIZAR_HEADROOM_AUTOSTART=0`)
|
|
94
|
+
the server listens + serves the first `/api/auth/status` request
|
|
95
|
+
inside 2s. Without the opt-outs the boot stays bounded by the async
|
|
96
|
+
fixes shipped in `memory-lightrag.mjs` (sync `execFileSync('command', ...)`
|
|
97
|
+
replaced with async `execFile`) and the new `BIZAR_HEADROOM_AUTOSTART=0`
|
|
98
|
+
env gate in `server.mjs`. **2/2 PASS** — `bootMs=42, firstFetchMs=21`
|
|
99
|
+
(was 3000+ before fix).
|
|
100
|
+
|
|
101
|
+
## Auth model — why no token in the browser
|
|
102
|
+
|
|
103
|
+
`auth.mjs:isAuthRequired()` auto-trusts requests from `127.0.0.1`,
|
|
104
|
+
`::1`, and `::ffff:127.0.0.1`. The browser connects to the dashboard
|
|
105
|
+
over loopback (same as a real user opening it locally), so no bearer
|
|
106
|
+
token needs to be passed. The token still exists for non-loopback
|
|
107
|
+
bind and for plugin-to-dashboard auth — see `~/.cache/bizarharness/dash-auth.json`
|
|
108
|
+
for the v2 HTTP-Basic password and `BIZAR_DASHBOARD_SECRET_PATH` for
|
|
109
|
+
the legacy 64-hex bearer. The walkthrough test neither reads nor
|
|
110
|
+
materializes either.
|
|
111
|
+
|
|
112
|
+
## Found and reported (NOT fixed in this sprint)
|
|
113
|
+
|
|
114
|
+
None for v10.0.2. The cold-boot event-loop starvation from v10-S7
|
|
115
|
+
remains fixed (`memory-lightrag.mjs` async + `BIZAR_HEADROOM_AUTOSTART=0`
|
|
116
|
+
env gate). The walkthrough + mutation round-trip close the
|
|
117
|
+
per-view-verification and "control and configure everything" gaps.
|
|
118
|
+
|
|
119
|
+
## Remaining intentional gaps
|
|
120
|
+
|
|
121
|
+
- **Bundle script tag only.** `dashboard.main_bundle` proves the
|
|
122
|
+
`<script src="/assets/main-*.js">` tag is in the HTML. It does
|
|
123
|
+
not prove the JS executed without errors (would need a console
|
|
124
|
+
listener). ponytail: add a CDP `Runtime.consoleAPICalled`
|
|
125
|
+
subscriber to the smoke.
|
|
126
|
+
- **Chat view.** The v8 sidebar (`App.tsx:125–160`) does not render
|
|
127
|
+
a chat button — ChatView exists but is reachable only via the
|
|
128
|
+
command palette. The walkthrough therefore walks 12 items, not 13.
|
|
129
|
+
|
|
130
|
+
## Recent run evidence
|
|
131
|
+
|
|
132
|
+
- v10.0.2 mutation roundtrip PID 1517930 — 4/4 PASS,
|
|
133
|
+
`results.json` in `/tmp/bh-mut-1517935/`.
|
|
134
|
+
- v10.0.2 walkthrough PID 1511343 — 15/15 PASS, 12 view screenshots
|
|
135
|
+
in `/tmp/bh-walkthrough-1511347/`.
|
|
136
|
+
- v10.0.3 surfaces matrix — 13/13 PASS, 12 screenshots +
|
|
137
|
+
`results.json` in `/tmp/bh-mat-<pid>/`.
|
|
138
|
+
- v10.0.3 coverage proof — 7/7 PASS, 4 screenshots +
|
|
139
|
+
`results.json` in `/tmp/bh-cov-<pid>/`.
|
|
140
|
+
- v10.0.3 CC bridge — 7/7 PASS, 4 screenshots +
|
|
141
|
+
`results.json` in `/tmp/bh-cc-<pid>/`.
|
|
142
|
+
- v10.0.3 CRUD round-trip — 17/17 PASS, 16 mutations across
|
|
143
|
+
agents/tasks/goals/schedules, `results.json` in
|
|
144
|
+
`/tmp/bh-crud-<pid>/`.
|
|
145
|
+
- v10.0.3 data-driven — 6/6 PASS, 3 screenshots +
|
|
146
|
+
`results.json` in `/tmp/bh-data-<pid>/`.
|
|
147
|
+
- v10.0.4 cc-disk fallback — 5/5 PASS, screenshots +
|
|
148
|
+
`results.json` in `/tmp/bh-cc-disk-<pid>/`.
|
|
149
|
+
- v10.0.4 goal-slash — 6/6 PASS, screenshots +
|
|
150
|
+
`results.json` in `/tmp/bh-goal-slash-<pid>/`.
|
|
151
|
+
- v10.0.4 config coverage — 7/7 PASS, screenshots +
|
|
152
|
+
`results.json` in `/tmp/bh-cfg-<pid>/`.
|
|
153
|
+
- v10.0.5 full-surfaces PID 2523918 — **37/37 PASS**, walks
|
|
154
|
+
all Router cases, screenshots in `/tmp/bh-full-<pid>/`.
|
|
155
|
+
- v10.0.5 tier3-batch-a — **7/7 PASS**, mutations across
|
|
156
|
+
env-vars.test, eval.schedules CRUD, mods.reinstall,
|
|
157
|
+
providers.add-key, `results.json` in `/tmp/tier3a-<pid>/`.
|
|
158
|
+
- v10.0.5 tier3-batch-c — **14/14 PASS**, mutations across
|
|
159
|
+
dialogs.{approve,deny,skip,patch}, providers.{create,update,
|
|
160
|
+
delete,enable,disable}, claude-sessions.resume,
|
|
161
|
+
`results.json` in `/tmp/tier3c-<pid>/`.
|
|
162
|
+
- v10.0.5 matrix PID 2527262 — **13/13 PASS**, regression
|
|
163
|
+
guard for v10.0.3 surfaces matrix.
|
|
164
|
+
- v10.0.5 crud-roundtrip PID 2529494 — **17/17 PASS**,
|
|
165
|
+
regression guard for v10.0.3 CRUD round-trip.
|
|
166
|
+
- v10-S10 walkthrough PID 837829 — 8/8 PASS (legacy reference).
|
|
167
|
+
- v10-S9 cold-boot PID 814729 — 2/2 PASS.
|
|
168
|
+
- v10-S7 smoke PID 782897 — 9/9 PASS, 7 screenshots ~65KB.
|
|
169
|
+
|
|
170
|
+
## See also
|
|
171
|
+
|
|
172
|
+
- `tests/e2e/dashboard-browser-smoke.mjs` — landing-page evidence
|
|
173
|
+
- `tests/e2e/dashboard-auth-walkthrough.mjs` — per-view evidence
|
|
174
|
+
- `tests/e2e/dashboard-mutation-roundtrip.mjs` — mutation round-trip
|
|
175
|
+
- `tests/e2e/dashboard-coverage-proof.mjs` — per-agent status grid (v10.0.3-S2)
|
|
176
|
+
- `tests/e2e/dashboard-cc-bridge.mjs` — CC merge + /goal slash (v10.0.3-S3)
|
|
177
|
+
- `tests/e2e/dashboard-crud-roundtrip.mjs` — 16-mutation CRUD (v10.0.3-S4)
|
|
178
|
+
- `tests/e2e/dashboard-data-driven.mjs` — metric tiles + status coverage (v10.0.3-S5)
|
|
179
|
+
- `tests/e2e/dashboard-surfaces-matrix.mjs` — 12-route surfaces matrix (v10.0.3-S6)
|
|
180
|
+
- `tests/e2e/dashboard-cc-disk-fallback.mjs` — CC disk fallback + enrichSession fix (v10.0.4-S1)
|
|
181
|
+
- `tests/e2e/dashboard-cc-goal-slash.mjs` — `/goal` slash command round-trip (v10.0.4-S2)
|
|
182
|
+
- `tests/e2e/dashboard-config-coverage.mjs` — Settings reset + plugin-options + providers/projects/mods (v10.0.4-S3)
|
|
183
|
+
- `tests/e2e/dashboard-full-surfaces.mjs` — 37-route reachability + view-root testids (v10.0.5-M1)
|
|
184
|
+
- `tests/e2e/dashboard-tier3-batch-a.mjs` — 8 missing UI buttons against existing routes (v10.0.5-M2a)
|
|
185
|
+
- `tests/e2e/dashboard-tier3-batch-c.mjs` — 8 new server endpoints + UI buttons (v10.0.5-M2b+M2c)
|
|
186
|
+
- `tests/e2e/cold-boot-perf.mjs` — cold-boot regression
|
|
187
|
+
- `tests/e2e/goals-cc-roundtrip.mjs` — goals CC-shape round-trip
|
|
188
|
+
- `tests/e2e/agent-restart-roundtrip.mjs` — agent restart round-trip
|
|
189
|
+
- `CONTROL_SURFACES.md` — what the dashboard can actually mutate
|
|
190
|
+
- `SETTINGS_AUDIT.md` — Settings-page row-by-row audit
|
package/bizar-dash/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,457 @@
|
|
|
1
1
|
# @polderlabs/bizar-dash — Changelog
|
|
2
2
|
|
|
3
|
+
## v10.0.5 — 2026-07-16
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
Four atomic moves close the umbrella brief end-to-end:
|
|
8
|
+
**37/37 surfaces reachable**, **16 Tier-3 mutations proven
|
|
9
|
+
with E2E**, **8 silent-failure views now surface a
|
|
10
|
+
recoverable error**, and **9 views gained a data-driven
|
|
11
|
+
list header** (count + sparkline + filter chips).
|
|
12
|
+
|
|
13
|
+
### Move 1 — Sidebar reachability
|
|
14
|
+
|
|
15
|
+
- `App.tsx` sections array grew from 12 hard-coded items to
|
|
16
|
+
24, wiring every section already declared in
|
|
17
|
+
`Sidebar.tsx:DEFAULT_SECTIONS`.
|
|
18
|
+
- 17 view files got a `<view>-view` testid on their root
|
|
19
|
+
container.
|
|
20
|
+
- `tests/e2e/dashboard-full-surfaces.mjs` walks all 37 Router
|
|
21
|
+
cases, clicks each sidebar item, and asserts the `<view>-view`
|
|
22
|
+
root testid appears. **37/37 PASS.**
|
|
23
|
+
|
|
24
|
+
### Move 2 — Tier-3 mutation coverage
|
|
25
|
+
|
|
26
|
+
16 atomic mutations across 8 endpoints, all proven with E2E.
|
|
27
|
+
|
|
28
|
+
- **Move 2a — 8 missing UI buttons** wired against existing
|
|
29
|
+
server endpoints: Projects refresh, EnvVars test, Eval
|
|
30
|
+
schedule add/delete, Mods reinstall-instructions + edit,
|
|
31
|
+
Providers add-key, ClaudeSessions send.
|
|
32
|
+
- **Move 2b — 8 new server endpoints**: `POST/PATCH/DELETE`
|
|
33
|
+
on dialogs (`/:id/approve|deny|skip` + `/:id`), providers
|
|
34
|
+
(`POST /`, `PUT /:id`, `DELETE /:id`,
|
|
35
|
+
`POST /:id/enable|disable`), claude-sessions
|
|
36
|
+
(`POST /:id/resume`). `dialog-store.mjs` grew `decide()`
|
|
37
|
+
(sidecar decision file + unlink queue) and `patch()`
|
|
38
|
+
(merge data).
|
|
39
|
+
- **Move 2c — UI buttons for new routes**: DialogsView
|
|
40
|
+
(Approve/Skip/Deny/Dismiss), ProvidersView (New + per-row
|
|
41
|
+
Edit/Enable/Disable/Delete), ClaudeSessionsView (Resume).
|
|
42
|
+
|
|
43
|
+
### Move 3 — ErrorState polish
|
|
44
|
+
|
|
45
|
+
New shared `<ErrorState>` in
|
|
46
|
+
`bizar-dash/src/web/v8/ui/feedback/ErrorState.tsx` with two
|
|
47
|
+
modes — inline (Alert tone=danger banner with optional
|
|
48
|
+
retry) and block (centered icon + title + message + retry,
|
|
49
|
+
mirrors EmptyState).
|
|
50
|
+
|
|
51
|
+
8 silent-failure views now surface a recoverable error
|
|
52
|
+
before falling through to the empty state: History, Goals,
|
|
53
|
+
Activity, Usage, Agents, Libraries (skill/mcp/hook),
|
|
54
|
+
Doctor, Dialogs. Each wires `onRetry={() => fetch.refetch()}`
|
|
55
|
+
so a 500 / network blip is one click away from recovery.
|
|
56
|
+
|
|
57
|
+
### Move 4 — ListHeader polish
|
|
58
|
+
|
|
59
|
+
New shared `<ListHeader>` in
|
|
60
|
+
`bizar-dash/src/web/v8/ui/data/ListHeader.tsx` — title +
|
|
61
|
+
count badge + optional Sparkline + optional filter chips +
|
|
62
|
+
right-aligned actions. Wired into 9 views:
|
|
63
|
+
|
|
64
|
+
- **High-traffic (sparkline):** Activity (per-day bucket
|
|
65
|
+
counts).
|
|
66
|
+
- **High-traffic (count + chips):** Goals (status filter
|
|
67
|
+
chips migrated under ListHeader.filters).
|
|
68
|
+
- **High-traffic (count only):** Agents.
|
|
69
|
+
- **Count-only:** Projects, Providers, Mods, Dialogs,
|
|
70
|
+
EnvVars, Backup.
|
|
71
|
+
|
|
72
|
+
Skipped: Tasks (Kanban already counts), History (custom
|
|
73
|
+
FilterChip interleaves kinds + projects).
|
|
74
|
+
|
|
75
|
+
### Bug fix landed in Move 1
|
|
76
|
+
|
|
77
|
+
DoctorView.tsx called `checks.map` on `snap.data.checks`,
|
|
78
|
+
but the server returns `checks` as
|
|
79
|
+
`{ system, config, services }` (a grouped object), not an
|
|
80
|
+
array. The view crashed on first render and unmounted the
|
|
81
|
+
entire React tree (no ErrorBoundary). Flatten the groups
|
|
82
|
+
into a typed `CheckResult[]` and filter to entries with
|
|
83
|
+
valid name/status/message.
|
|
84
|
+
|
|
85
|
+
### E2E proof
|
|
86
|
+
|
|
87
|
+
- `dashboard-full-surfaces.mjs` — **37/37 PASS**
|
|
88
|
+
- `dashboard-tier3-batch-a.mjs` — **7/7 PASS**
|
|
89
|
+
- `dashboard-tier3-batch-c.mjs` — **14/14 PASS**
|
|
90
|
+
- `dashboard-surfaces-matrix.mjs` — **13/13 PASS**
|
|
91
|
+
- `dashboard-crud-roundtrip.mjs` — **17/17 PASS**
|
|
92
|
+
|
|
93
|
+
## v10.0.4 — 2026-07-15
|
|
94
|
+
|
|
95
|
+
### Highlights
|
|
96
|
+
|
|
97
|
+
Three atomic commits close the three remaining umbrella-brief gaps
|
|
98
|
+
the v10.0.3 stop-hook flagged: live CC roster from disk + correct
|
|
99
|
+
enrichSession path, full `/goal` slash command E2E coverage, and
|
|
100
|
+
full configuration coverage (Settings Reset + plugin-options UI,
|
|
101
|
+
plus E2E proof for providers/projects/mods + the new testids).
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
|
|
105
|
+
- **`enrichSession` path** (`agents-cc.mjs:73`). The function read
|
|
106
|
+
`~/.claude/sessions/<sessionId>/messages.jsonl`, but real CC logs
|
|
107
|
+
live at `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`. The
|
|
108
|
+
path always 404'd, so `lastMessageAt`, `messageCount`, and
|
|
109
|
+
`lastMessageSnippet` never populated. v10.0.4 routes through the
|
|
110
|
+
existing `resolveSessionLog()` which already encodes `cwd`
|
|
111
|
+
correctly.
|
|
112
|
+
- **BIZAR_CC_HOME redirect** (`agents-cc.mjs`). All CC session
|
|
113
|
+
paths now resolve via `ccHome()` which honours `BIZAR_CC_HOME` so
|
|
114
|
+
the test suite can sandbox `$HOME/.claude` into a tmp directory.
|
|
115
|
+
|
|
116
|
+
### Added
|
|
117
|
+
|
|
118
|
+
- **`listAgentsFromDisk()` fallback** (`agents-cc.mjs`). Enumerates
|
|
119
|
+
`$HOME/.claude/sessions/*.json` to mint a CC roster when the
|
|
120
|
+
`claude agents --json` CLI is absent (ENOENT, exit ≠ 0, or timeout).
|
|
121
|
+
When the CLI is present the two rosters are merged by sessionId
|
|
122
|
+
with disk-only fields (`lastMessageAt`/`messageCount`/`lastMessageSnippet`)
|
|
123
|
+
filling in any gaps the CLI left behind.
|
|
124
|
+
- **`extractLastSnippet()` helper** (`agents-cc.mjs`). Pulled the
|
|
125
|
+
assistant-text-block extraction out of `enrichSession` so the live
|
|
126
|
+
CLI roster and the disk fallback share the exact same snippet
|
|
127
|
+
shape.
|
|
128
|
+
- **SettingsView — Configuration section** (`SettingsView.tsx`).
|
|
129
|
+
Adds a "Reset to defaults" button (`POST /api/settings/reset`)
|
|
130
|
+
with confirm gate + busy state, and a "Plugin options" JSON
|
|
131
|
+
textarea editor that PUTs to `/api/settings/plugin-options`.
|
|
132
|
+
Both expose `data-testid` for E2E.
|
|
133
|
+
- **`tests/e2e/dashboard-cc-disk-fallback.mjs`** (Move 1). 5 checks
|
|
134
|
+
proving the disk fallback path end-to-end against a tmp HOME.
|
|
135
|
+
- **`tests/e2e/dashboard-cc-goal-slash.mjs`** (Move 2). 6 checks
|
|
136
|
+
proving the full `/goal` slash command path: port resolution from
|
|
137
|
+
`dash-auth.json`, POST/PATCH/KR cycle round-trip, UI render, and
|
|
138
|
+
the file-watcher fallback when CC writes PROGRESS.md directly.
|
|
139
|
+
- **`tests/e2e/dashboard-config-coverage.mjs`** (Move 3). 7 checks
|
|
140
|
+
covering `POST /api/settings/reset`, `PUT /api/settings/plugin-options`,
|
|
141
|
+
`GET /api/providers/auto-detect`, `POST /api/projects/scan`,
|
|
142
|
+
`GET /api/mods`, and the two new SettingsView testids.
|
|
143
|
+
|
|
144
|
+
### npm scripts
|
|
145
|
+
|
|
146
|
+
- `test:e2e:cc-disk` — Move 1
|
|
147
|
+
- `test:e2e:goal-slash` — Move 2
|
|
148
|
+
- `test:e2e:cfg` — Move 3
|
|
149
|
+
|
|
150
|
+
## v10.0.3 — 2026-07-15
|
|
151
|
+
|
|
152
|
+
### Highlights
|
|
153
|
+
|
|
154
|
+
Six atomic commits close every umbrella-brief criterion the v10.0.2
|
|
155
|
+
stop-hook flagged as unevidenced: per-agent status grid, CC session
|
|
156
|
+
merge + CC `/goal` slash command, full CRUD surface, data-driven
|
|
157
|
+
dashboard surfaces, and a single end-to-end surfaces matrix. Two
|
|
158
|
+
real bugs surfaced and fixed in the process — TaskDetail PATCH
|
|
159
|
+
mismatch and TasksView bulk-status 404.
|
|
160
|
+
|
|
161
|
+
### Fixed
|
|
162
|
+
|
|
163
|
+
- **`PATCH /api/tasks/:id`** (`tasks.mjs`). TaskDetail.tsx:81 sent
|
|
164
|
+
`PATCH` but the server only exposed `PUT` — every task edit
|
|
165
|
+
404'd. New PATCH handler mirrors PUT body and broadcasts
|
|
166
|
+
`tasks:change`. Unit-tested in `tasks-patch-routes.test.mjs`.
|
|
167
|
+
- **`PATCH /api/tasks/bulk-status`** (`tasks.mjs`). TasksView.tsx:142
|
|
168
|
+
sent `PATCH /api/tasks/bulk-status` but the server only had
|
|
169
|
+
`POST /api/tasks/bulk` — the bulk-action bar never moved tasks.
|
|
170
|
+
New PATCH handler accepts `{ids, status}`, returns per-row
|
|
171
|
+
failures, validates status against the allow-list. Registered
|
|
172
|
+
before `/tasks/:id` so the literal `bulk-status` segment isn't
|
|
173
|
+
captured by Express's :id param.
|
|
174
|
+
|
|
175
|
+
### Added
|
|
176
|
+
|
|
177
|
+
- **`tests/e2e/dashboard-coverage-proof.mjs`** (Move 2). 8 Bizar
|
|
178
|
+
agents with diverse statuses (working/idle/paused/error/stuck),
|
|
179
|
+
6 goals across 4 status tones, 7 days of usage JSONL. Asserts
|
|
180
|
+
AgentsView renders ≥8 `.v8-agent-card` nodes spanning ≥4
|
|
181
|
+
distinct status classes, GoalsView renders ≥6 `[data-testid^=goal-card-]`
|
|
182
|
+
nodes, OverviewView renders `[data-testid=overview-tokens-sparkline]`.
|
|
183
|
+
- **`tests/e2e/dashboard-cc-bridge.mjs`** (Move 3). 7 checks: Bizar
|
|
184
|
+
source discriminator, CC route mounted, Claude Code chip
|
|
185
|
+
clickable in UI, `.claude/commands/goal.md` references
|
|
186
|
+
/api/goals + POST + "Do not edit PROGRESS.md directly", dash
|
|
187
|
+
auth resolves port, POST /api/goals round-trip, new goal
|
|
188
|
+
appears as `goal-card-X` in GoalsView.
|
|
189
|
+
- **`tests/e2e/dashboard-crud-roundtrip.mjs`** (Move 4). 16
|
|
190
|
+
mutations across all 4 primary stores (agents/tasks/goals
|
|
191
|
+
/schedules), each proving on-disk persistence AND round-trip
|
|
192
|
+
through the GET endpoint. 17 checks total.
|
|
193
|
+
- **`tests/e2e/dashboard-data-driven.mjs`** (Move 5). 6 checks:
|
|
194
|
+
/api/usage returns ≥7 daily buckets (7d seed), AgentsView
|
|
195
|
+
renders ≥5 metric tile rows, GoalsView main innerText
|
|
196
|
+
contains ≥4 of 5 status tones, OverviewView sparkline renders.
|
|
197
|
+
- **`tests/e2e/dashboard-surfaces-matrix.mjs`** (Move 6). 12-row
|
|
198
|
+
surfaces matrix walks every primary sidebar item (overview,
|
|
199
|
+
agents, goals, tasks, settings, memory, activity, schedules,
|
|
200
|
+
background, skills, mcps, hooks) past the auth gate. Drops
|
|
201
|
+
`chat` — the router case exists but App.tsx's sidebar
|
|
202
|
+
sections (workspace/operations/libraries/system) don't
|
|
203
|
+
surface it; honest matrix only includes reachability.
|
|
204
|
+
- **OverviewView range fix.** `/api/usage?range=24h` only ever
|
|
205
|
+
returns 1 daily bucket so the Sparkline never renders in
|
|
206
|
+
practice; switched to `range=7d` so the trend tile has
|
|
207
|
+
≥2 points even on freshly-seeded servers. Unit test updated.
|
|
208
|
+
|
|
209
|
+
### Wiring
|
|
210
|
+
|
|
211
|
+
5 new npm scripts: `test:e2e:coverage`, `test:e2e:cc`,
|
|
212
|
+
`test:e2e:crud`, `test:e2e:data`, `test:e2e:matrix`. Each runs
|
|
213
|
+
in a sandboxed `$HOME` so they don't pollute the user's real
|
|
214
|
+
store.
|
|
215
|
+
|
|
216
|
+
## v10.0.0 — 2026-07-13
|
|
217
|
+
|
|
218
|
+
### Highlights
|
|
219
|
+
|
|
220
|
+
The dashboard graduates from "dashboard over your data" to **orchestration center**.
|
|
221
|
+
v10 closes the three audit gaps that stop-hook reviews flagged across
|
|
222
|
+
v9.x: dead-sparkline code, hierarchy endpoints with no consumer, and a goals
|
|
223
|
+
parser that broke the cross-boundary CC/`/goal` round-trip. v10 also adds a
|
|
224
|
+
real restart lifecycle for stuck agents and per-day usage trendlines, plus a
|
|
225
|
+
cross-boundary E2E suite that boots a real server, writes fixture project
|
|
226
|
+
files, and asserts what the API returns and what it persists to disk.
|
|
227
|
+
|
|
228
|
+
### Added
|
|
229
|
+
|
|
230
|
+
- **Agent hierarchy view** (`AgentHierarchy`). New Roster|Hierarchy chip
|
|
231
|
+
toggle on AgentsView. Consumes `/api/agents/hierarchy`, renders a
|
|
232
|
+
collapsible parent/child tree, WS-subscribes to `agents:change`, falls
|
|
233
|
+
back to `EmptyState` when no parent links exist. Sprint S45.
|
|
234
|
+
- **Stuck agents banner becomes actionable.** Each stuck row now exposes
|
|
235
|
+
Pause/Resume + Restart buttons. Banner header gains a "Pause all" bulk
|
|
236
|
+
action. Sprint S49 + v10-S1 (Pause/Resume/bulk, status widened to
|
|
237
|
+
include `paused`).
|
|
238
|
+
- **Agent detail → tasks drilldown.** `AgentDetail` now fetches
|
|
239
|
+
`/api/tasks` once opened and renders the tasks assigned to this agent
|
|
240
|
+
(matched by `workedBy` OR `metadata.agent`) as Card rows inside the
|
|
241
|
+
panel. Empty-state Card when none. Sprint S49.
|
|
242
|
+
- **GoalsView cross-boundary CC-shape round-trip.** Goals route now
|
|
243
|
+
resolves `.bizar/PROGRESS.md` against `projectsStore.active().path`
|
|
244
|
+
(was `.cwd`), so the dashboard reads the *active* project's file
|
|
245
|
+
instead of silently falling back to `$HOME/.bizar/PROGRESS.md`.
|
|
246
|
+
`serializeProgress` strips carried-over `Goal is **status**` lines
|
|
247
|
+
from goal descriptions before re-emitting, so PATCH /status mutations
|
|
248
|
+
actually persist (previously the second status line won on re-parse).
|
|
249
|
+
v10-S3.
|
|
250
|
+
- **OverviewView token-usage sparkline trend.** Tokens StatTile shows a
|
|
251
|
+
SVG sparkline of the last 24h daily series returned by `/api/usage`.
|
|
252
|
+
Fits inside the existing `sparkline` slot on `StatTile`. Falls back
|
|
253
|
+
gracefully when fewer than 2 daily points are available. v10-S2.
|
|
254
|
+
- **Cross-boundary E2E suite:**
|
|
255
|
+
- `tests/e2e/goals-cc-roundtrip.mjs` (8 steps) — boots server against
|
|
256
|
+
a tmp project, writes a CC-shape PROGRESS.md fixture, GETs /api/goals
|
|
257
|
+
+ PATCHes status + re-reads + asserts file-watcher broadcast.
|
|
258
|
+
- `tests/e2e/agent-restart-roundtrip.mjs` (6 steps) — fixture agent
|
|
259
|
+
.md + status file marked error, GETs /restart pre-state, POSTs
|
|
260
|
+
/restart, asserts WS `agent:restarted` broadcast, asserts the
|
|
261
|
+
on-disk `~/.config/bizar/agent-status.json` actually moved to idle,
|
|
262
|
+
and GETs the post-state. Restores user's real $HOME files in
|
|
263
|
+
`finally`.
|
|
264
|
+
|
|
265
|
+
### Fixed
|
|
266
|
+
|
|
267
|
+
- **v10-S3** `serializeProgress` dropped the original `Goal is **<old>**`
|
|
268
|
+
line onto the page right under the freshly-emitted status line. Parser
|
|
269
|
+
saw both lines and the second match won (its overwrite guard
|
|
270
|
+
`'if status === on-track'` never fired because the default WAS
|
|
271
|
+
on-track and the new status was also on-track). Net: dashboard
|
|
272
|
+
`PATCH /status` returned 200 but the visible state didn't change.
|
|
273
|
+
Stripped at serialize time.
|
|
274
|
+
- **v10-S4** `readAgent` read the in-memory `_status` Map without
|
|
275
|
+
calling `loadStatus()` first, so any agent never touched post-boot
|
|
276
|
+
silently fell back to the idle default even when its on-disk status
|
|
277
|
+
was error/stuck. E2E caught it. Fixed: `loadStatus()` at the top of
|
|
278
|
+
`readAgent` (idempotent).
|
|
279
|
+
- **v10-S3** `progressPath()` read `active.cwd` (undefined) while
|
|
280
|
+
`projectsStore` actually stores under `.path`. Dashboard always
|
|
281
|
+
fell back to `$HOME/.bizar/PROGRESS.md`. Fixed: `active.path`.
|
|
282
|
+
- **v9.4.0 / S45** Dead-sparkline code on `AgentCard`. `mapBizar`/`mapCC`
|
|
283
|
+
always passed a single-element `tpmHistory`, the `length > 1` guard
|
|
284
|
+
blocked the chart from ever rendering. Replaced with real
|
|
285
|
+
`tasksSucceeded / tasksTotal` + `successRate` + `lastSeenMs` rows.
|
|
286
|
+
- **v9.5.0 / S47** `UpdateView` had pre-existing `TS2783` errors on
|
|
287
|
+
`WebSocket` message narrowing (discriminator duplication in spread
|
|
288
|
+
overload). Reordered to spread-then-narrow so the union collapses
|
|
289
|
+
cleanly.
|
|
290
|
+
- **v9.5.0 / S47** `BizarAgent.status` union widened to include
|
|
291
|
+
`'paused'` so the stuck-banner Pause control's `s.status === 'paused'`
|
|
292
|
+
comparison typechecks. Server route valid set widened to match
|
|
293
|
+
(`['idle','working','error','stuck','paused']`).
|
|
294
|
+
|
|
295
|
+
### Tests
|
|
296
|
+
|
|
297
|
+
- vitest: 363 → 388 cases (+25); 49 → 51 test files (+2).
|
|
298
|
+
- 2 new cross-boundary E2E tests (14 steps total) — both green.
|
|
299
|
+
- `bunx tsc --noEmit` at repo root: 0 errors.
|
|
300
|
+
- `npx tsc -p tsconfig.json` inside `bizar-dash/`: 0 errors in
|
|
301
|
+
`src/`. Pre-existing `toBeInTheDocument` jest-dom typing gaps in
|
|
302
|
+
`__tests__` files are unchanged baseline.
|
|
303
|
+
|
|
304
|
+
### Files
|
|
305
|
+
|
|
306
|
+
- `bizar-dash/src/server/routes/goals.mjs` — `progressPath()` fix +
|
|
307
|
+
comments pointing at the cross-boundary audit trail.
|
|
308
|
+
- `bizar-dash/src/server/progress-parser.mjs` — `serializeProgress`
|
|
309
|
+
strips prior `Goal is **...**` lines.
|
|
310
|
+
- `bizar-dash/src/server/progress-parser.test.mjs` — v10-S3 regression:
|
|
311
|
+
parse → mutate → serialise → re-parse → status preserved.
|
|
312
|
+
- `bizar-dash/src/server/agents-store.mjs` — `readAgent` now
|
|
313
|
+
`loadStatus()` first.
|
|
314
|
+
- `bizar-dash/src/web/v8/views/Agents/AgentsView.tsx` —
|
|
315
|
+
Roster|Hierarchy toggle + stuck banner Pause/Resume/bulk.
|
|
316
|
+
- `bizar-dash/src/web/v8/views/Agents/AgentHierarchy.tsx` (NEW) —
|
|
317
|
+
collapsible tree.
|
|
318
|
+
- `bizar-dash/src/web/v8/ui/agents/AgentCard.tsx` — dead sparkline
|
|
319
|
+
replaced with real task-count/success-rate/last-seen rows.
|
|
320
|
+
- `bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx` — tasks drilldown.
|
|
321
|
+
- `bizar-dash/src/web/v8/views/Overview/OverviewView.tsx` — token
|
|
322
|
+
sparkline trendline on Tokens StatTile.
|
|
323
|
+
- `bizar-dash/src/web/v8/views/Update/UpdateView.tsx` — TS2783 fix.
|
|
324
|
+
- `bizar-dash/src/web/v8/data/types.ts` — `BizarAgent.status`
|
|
325
|
+
includes `'paused'`.
|
|
326
|
+
- `bizar-dash/src/web/v8/__tests__/{agents-stuck-banner,agent-detail-tasks,overview-trends,goals-cc-roundtrip,agent-hierarchy,agent-card-metrics}.test.tsx` (new + extended).
|
|
327
|
+
- `tests/e2e/{goals-cc-roundtrip,agent-restart-roundtrip}.mjs` (NEW).
|
|
328
|
+
|
|
329
|
+
### Sprints covered
|
|
330
|
+
|
|
331
|
+
- v9.4.0 — S45 (hierarchy + stuck banner + dead-sparkline), S46 (docs).
|
|
332
|
+
- v9.5.0 — S47 (UpdateView typecheck), S48 (stuck Restart),
|
|
333
|
+
S49 (agent↔task drilldown), S50 (paperwork).
|
|
334
|
+
- v10.0.0 — S1 (Pause/Resume/bulk), S2 (Overview Sparkline),
|
|
335
|
+
S3 (GoalsView CC round-trip + E2E + 2-bug-fix), S4 (cross-boundary
|
|
336
|
+
agent restart E2E + readAgent-bug fix), S5 (this paperwork).
|
|
337
|
+
|
|
338
|
+
## v10.0.2 — 2026-07-15
|
|
339
|
+
|
|
340
|
+
### Highlights
|
|
341
|
+
|
|
342
|
+
Closes the integration-breadth and "control and configure
|
|
343
|
+
everything" gaps from the v10.0.1 stop-hook. The walkthrough now
|
|
344
|
+
exercises **all 12 reachable sidebar views** with seeded Bizar
|
|
345
|
+
agents, tasks across all 4 columns, a CC session stub for the
|
|
346
|
+
Source-filter chip, and 3 PROGRESS.md goals spanning status tones
|
|
347
|
+
(15/15 checks pass). A new mutation round-trip test proves the
|
|
348
|
+
dashboard's 4 primary mutations (Settings PUT, Agent POST, Task
|
|
349
|
+
POST, CC-style goal append) actually land on disk **and** round-trip
|
|
350
|
+
back through the same API the views consume (4/4 checks pass).
|
|
351
|
+
Also fixes a latent bug: `GET /api/tasks` returned a bare array
|
|
352
|
+
while the v8 UI expected `{ tasks, count }` — TasksView rendered 0
|
|
353
|
+
tasks even when `tasks.json` had data.
|
|
354
|
+
|
|
355
|
+
### Fixed
|
|
356
|
+
|
|
357
|
+
- **`GET /api/tasks` returned a bare array.** The v8 UI
|
|
358
|
+
(`App.tsx:87` and several views) consumes `{ tasks, count }`,
|
|
359
|
+
so the bare array shape made TasksView render 0 tasks even when
|
|
360
|
+
the underlying `tasks.json` had data. Now returns the envelope
|
|
361
|
+
shape, matching what the audit-fixes + views tests already
|
|
362
|
+
mocked. Sprint v10-S11.
|
|
363
|
+
|
|
364
|
+
### Added
|
|
365
|
+
|
|
366
|
+
- **`tests/e2e/dashboard-auth-walkthrough.mjs` (v2)** — Full-scope
|
|
367
|
+
sidebar walkthrough. Boots `createServer()` with
|
|
368
|
+
`HOME=/tmp/bh-walk-home-<pid>` so all backend stores redirect
|
|
369
|
+
to a tmp directory (no pollution of the user's real `$HOME`).
|
|
370
|
+
Seeds 3 Bizar agents (odin/thor/frigg), 4 tasks across the
|
|
371
|
+
queued/doing/done/blocked columns, a CC session stub at
|
|
372
|
+
`~/.config/bizar/agent-status.json`, and 3 goals
|
|
373
|
+
(G-001 on-track, G-002 at-risk, G-003 at-risk) in
|
|
374
|
+
`projectRoot/.bizar/PROGRESS.md`. Drives `agent-browser` through
|
|
375
|
+
the v8 sidebar (state-based router) and asserts each view's
|
|
376
|
+
main region renders view-specific content. **15/15 PASS** —
|
|
377
|
+
all 12 reachable sidebar views (overview/tasks/goals/agents/
|
|
378
|
+
activity/memory/schedules/background/skills/mcps/hooks/settings)
|
|
379
|
+
plus the 3 API-level seeds (agents, tasks, goals).
|
|
380
|
+
- **`tests/e2e/dashboard-mutation-roundtrip.mjs`** — Mutation
|
|
381
|
+
round-trip test. Same boot pattern. Each of the 4 mutations
|
|
382
|
+
proves on-disk persistence **and** round-trips back through the
|
|
383
|
+
same API the view consumes:
|
|
384
|
+
- `PUT /api/settings` → `~/.config/bizar/settings.json`
|
|
385
|
+
(verified by reading the file + GET /api/settings envelope)
|
|
386
|
+
- `POST /api/agents` → `~/.config/cline/agents/<name>.md`
|
|
387
|
+
(verified by reading the file + GET /api/agents listing)
|
|
388
|
+
- `POST /api/tasks` → `~/.config/cline/projects/<id>/tasks.json`
|
|
389
|
+
(verified by reading the file + GET /api/tasks envelope)
|
|
390
|
+
- `POST /api/goals` → `projectRoot/.bizar/PROGRESS.md`
|
|
391
|
+
(verified by reading the file + GET /api/goals listing)
|
|
392
|
+
Each result row writes its on-disk evidence (path + last 280
|
|
393
|
+
bytes) to `results.json`. **4/4 PASS**.
|
|
394
|
+
|
|
395
|
+
### Changed
|
|
396
|
+
|
|
397
|
+
- **`bizar-dash/BROWSER_VERIFICATION.md`** — Updated to v10.0.2.
|
|
398
|
+
Added full-scope walkthrough section (15/15) + mutation
|
|
399
|
+
round-trip section (4/4). Recorded PIDs for the v10.0.2 runs.
|
|
400
|
+
Documented that the v8 sidebar has 12 reachable items (ChatView
|
|
401
|
+
exists but is excluded from the sidebar — only reachable via
|
|
402
|
+
command palette).
|
|
403
|
+
|
|
404
|
+
## v10.0.1 — 2026-07-14
|
|
405
|
+
|
|
406
|
+
### Highlights
|
|
407
|
+
|
|
408
|
+
Closes the three remaining v10.0.0 stop-hook gaps with real
|
|
409
|
+
verifications, not paperwork. The cold-boot event-loop starvation
|
|
410
|
+
that froze the dashboard for 3-5s is now fixed (async `execFile`
|
|
411
|
+
in `memory-lightrag.mjs` + `BIZAR_HEADROOM_AUTOSTART=0` env gate in
|
|
412
|
+
`server.mjs`), and the unauthenticated browser smoke is upgraded to
|
|
413
|
+
an authenticated 8-view per-view walkthrough that proves
|
|
414
|
+
AgentsView / GoalsView / TasksView / SettingsView / Memory /
|
|
415
|
+
Activity render real data past the auth gate.
|
|
416
|
+
|
|
417
|
+
### Fixed
|
|
418
|
+
|
|
419
|
+
- **Cold-boot event-loop starvation** (`memory-lightrag.mjs:344`,
|
|
420
|
+
`server.mjs:439`). LightRAG's `findLightragBinary()` ran
|
|
421
|
+
`execFileSync('command', …)` synchronously with a 3s timeout on
|
|
422
|
+
every cold start. Converted to async `execFile` wrapped in a
|
|
423
|
+
Promise; the 3 call sites (`isInstalled`, two `startServer`
|
|
424
|
+
checks) now `await` it. The headroom startup hook (`npm install`
|
|
425
|
+
as a child process) is now opt-out via
|
|
426
|
+
`BIZAR_HEADROOM_AUTOSTART=0`, mirroring the existing lightrag
|
|
427
|
+
pattern. Default behaviour unchanged. Sprint S9.
|
|
428
|
+
|
|
429
|
+
### Added
|
|
430
|
+
|
|
431
|
+
- **`tests/e2e/cold-boot-perf.mjs`** — Regression test for the cold-
|
|
432
|
+
boot freeze. Boots `createServer()` with both opt-outs set,
|
|
433
|
+
asserts `listen → first-fetch < 2s`. Closes the v10-S7
|
|
434
|
+
"documented, not fixed" caveat. **2/2 PASS** (`bootMs=42,
|
|
435
|
+
firstFetchMs=21`).
|
|
436
|
+
- **`tests/e2e/dashboard-auth-walkthrough.mjs`** — Authenticated
|
|
437
|
+
per-view walkthrough. Boots `createServer()` against a tmp
|
|
438
|
+
project, drives `agent-browser` through real sidebar clicks
|
|
439
|
+
(the v8 router is state-based, not hash-based), screenshots
|
|
440
|
+
each view, asserts the active sidebar item matches and the main
|
|
441
|
+
region renders view-specific content. **8/8 PASS** across
|
|
442
|
+
Overview (303 bytes), Agents (1000), Goals (805), Tasks (129),
|
|
443
|
+
Settings (6556), Memory (247), Activity (321) — all past the
|
|
444
|
+
auth gate. Closes the v10-S7 per-view-verification gap.
|
|
445
|
+
|
|
446
|
+
### Changed
|
|
447
|
+
|
|
448
|
+
- **`bizar-dash/BROWSER_VERIFICATION.md`** — Updated to v10.0.1.
|
|
449
|
+
Removed the "documented, not fixed" caveat for the cold-boot
|
|
450
|
+
freeze (it's now fixed). Added the cold-boot regression and
|
|
451
|
+
per-view walkthrough sections with PID + PASS count evidence.
|
|
452
|
+
Documented the loopback-auto-trust auth model that explains why
|
|
453
|
+
the browser walkthrough doesn't need to pass a bearer token.
|
|
454
|
+
|
|
3
455
|
## v4.5.0 — 2026-07-05
|
|
4
456
|
|
|
5
457
|
### Highlights
|