@polderlabs/bizar 7.0.0 → 7.0.1

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 (55) hide show
  1. package/README.md +125 -47
  2. package/bizar-dash/dist/assets/{EnvVarsSection-CW6fWKds.js → EnvVarsSection-weVnLz3Z.js} +3 -3
  3. package/bizar-dash/dist/assets/EnvVarsSection-weVnLz3Z.js.map +1 -0
  4. package/bizar-dash/dist/assets/{MobileChat-D7zRhU9K.js → MobileChat-BRFjer8p.js} +1 -1
  5. package/bizar-dash/dist/assets/{MobileChat-D7zRhU9K.js.map → MobileChat-BRFjer8p.js.map} +1 -1
  6. package/bizar-dash/dist/assets/MobileSettings-Dw5jyJWi.js +1 -0
  7. package/bizar-dash/dist/assets/MobileSettings-Dw5jyJWi.js.map +1 -0
  8. package/bizar-dash/dist/assets/flow-BpU0-gK2.js.map +1 -1
  9. package/bizar-dash/dist/assets/icons-B0AKnYI3.js.map +1 -1
  10. package/bizar-dash/dist/assets/main-BE4Uh9im.css +1 -0
  11. package/bizar-dash/dist/assets/{main-CO8fIxQK.js → main-DqC58FEZ.js} +11 -11
  12. package/bizar-dash/dist/assets/main-DqC58FEZ.js.map +1 -0
  13. package/bizar-dash/dist/assets/markdown-w2bDDkAH.js.map +1 -1
  14. package/bizar-dash/dist/assets/{mobile-DXYCA0hC.js → mobile-DRZsK3ic.js} +1 -1
  15. package/bizar-dash/dist/assets/{mobile-DXYCA0hC.js.map → mobile-DRZsK3ic.js.map} +1 -1
  16. package/bizar-dash/dist/assets/mobile-layout-BWLtwtfQ.css +1 -0
  17. package/bizar-dash/dist/assets/{mobile-layout-DSmtNPja.js → mobile-layout-Ckru3HKJ.js} +2 -2
  18. package/bizar-dash/dist/assets/{mobile-layout-DSmtNPja.js.map → mobile-layout-Ckru3HKJ.js.map} +1 -1
  19. package/bizar-dash/dist/assets/react-vendor-D3pra6w-.js.map +1 -1
  20. package/bizar-dash/dist/assets/{useSlashCommands-3DFLOfpk.js → useSlashCommands-BAxVOU_a.js} +2 -2
  21. package/bizar-dash/dist/assets/{useSlashCommands-3DFLOfpk.js.map → useSlashCommands-BAxVOU_a.js.map} +1 -1
  22. package/bizar-dash/dist/assets/vendor-Di7Cp-rw.js.map +1 -1
  23. package/bizar-dash/dist/index.html +6 -6
  24. package/bizar-dash/dist/mobile.html +3 -3
  25. package/bizar-dash/src/server/memory-consolidator.mjs +8 -1
  26. package/bizar-dash/src/web/mobile/MobileApp.tsx +33 -2
  27. package/bizar-dash/src/web/mobile/MobileBottomNav.tsx +2 -2
  28. package/bizar-dash/src/web/mobile/MobileEval.tsx +4 -4
  29. package/bizar-dash/src/web/mobile/MobileMemory.tsx +2 -2
  30. package/bizar-dash/src/web/mobile/MobileSettings.tsx +3 -3
  31. package/bizar-dash/src/web/mobile/MobileTasks.tsx +2 -2
  32. package/bizar-dash/src/web/mobile/components/MobileListItem.tsx +3 -3
  33. package/bizar-dash/src/web/styles/mobile.css +41 -0
  34. package/bizar-dash/src/web/styles/tasks-redesign.css +34 -12
  35. package/bizar-dash/src/web/ui/controls/Textarea.tsx +56 -0
  36. package/bizar-dash/src/web/ui/controls/controls.css +22 -0
  37. package/bizar-dash/src/web/ui/controls/index.ts +2 -0
  38. package/bizar-dash/src/web/ui/layout/ViewHeader.tsx +48 -0
  39. package/bizar-dash/src/web/ui/layout/index.ts +1 -0
  40. package/bizar-dash/src/web/ui/layout/layout.css +51 -0
  41. package/bizar-dash/src/web/ui/styles/tokens.css +13 -0
  42. package/bizar-dash/src/web/views/Agents.tsx +10 -2
  43. package/bizar-dash/src/web/views/Overview.tsx +2 -13
  44. package/bizar-dash/src/web/views/Tasks.tsx +1 -7
  45. package/bizar-dash/tests/ui/controls/Textarea.test.tsx +56 -0
  46. package/bizar-dash/tests/ui/layout/ViewHeader.test.tsx +47 -0
  47. package/cli/provision-claude.mjs +94 -0
  48. package/package.json +1 -1
  49. package/bizar-dash/dist/assets/EnvVarsSection-CW6fWKds.js.map +0 -1
  50. package/bizar-dash/dist/assets/MobileSettings-K-sNsn_r.js +0 -1
  51. package/bizar-dash/dist/assets/MobileSettings-K-sNsn_r.js.map +0 -1
  52. package/bizar-dash/dist/assets/main-C-Md3DaY.css +0 -1
  53. package/bizar-dash/dist/assets/main-CO8fIxQK.js.map +0 -1
  54. package/bizar-dash/dist/assets/mobile-layout-CJnZNLy3.css +0 -1
  55. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileSettings-K-sNsn_r.js","sources":["../../src/web/views/settings/MemorySection.tsx","../../src/web/mobile/MobileSettings.tsx"],"sourcesContent":["// src/web/views/settings/MemorySection.tsx — memory vault + git config for Settings.\n// v6.x — Vault path now loads from /api/memory/status (was hardcoded to '').\n// We also surface a small \"Initialise\" button when the vault does not exist.\nimport React, { useEffect, useState } from 'react';\nimport { Brain, GitBranch, Loader2, Save, FolderInput } from 'lucide-react';\nimport { Button } from '../../components/Button';\nimport { Card, CardTitle, CardMeta } from '../../components/Card';\nimport { Spinner } from '../../components/Spinner';\nimport { useToast } from '../../components/Toast';\nimport { api } from '../../lib/api';\n\ntype GitConfig = {\n remoteUrl?: string;\n};\n\ntype GlobalConfig = {\n git?: GitConfig;\n};\n\ntype MemoryStatus = {\n initialized: boolean;\n vaultRoot?: string | null;\n mode?: string | null;\n};\n\nexport function MemorySection() {\n const toast = useToast();\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [initialising, setInitialising] = useState(false);\n const [remoteUrl, setRemoteUrl] = useState('');\n const [vaultPath, setVaultPath] = useState<string>('');\n const [vaultInitialised, setVaultInitialised] = useState(false);\n const [refreshKey, setRefreshKey] = useState(0);\n\n useEffect(() => {\n let cancelled = false;\n (async () => {\n try {\n const [cfgRes, statusRes] = await Promise.all([\n api.get<{ config: GlobalConfig; path?: string }>('/memory/config/global').catch(() => null),\n api.get<MemoryStatus>('/memory/status').catch(() => null),\n ]);\n if (cancelled) return;\n if (cfgRes) setRemoteUrl(cfgRes.config?.git?.remoteUrl || '');\n if (statusRes) {\n setVaultPath(statusRes.vaultRoot || '');\n setVaultInitialised(!!statusRes.initialized);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n })();\n return () => { cancelled = true; };\n }, [refreshKey]);\n\n const onSave = async () => {\n setSaving(true);\n try {\n await api.put('/memory/config/global', { git: { remoteUrl } });\n toast.success('Memory config saved.');\n setRefreshKey((k) => k + 1);\n } catch (err) {\n toast.error(`Save failed: ${(err as Error).message}`);\n } finally {\n setSaving(false);\n }\n };\n\n const onInitialise = async () => {\n setInitialising(true);\n try {\n await api.post('/memory/init', {});\n toast.success('Vault initialised.');\n setRefreshKey((k) => k + 1);\n } catch (err) {\n toast.error(`Initialise failed: ${(err as Error).message}`);\n } finally {\n setInitialising(false);\n }\n };\n\n return (\n <Card id=\"settings-memory\" data-section=\"memory\">\n <CardTitle><Brain size={14} /> Memory vault</CardTitle>\n <CardMeta>\n The vault lives at a default location on disk. Only the git remote URL\n needs to be configured to enable sync across machines.\n </CardMeta>\n\n {loading ? (\n <div className=\"flex-center\" style={{ padding: 24 }}>\n <Spinner size=\"sm\" />\n </div>\n ) : (\n <div className=\"settings-fields\">\n <div className=\"field\">\n <label className=\"field-label\">\n <FolderInput size={12} style={{ display: 'inline', marginRight: 4 }} />\n Vault path\n </label>\n <div\n className=\"field-readonly mono\"\n data-testid=\"settings-memory-vault-path\"\n style={{ fontSize: 12, padding: '6px 0' }}\n >\n {vaultPath || <span className=\"muted\">not initialised</span>}\n {vaultInitialised ? null : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onInitialise}\n disabled={initialising}\n style={{ marginLeft: 12 }}\n >\n {initialising ? <Loader2 size={12} className=\"memory-spin\" /> : <FolderInput size={12} />}\n Initialise\n </Button>\n )}\n </div>\n </div>\n\n <div className=\"field\">\n <label className=\"field-label\" htmlFor=\"set-memory-git-remote\">\n <GitBranch size={12} style={{ display: 'inline', marginRight: 4 }} />\n Git remote URL\n </label>\n <input\n id=\"set-memory-git-remote\"\n className=\"input mono\"\n type=\"text\"\n value={remoteUrl}\n onChange={(e) => setRemoteUrl(e.target.value)}\n placeholder=\"git@github.com:org/repo.git\"\n />\n <span className=\"field-hint\">Leave empty to use local-only mode (no git sync).</span>\n </div>\n\n <div style={{ marginTop: 12 }}>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onSave}\n disabled={saving}\n >\n {saving ? <Loader2 size={12} className=\"memory-spin\" /> : <Save size={12} />}\n Save memory config\n </Button>\n </div>\n </div>\n )}\n </Card>\n );\n}\n","// src/web/mobile/MobileSettings.tsx — v5.4 mobile settings with full desktop parity.\n// All 9 sections in an accordion layout with search.\nimport { useState } from 'react';\nimport {\n Settings2, Brain, KeyRound, Cpu, RefreshCw, Globe, Info, ChevronRight,\n} from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport type { Settings, Snapshot } from '../lib/types';\n\n// Sub-section components — each renders its section content inline.\nimport { GeneralSection } from '../views/settings/GeneralSection';\nimport { EnvVarsSection } from '../views/settings/EnvVarsSection';\nimport { MemorySection } from '../views/settings/MemorySection';\nimport { SystemLlmSection } from '../views/settings/SystemLlmSection';\nimport { UpdatesSection } from '../views/settings/UpdatesSection';\nimport { HeadroomSection } from '../views/settings/HeadroomSection';\nimport { TailscaleSettings } from '../components/TailscaleSettings';\nimport { ActivitySection } from '../views/settings/ActivitySection';\n\n// Lazy-load heavy sections that pull in large dependencies.\nimport React from 'react';\n\ntype Props = {\n settings: Settings;\n /** Called when the user changes any top-level setting */\n onSettingsChange?: <K extends keyof Settings>(key: K, value: Settings[K]) => void;\n /** Debounced auto-save to API (key, value) */\n autoSave?: (key: keyof Settings, value: Settings[keyof Settings]) => void;\n /** Optional snapshot for counts / agent list */\n snapshot?: Snapshot | null;\n /** v5.3 compatibility — called after settings are saved (MobileApp.tsx passes refreshSnapshot) */\n onRefresh?: () => Promise<void>;\n};\n\n// ─── Section definitions ─────────────────────────────────────────────────────\n\nfunction GeneralSettings({ settings, onSettingsChange, autoSave }: Props) {\n const patchTop = <K extends keyof Settings>(key: K, value: Settings[K]) => {\n onSettingsChange?.(key, value);\n autoSave?.(key, value);\n };\n const patchUi = (patch: Partial<Settings['ui']>) => {\n onSettingsChange?.('ui', { ...settings.ui, ...patch });\n autoSave?.('ui', { ...settings.ui, ...patch });\n };\n return (\n <GeneralSection\n settings={settings}\n patchUi={patchUi}\n patchTop={patchTop}\n autoSave={autoSave}\n />\n );\n}\n\nfunction ProvidersSettings({ settings, onSettingsChange, autoSave }: Props) {\n // Providers are managed server-side; show a link to the desktop providers view.\n // Mobile can't add/edit providers without more complex auth flow.\n void settings; void onSettingsChange; void autoSave;\n return (\n <div style={{ fontSize: 13, color: 'var(--text-dim)', padding: '8px 0' }}>\n <p style={{ marginBottom: 8 }}>\n Provider management is available on desktop.\n </p>\n <a href=\"/?desktop=1#settings-providers\" className=\"mobile-btn mobile-btn-secondary\" style={{ display: 'inline-block', fontSize: 12, padding: '6px 12px' }}>\n Open desktop to manage providers\n </a>\n </div>\n );\n}\n\nfunction EnvVarsSettings() {\n return <EnvVarsSection />;\n}\n\nfunction MemorySettings() {\n return <MemorySection />;\n}\n\nfunction SystemLlmSettings({ settings, onSettingsChange, autoSave }: Props) {\n const patchTop = <K extends keyof Settings>(key: K, value: Settings[K]) => {\n onSettingsChange?.(key, value);\n autoSave?.(key, value);\n };\n return <SystemLlmSection settings={settings} patchTop={patchTop} />;\n}\n\nfunction UpdatesSettings() {\n return <UpdatesSection />;\n}\n\nfunction HeadroomSettingsSection({ settings }: { settings: Settings }) {\n const [localSettings, setLocalSettings] = useState(settings);\n const [dirty, setDirty] = useState(false);\n return (\n <HeadroomSection\n settings={localSettings}\n setSettings={setLocalSettings as React.Dispatch<React.SetStateAction<Settings>>}\n setDirty={setDirty}\n />\n );\n}\n\nfunction TailscaleSettingsMobile() {\n return <TailscaleSettings />;\n}\n\nfunction AboutSection({ settings }: { settings: Settings }) {\n const about = settings.about || { version: '—', homepage: 'https://github.com/DrB0rk/BizarHarness', license: 'MIT' };\n return <ActivitySection about={about} />;\n}\n\n// ─── Main component ──────────────────────────────────────────────────────────\n\nexport function MobileSettings({ settings, onSettingsChange, autoSave, snapshot }: Props) {\n const [search, setSearch] = useState('');\n const [expandedSection, setExpandedSection] = useState<string | null>(null);\n\n const sections = [\n {\n id: 'general',\n title: 'General',\n icon: Settings2,\n description: 'Theme, accent, layout',\n component: <GeneralSettings settings={settings} onSettingsChange={onSettingsChange} autoSave={autoSave} />,\n },\n {\n id: 'providers',\n title: 'AI Providers',\n icon: Brain,\n description: `${snapshot?.providers?.length ?? 0} configured`,\n component: <ProvidersSettings settings={settings} onSettingsChange={onSettingsChange} autoSave={autoSave} />,\n },\n {\n id: 'env-vars',\n title: 'Environment Variables',\n icon: KeyRound,\n description: 'API keys, secrets',\n component: <EnvVarsSettings />,\n },\n {\n id: 'memory',\n title: 'Memory Vault',\n icon: Brain,\n description: 'Git remote, LightRAG config',\n component: <MemorySettings />,\n },\n {\n id: 'system-llm',\n title: 'System LLM',\n icon: Cpu,\n description: settings.systemLlm?.model || 'not set',\n component: <SystemLlmSettings settings={settings} onSettingsChange={onSettingsChange} autoSave={autoSave} />,\n },\n {\n id: 'updates',\n title: 'Updates',\n icon: RefreshCw,\n description: 'Check for updates',\n component: <UpdatesSettings />,\n },\n {\n id: 'headroom',\n title: 'Headroom',\n icon: Cpu,\n description: settings.headroom?.enabled ? 'Enabled' : 'Disabled',\n component: <HeadroomSettingsSection settings={settings} />,\n },\n {\n id: 'tailscale',\n title: 'Tailscale',\n icon: Globe,\n description: 'Tailscale serve & auth',\n component: <TailscaleSettingsMobile />,\n },\n {\n id: 'about',\n title: 'About',\n icon: Info,\n description: `Bizar v${settings.about?.version || '—'}`,\n component: <AboutSection settings={settings} />,\n },\n ];\n\n const filtered = sections.filter(\n (s) =>\n !search ||\n s.title.toLowerCase().includes(search.toLowerCase()) ||\n s.description.toLowerCase().includes(search.toLowerCase()),\n );\n\n return (\n <div className=\"mobile-settings\">\n <div className=\"mobile-settings-search\">\n <SearchIcon />\n <input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search settings...\"\n aria-label=\"Search settings\"\n />\n </div>\n\n <div className=\"mobile-settings-list\">\n {filtered.map((s) => {\n const Icon = s.icon;\n const isExpanded = expandedSection === s.id;\n return (\n <div key={s.id} className={cn('mobile-settings-item', isExpanded && 'is-expanded')}>\n <button\n className=\"mobile-settings-item-head\"\n onClick={() => setExpandedSection(isExpanded ? null : s.id)}\n aria-expanded={isExpanded}\n aria-controls={`mobile-settings-body-${s.id}`}\n >\n <div className=\"mobile-settings-item-icon\">\n <Icon size={18} />\n </div>\n <div className=\"mobile-settings-item-text\">\n <div className=\"mobile-settings-item-title\">{s.title}</div>\n <div className=\"mobile-settings-item-desc\">{s.description}</div>\n </div>\n <ChevronRight\n size={16}\n className={cn('mobile-settings-item-chevron', isExpanded && 'is-rotated')}\n />\n </button>\n {isExpanded && (\n <div id={`mobile-settings-body-${s.id}`} className=\"mobile-settings-item-body\">\n {s.component}\n </div>\n )}\n </div>\n );\n })}\n {filtered.length === 0 && (\n <div className=\"mobile-settings-empty\">No settings match \"{search}\"</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n}\n"],"names":["MemorySection","toast","useToast","loading","setLoading","useState","saving","setSaving","initialising","setInitialising","remoteUrl","setRemoteUrl","vaultPath","setVaultPath","vaultInitialised","setVaultInitialised","refreshKey","setRefreshKey","useEffect","cancelled","cfgRes","statusRes","api","_b","_a","onSave","k","err","onInitialise","jsxs","Card","CardTitle","jsx","Brain","CardMeta","Spinner","FolderInput","Button","Loader2","GitBranch","e","Save","GeneralSettings","settings","onSettingsChange","autoSave","patchTop","key","value","patchUi","patch","GeneralSection","ProvidersSettings","EnvVarsSettings","EnvVarsSection","MemorySettings","SystemLlmSettings","SystemLlmSection","UpdatesSettings","UpdatesSection","HeadroomSettingsSection","localSettings","setLocalSettings","dirty","setDirty","HeadroomSection","TailscaleSettingsMobile","TailscaleSettings","AboutSection","about","ActivitySection","MobileSettings","snapshot","search","setSearch","expandedSection","setExpandedSection","filtered","Settings2","KeyRound","Cpu","RefreshCw","_c","Globe","Info","_d","s","SearchIcon","Icon","isExpanded","cn","ChevronRight"],"mappings":"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"}