todo-app/lib/ui
Krzysztof kuhy Rudnicki 34b2c1c87c Fix three gate defects found reviewing the cap refactor
Moving bump_patch_version.sh into .pre-commit-config.yaml introduced three
bugs, all reproduced in clean clones of HEAD before fixing and re-verified
after:

1. DATA LOSS. pre-commit stashes unstaged changes and restores them with
   `git apply`. The bump rewrites pubspec.yaml inside that window, so an
   uncommitted edit near the `version:` line made the restore conflict:
   the commit aborted AND the developer's edit vanished from the working
   tree, recoverable only from $PRE_COMMIT_HOME. Only non-mutating checks
   belong in that file.

2. A commit rejected by the file-length gate still had its version bumped
   and staged, riding into the next successful commit. `always_run: true`
   with no `fail_fast` meant "ordered last" did not mean "runs last only
   on success" -- which is exactly what the comment above it claimed.

3. `files: ^pubspec\.yaml$` narrowed the crdt_sync override check from
   unconditional to staged-only, so a poisoned pubspec arriving by pull or
   merge was invisible to every later commit that did not touch pubspec.
   The hand-written hook this replaced checked it every time; that
   narrowing quietly widened the hole the check exists to close.

The fix keeps the framework for the read-only gates and puts the mutation
back outside it: install_hooks.sh now writes a wrapper that runs
pre-commit's generated hook first and bump_patch_version.sh only if it
passed. Plus fail_fast, and always_run on the crdt check.

Also fixes three stale references this refactor created: a load-bearing
layout comment citing the renamed _buildRaw, bin/todo_desktop.dart naming
two split-away test files, and CLAUDE.md giving two different suite
runtimes.

Verified: unstaged pubspec edit preserved through a commit; a rejected
commit leaves nothing staged; a merged-in override is caught on an
unrelated commit. 313 tests, 100% coverage, gate exits 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 17:13:31 +02:00
..
capture_app_bar.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_draft.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_meta_row.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_screen_sync.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_screen_widget.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_screen.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_status_footer.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_status.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
capture_sync_runner.dart Split capture_screen.dart into ten files under the cap 2026-08-14 16:25:51 +02:00
confirm.dart Confirm before deleting a note 2026-07-30 16:31:15 +02:00
device_code_dialog.dart Split the last three oversized lib/bin files 2026-08-14 16:29:35 +02:00
github_mirror_screen_widget.dart Split the last three oversized lib/bin files 2026-08-14 16:29:35 +02:00
github_mirror_screen.dart Split the last three oversized lib/bin files 2026-08-14 16:29:35 +02:00
markdown_view.dart warm-tint the unified-design-system palette, fix design audit violations 2026-07-22 18:56:45 +02:00
note_actions_sheet.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
note_date_range_field.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
note_detail_screen.dart Confirm before deleting a note 2026-07-30 16:31:15 +02:00
note_editor_chrome.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_document.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_mode.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_raw_field.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_step_page.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_views.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_widget.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor_wizard.dart Split note_editor.dart into nine files under the cap 2026-08-14 16:12:04 +02:00
note_editor.dart Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
note_tile.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
notes_filter_sheet.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
notes_list_navigation.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
notes_list_screen.dart Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
settings_screen.dart Migrate Sync settings to the shared sync_settings_ui package 2026-08-12 23:25:16 +02:00
theme.dart theme.dart: define secondary/tertiary ColorScheme roles 2026-07-22 19:42:57 +02:00