Hibryda
eb04e7e5b5
fix(error): migrate remaining Rust commands to AppError (btmsg, bttask, knowledge, plugins, search)
2026-03-18 01:23:56 +01:00
Hibryda
4fccc3f3e0
fix(error): replace console.warn with handleInfraError in session-persistence
2026-03-18 01:23:51 +01:00
Hibryda
d582a1d26c
fix(error): migrate notifications.rs + message-adapters error handling
2026-03-18 01:22:30 +01:00
Hibryda
1978475766
fix(error): migrate misc.rs to AppError
2026-03-18 01:22:27 +01:00
Hibryda
07f41fe0ea
fix(error): migrate remote.rs to AppError
2026-03-18 01:22:19 +01:00
Hibryda
93b3db8b1f
fix(error): add global error handler, fix stores and dispatcher
...
- Global unhandledrejection handler with IPC+network filtering
- Agent dispatcher heartbeat uses handleInfraError (was fire-and-forget)
- All stores: layout, workspace, anchors, theme, plugins, machines,
wake-scheduler — silent failures replaced with handleInfraError
- initGlobalErrorHandler() called in App.svelte onMount
2026-03-18 01:22:12 +01:00
Hibryda
8b3b0ab720
feat(error): add Rust AppError enum and migrate command modules
...
- AppError enum with 10 variants (Database, Auth, Filesystem, Ipc, NotFound,
Validation, Sidecar, Config, Network, Internal) + serde tag serialization
- From impls for rusqlite::Error, std::io::Error, serde_json::Error
- Migrated 9 command modules from Result<T, String> to Result<T, AppError>
- Frontend receives structured {kind, detail} objects via IPC
2026-03-18 01:22:04 +01:00
Hibryda
365c420901
fix(settings): replace console.error with handleError + Promise.allSettled
...
- All 6 settings components: save handlers use handleError with user intent
- onMount loaders migrated from Promise.all to Promise.allSettled (partial recovery)
- loadError $state + inline warning banner on full load failure
- JSON parse catches use handleInfraError with explicit fallback comments
- Secret operations (reveal/store/delete) use handleError for user feedback
2026-03-18 01:21:48 +01:00
Hibryda
c7292e9e54
docs: update TODO, CHANGELOG for error handling audit and settings redesign
2026-03-18 01:19:29 +01:00
Hibryda
dcdb741403
feat(error): add error handling foundation (Day 0)
...
- extractErrorMessage(err: unknown) normalizes any error shape to string
- handleError/handleInfraError dual utilities (user-facing vs infra-only)
- error-classifier extended with ipc/database/filesystem types (9 total)
- Toast rate-limiting (max 3 per type per 30s) in notifications store
- Infrastructure bridges use documented console.warn (recursion prevention)
- 13 new tests for extractErrorMessage
2026-03-18 01:19:23 +01:00
Hibryda
bfc01192d2
docs(todo): add urgent error handling audit task
2026-03-17 06:33:41 +01:00
Hibryda
1ac6b69311
fix(settings): copy monolith's working theme dropdown pattern exactly
2026-03-17 06:30:09 +01:00
Hibryda
c094983814
fix: missing closing > on appearance div tag
2026-03-17 06:22:13 +01:00
Hibryda
b2f0c446b1
fix(settings): use monolith's working dropdown pattern (onclick on container div)
2026-03-17 06:20:44 +01:00
Hibryda
1f2dd91f82
fix(settings): use document pointerdown for dropdown close (no backdrop)
2026-03-17 06:18:42 +01:00
Hibryda
f8032debac
fix(settings): replace window click handler with backdrop for dropdown close
2026-03-17 06:16:18 +01:00
Hibryda
201f168621
fix(settings): fix theme/font dropdown toggle (stopPropagation on buttons)
2026-03-17 06:11:41 +01:00
Hibryda
614ae79f8e
fix(settings): switch to horizontal tab bar layout (single column, full width content)
2026-03-17 06:09:00 +01:00
Hibryda
1670ea4482
feat(settings): wire new SettingsPanel into App.svelte (replaces monolith)
2026-03-17 06:06:22 +01:00
Hibryda
886a2f723a
feat(settings): Sprint 4 — wire all 6 category components into SettingsPanel
...
SettingsPanel now renders actual components instead of placeholders:
AppearanceSettings, AgentSettings, SecuritySettings, ProjectSettings,
OrchestrationSettings, AdvancedSettings. Category switching via sidebar
with keyboard navigation and search deep-linking.
Settings redesign complete: 2959-line monolith replaced by 7 modular
components totaling ~1,700 lines. Monolith retained for backward
compatibility — will be removed once all edge cases are verified.
2026-03-17 05:50:34 +01:00
Hibryda
c622202f5f
refactor(settings): trim SecuritySettings to 276 lines (was 420)
2026-03-17 05:45:20 +01:00
Hibryda
734d5fff89
feat(settings): Sprint 2 — extract SecuritySettings (420 lines, needs trim)
2026-03-17 05:43:58 +01:00
Hibryda
9769e7f29a
feat(settings): Sprint 2-3 — extract Orchestration (238) + Advanced (321) settings
2026-03-17 05:42:57 +01:00
Hibryda
438f986a08
feat(settings): Sprint 2 — extract ProjectSettings (groups + project CRUD, 195 lines)
2026-03-17 05:42:43 +01:00
Hibryda
b25d22e686
feat(settings): Sprint 1 — extract AppearanceSettings from monolith (222 lines)
2026-03-17 05:29:47 +01:00
Hibryda
48dd35000a
feat(settings): Sprint 1 — extract AgentSettings from monolith (285 lines)
2026-03-17 05:05:15 +01:00
Hibryda
244d5e3938
feat: Sprint 0 — settings panel infrastructure
...
SettingsPanel.svelte: VS Code-style shell with sidebar categories,
search bar (fuzzy on registry metadata), keyboard navigation (arrows,
Escape), deep-link to setting anchors.
settings-registry.ts: static metadata for 35+ settings with key, label,
description, category, anchorId, keywords, scopeable, pro flags.
Supports fuzzy search and category filtering.
settings-scope.svelte.ts: centralized scope resolution store.
scopedGet/scopedSet resolve Global→Project cascade. Override chain
for ScopeCascade display. Cache invalidation on project switch.
settings/categories/ directory ready for Sprint 1 extraction.
2026-03-17 04:58:57 +01:00
Hibryda
6ca168e336
fix(a11y): resolve all 15 pre-existing Svelte compiler warnings
...
- GroupAgentsPanel: add keyboard handler on clickable div, remove unused CSS
- CommsTab: add aria-label on icon button
- CommandPalette: add aria-label on close button
- SettingsTab: add aria-labels on icon buttons, remove unused CSS rules
- AgentPane: fix state_referenced_locally for initialPrompt
- NotificationCenter: add keyboard handler on clickable notification
- ProjectHeader: replace nested <button> with <span> (invalid DOM nesting)
- CodeEditor: fix state_referenced_locally for content and lang
- PdfViewer: fix state_referenced_locally for filePath
2026-03-17 04:53:49 +01:00
Hibryda
2cdc8dddb2
chore: remove old root-level docs (content moved to subdirectories)
2026-03-17 04:22:47 +01:00
Hibryda
493b436eef
docs: complete reorganization — move remaining docs into subdirectories
2026-03-17 04:22:38 +01:00
Hibryda
8641f260f7
docs: move orchestration and sidecar docs into subdirectories
2026-03-17 04:19:04 +01:00
Hibryda
b6c1d4b6af
docs: add 11 new documentation files across all categories
...
New reference docs:
- agents/ref-btmsg.md: inter-agent messaging schema and CLI
- agents/ref-bttask.md: kanban task board operations
- providers/ref-providers.md: Claude/Codex/Ollama/Aider comparison
- config/ref-settings.md: (already committed)
New guides:
- contributing/dual-repo-workflow.md: community vs commercial repos
- plugins/guide-developing.md: Web Worker sandbox API and publishing
New pro docs:
- pro/features/knowledge-base.md: persistent memory + symbol graph
- pro/features/git-integration.md: context injection + branch policy
- pro/marketplace/README.md: 13 plugins catalog
Split files:
- architecture/data-model.md: from architecture.md (schemas, layout)
- production/hardening.md: from production.md (supervisor, sandbox, WAL)
- production/features.md: from production.md (FTS5, plugins, secrets, audit)
2026-03-17 04:18:05 +01:00
Hibryda
8251321dac
docs: restructure documentation into multilevel directory layout
...
New structure: docs/ split into 11 subdirectories (getting-started/,
agents/, providers/, sidecar/, multi-machine/, plugins/, config/,
production/, architecture/, contributing/, pro/).
New files:
- docs/README.md: navigation index with audience table
- docs/getting-started/quickstart.md: install, build, first session
- docs/config/ref-settings.md: all env vars, config files, databases
- docs/architecture/overview.md: split from architecture.md (>300 lines)
- docs/pro/README.md: Pro edition overview
- docs/pro/features/analytics.md: analytics dashboard docs
- docs/pro/features/cost-intelligence.md: budget + router docs
Remaining docs being written by background agents — will be committed
in follow-up when complete.
2026-03-17 04:15:15 +01:00
Hibryda
738574b9f0
fix(security): resolve all HIGH/MEDIUM/LOW audit findings
...
Rust fixes (HIGH):
- symbols.rs: path validation (reject near-root, 50K file limit, symlink filter)
- memory.rs: FTS5 query quoting (prevent operator injection), 1000 fragment cap, content length limit, transaction wrapping
- budget.rs: atomic check-and-reserve via transaction, input validation, index on budget_log
- export.rs: safe UTF-8 truncation via chars().take()
- git_context.rs: reject paths starting with '-' (flag injection)
- branch_policy.rs: action validation (block|warn only), path validation
Rust fixes (MEDIUM):
- export.rs: named column access (positional→named)
- budget.rs: named column access, negative value guards
Svelte fixes:
- AccountSwitcher: 2-step confirmation before account switch
- ProjectMemory: expand/collapse content, 2-step delete confirm, tags split fix
- CodeIntelligence: min 2-char symbol query, CodeSymbol rename, aria-labels
- BudgetManager: 10M upper bound, aria-label on input, named constants
- SessionExporter: timeout cleanup on destroy, aria-live feedback
- AnalyticsDashboard: SVG aria-label, removed unused import, named constant
2026-03-17 03:56:44 +01:00
Hibryda
0324f813e2
fix(security): resolve critical audit findings in marketplace and frontend
...
CRITICAL fixes:
- marketplace.rs: Replace fake SHA-256 (SipHash) with real sha2 crate
- marketplace.rs: Reject empty checksums (refuse unsigned plugins)
- marketplace.rs: Add install path traversal protection (reject ../|/|\)
- marketplace.rs: Add HTTPS-only URL validation on download_url
- marketplace.rs: Add curl --proto =https to block file:/gopher: SSRF
- marketplace.rs: Add --max-filesize 50MB download cap
- marketplace.rs: Add --no-same-owner --no-same-permissions to tar extraction
- marketplace.rs: Post-extraction path validation (canonicalize check)
Frontend fixes:
- pro-bridge.ts: Rename Symbol→CodeSymbol (avoid global collision)
- pro-bridge.ts: Tighten trust type to union 'human'|'agent'|'auto'
- PluginMarketplace.svelte: URL sanitization (reject non-https hrefs)
Remaining audit fixes (HIGH/MEDIUM/LOW) being applied by background
agents — will be committed separately when complete.
2026-03-17 03:50:10 +01:00
Hibryda
285f2404aa
refactor(pro): simplify ProjectMemory and CodeIntelligence components
2026-03-17 03:29:14 +01:00
Hibryda
be084c8f17
feat(pro): add Svelte components for commercial phases
...
BudgetManager (budget+router), ProjectMemory (persistent memory),
CodeIntelligence (symbols+git+branch policy). Updated pro-bridge.ts
with all new IPC functions.
2026-03-17 03:27:40 +01:00
Hibryda
191b869b43
feat(pro): implement all 3 commercial phases
...
Phase 1 — Cost Intelligence:
- budget.rs: per-project token budgets, soft/hard limits, usage logging
- router.rs: 3 preset profiles (CostSaver/QualityFirst/Balanced)
Phase 2 — Knowledge Base:
- memory.rs: persistent agent memory with FTS5, auto-extraction, TTL
- symbols.rs: regex-based symbol graph (tree-sitter stub)
Phase 3 — Git Integration:
- git_context.rs: branch/commit/modified file context injection
- branch_policy.rs: session-level branch protection
6 modules, 32 cargo tests, 22+ Tauri plugin commands.
2026-03-17 03:27:40 +01:00
Hibryda
3798bedc4d
feat: add pre-dispatch hook for agent task middleware
...
Generic extension point in community codebase: PreDispatchHook type
registered in AppState, checked before every agent_query dispatch.
Enables Pro features like budget enforcement and branch policy.
2026-03-17 03:27:40 +01:00
Hibryda
19771237c9
refactor(pro): simplify PluginMarketplace component (503→310 lines)
2026-03-17 02:22:20 +01:00
Hibryda
5300c09157
feat(pro): add plugin marketplace with catalog, install, and update support
...
Marketplace backend (agor-pro/src/marketplace.rs): fetch catalog from
GitHub, download+verify+extract plugins, install/uninstall/update with
SHA-256 checksum verification and path traversal protection. 6 Tauri
plugin commands.
PluginMarketplace.svelte: Browse/Installed tabs, search, plugin cards
with permission badges, one-click install/uninstall/update.
Plugin catalog repo: agents-orchestrator/agor-plugins (3 seed plugins).
Plugin scaffolding: scripts/plugin-init.sh.
7 marketplace vitest tests, 3 Rust tests.
2026-03-17 02:20:10 +01:00
Hibryda
a98d061b04
feat(pro): add commercial Svelte components
...
AnalyticsDashboard (period selector, summary cards, SVG bar chart, model table),
SessionExporter (session/project report generation, clipboard copy),
AccountSwitcher (account list, active indicator, hot-switch).
All use Svelte 5 runes, --ctp-* theme vars, plugin:agor-pro IPC.
2026-03-17 01:53:22 +01:00
Hibryda
fc6b306a5c
docs: update CHANGELOG and TODO for commercial features
2026-03-17 01:52:46 +01:00
Hibryda
03fe2e2237
feat(pro): add analytics, export, and multi-account commercial features
...
3 new agor-pro modules: analytics.rs (usage dashboard queries),
export.rs (session/project Markdown report generation),
profiles.rs (multi-account switching via accounts.json).
9 Tauri plugin commands. Frontend IPC bridge (pro-bridge.ts).
168 cargo tests, 14 commercial vitest tests.
2026-03-17 01:52:46 +01:00
Hibryda
6973c70c5a
fix(deps): resolve 15 Dependabot security vulnerabilities
...
- undici: updated to fix WebSocket memory exhaustion, CRLF injection,
HTTP smuggling, and 64-bit length overflow (10 alerts)
- devalue: updated to fix prototype pollution in parse/unflatten (2 alerts)
- serialize-javascript: override to >=7.0.3 fixes RCE via RegExp.flags (1 alert)
- glib 0.18.5: unsound Iterator impls — upstream tauri dependency,
cannot update without tauri releasing gtk-rs 0.22 support (1 alert, low risk)
Resolves all npm vulnerabilities (0 remaining). 1 Rust advisory remains
(glib, pinned by tauri gtk-rs dependency chain).
2026-03-17 01:33:32 +01:00
Hibryda
ec2fee256e
chore: remove old bterminal-core and bterminal-relay directories
...
These were renamed to agor-core and agor-relay in the rebrand commit.
Also removes the old bterminal.test.ts (renamed to agor.test.ts).
2026-03-17 01:12:35 +01:00
Hibryda
421c38cd8c
docs: update all documentation for agor rebrand and dual-repo structure
2026-03-17 01:12:25 +01:00
Hibryda
5fadd1c022
feat: add agor-pro commercial plugin crate and dual-repo infrastructure
...
agor-pro Tauri 2.x plugin (feature-gated via --features pro),
commercial Tauri config overlay, asymmetric test setup,
CI workflows (leak-check, commercial-build, PAT health),
pre-push hook, Makefile, CONTRIBUTING/MAINTENANCE/LICENSE-COMMERCIAL.
2026-03-17 01:12:25 +01:00
Hibryda
a63e6711ac
refactor!: rebrand bterminal to agor (agents-orchestrator)
...
Rename Cargo crates (bterminal-core→agor-core, bterminal-relay→agor-relay),
env vars (BTERMINAL_*→AGOR_*), config paths (~/.config/agor), CSS custom
properties, plugin API object, package names, and all documentation.
BREAKING CHANGE: config/data paths changed from bterminal to agor.
2026-03-17 01:12:25 +01:00
Hibryda
ef3548a569
chore: gitignore tar.gz archives and update CHANGELOG for repo flattening
2026-03-16 05:23:53 +01:00