todo-app/lib/ui
Krzysztof kuhy Rudnicki 66143bdfe3 Make the app compile and run for web, behind platform seams
First step of moving the desktop app off Flutter's Linux embedder, which tops
out at ~20fps at 4K (see docs/desktop-performance-findings.md). Android is
unaffected and keeps every existing code path.

The blocker was that `dart:io` was imported by note_repository, capture_screen
and settings_screen. On web it compiles to a stub and then throws at runtime --
the first web build rendered a blank white window. So each `dart:io` use now
sits behind a conditional export, with the shared logic hoisted into pure Dart:

- note_repository loses `dart:io`/sqlite entirely. Platform wiring moves to
  repository_factory{,_io,_web}, and the legacy sqlite import moves to its own
  io-only library. The HLC-from-updated_at seeding is preserved verbatim, so
  independently-migrating devices still resolve pre-cutover edits by real edit
  time.
- Notes persist to IndexedDB on web, not localStorage: the log is the primary
  copy of the backlog and localStorage caps at ~5-10MB and is evicted eagerly.
- BACKLOG.md and the explicit Export keep working through a local wrapper
  (added next). A browser cannot write `~/todo/BACKLOG.md`, and the user's
  tooling plus the todo MCP server read that path, so leaving it to rot was not
  an option. Writes are best-effort so the app still works with no wrapper.
- Notes are also mirrored to the wrapper's on-disk copy, so a wiped Chrome
  profile is not a total-loss event for notes that have not reached GitHub yet.

`openRepository` is split so `openRepositoryIn` keeps the migration tests; the
suite stays at 174 green and 100% coverage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 13:14:03 +02:00
..
capture_screen.dart Make the app compile and run for web, behind platform seams 2026-07-20 13:14:03 +02:00
markdown_view.dart Switch to very_good_analysis, matching the rest of the Flutter ecosystem 2026-07-20 11:05:13 +02:00
note_detail_screen.dart Switch to very_good_analysis, matching the rest of the Flutter ecosystem 2026-07-20 11:05:13 +02:00
note_editor.dart Switch to very_good_analysis, matching the rest of the Flutter ecosystem 2026-07-20 11:05:13 +02:00
notes_list_screen.dart Switch to very_good_analysis, matching the rest of the Flutter ecosystem 2026-07-20 11:05:13 +02:00
settings_screen.dart Make the app compile and run for web, behind platform seams 2026-07-20 13:14:03 +02:00