Added
- Bulk Select & Actions: Multi-select checkboxes, select-all, and sticky action bar for project tool assignments (MCPs, Skills, Agents, Commands, Hooks) with Enable/Disable/Remove bulk operations
- Cloud Sync: Gist-based configuration sync via GitHub CLI with push/pull support, per-machine metadata, and settings tab
- Rules Engine: Permission/constraint management with UI for creating, editing, and browsing rules
- Agent Memory Management: Persistent agent memory with UI panel for viewing and editing memory entries
- Auto Mode Editor: Settings tab for configuring Auto Mode behavior
- Model Overrides Editor: UI for per-project model override configuration
- CLI Startup Flags: New card component for configuring CLI startup flags
- Sandbox Filesystem Editor: Expanded sandbox configuration with dedicated filesystem rule editor
- Settings Tabs: New settings tabs for Cloud Sync, Auto Mode, and CLI configuration
Fixed
- Analytics Page Crash: Added missing
DailyCosttype andfilteredDailyCostsderived property to usage store — the daily cost chart and projections card referenced these but they were never implemented - Settings & Dashboard Crash: Implemented full onboarding store API (
completeStep,dismiss,syncWithStores,showOnboarding,progress,isFirstRun) — the store was a skeleton that didn't match what the UI components expected - Card Dropdown Clipping: Removed CSS
contain: layoutthat was cutting off kebab menus on library cards - Async Tests: Tests now use
#[tokio::test]with.awaitinstead of silently dropping futures - Blocking I/O:
get_gh_cli_tokenwrapped inspawn_blockingto avoid blocking the async runtime - Secret Scrubbing: MCP
envandheadersexcluded from cloud sync payload to prevent leaking API keys - File Backup: Cloud sync pull now creates
.bakbackups before overwriting CLAUDE.md files, with confirmation dialog - Accessibility: Added focus-visible ring indicators to all bulk-select and checkbox buttons
- Glob Matching: Single-star glob patterns no longer cross directory boundaries
- ContainerLogs: Fixed null reference in
requestAnimationFramecallback after component unmount