v1.1.1
What's Changed
This release addresses all findings from the v1.1.0 peer code review, improving correctness, consistency, and maintainability across the Rust backend and Svelte frontend.
Correctness & Crash Risk
- Replace all
Uuid::parse_str().unwrap()with aparse_uuid()helper that returns proper errors instead of panicking - Set
PRAGMA foreign_keys = ONat connection open instead of buried in schema DDL - Convert all 12 manual
BEGIN/COMMIT/ROLLBACKblocks torusqlite::Transactionwith auto-rollback on drop - Fix
duplicate_sceneandduplicate_chapterto copyplanning_statusfrom the original instead of hardcodingFixed
Consistency
- Migrate
on:event directives to Svelte 5onkeydown/onclicksyntax across 6 components - Replace
.filter_map(|r| r.ok())with.collect::<Result<Vec<_>, _>>()to propagate deserialization errors (42 instances) - Set a restrictive Content Security Policy in
tauri.conf.json
Maintainability
- Extract shared import logic into
src/lib/utils/import.ts, deduplicatingApp.svelteandStartScreen.svelte - Add Svelte 5 rune globals and missing DOM globals to ESLint config, remove 8
eslint-disablecomments - Type
IconComponentasComponentTypeinstead ofany
Testing
- Reach 100% test coverage across all metrics (statements, branches, functions, lines)
- New test suites for
commands.tsandupdater.ts - Fix E2E test failures caused by guidance overlay intercepting clicks
Cleanup
- Remove unnecessary
typeof windowguards inUIStore - Use incrementing counter for toast IDs instead of
Date.now() - Move
update_project_modifiedinside transactions insync.rs - Resolve
npm audit(undici) andcargo audit(bytes) vulnerabilities
Full Changelog: v1.1.0...v1.1.1