Release v0.8.3
2026-03-05
Added
config_lint(): validates all settings (JSON, number ranges, choices, API key format, nul bytes, URLs) with inline error messagesSettingsNodetree API: backend exposes TOML settings as nested tree with resolved valuesget_settings_treeandlint_configTauri commands- File analytics: stat cards, action breakdown chart, events-over-time, searchable event table
- Setup wizard hook: auto-detects first run and shows welcome view
- Reveal/hide toggle for API key and password fields
- Range hints (min/max) for number inputs
- Dropdown rendering for settings with predefined choices
Changed
- Settings UI fully rewritten: auto-generated from TOML settings tree. Adding settings to
defaults.tomlautomatically appears in UI with no frontend code changes. Replaced 6 hardcoded section components with a single recursive renderer. - File settings store path and content together as
{ path, content }objects - Guest config file permissions tightened from 0644 to 0600
- JSON validation uses zero-allocation
serde::de::IgnoredAny - SubMenu component supports optional icons
- Analytics data separation: Models and MCP sections query session.db exclusively
- Unified SQL gateway:
query_dbIPC replaces 11 per-query Tauri commands with a single parameterized gateway - Frontend queries run through
db.ts+sql.tsinstead of individual api.ts wrappers - Justfile streamlined from 23 recipes to 13 public + 5 internal
Fixed
- 12 compilation warnings eliminated
- Test fixture updated with full pipeline coverage
fixture_top_domains_non_emptyassertion fixed for error events
Security
- File setting paths validated: must start with
/, no.., warns on unusual paths query_rawenforcesPRAGMA query_only = ON— prevents SQL injection write-through