Go to file
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
.agents/skills Add Flutter/Dart agent skills and AI rules for Claude Code 2026-06-22 22:53:03 +02:00
.github/workflows Enforce the 250-line file cap, and split the first four files 2026-08-14 16:01:24 +02:00
android Build and publish a signed APK on every push to main 2026-08-04 20:55:14 +02:00
assets/icon Regenerate launcher icon with the unified-design-system warm palette 2026-07-21 21:18:04 +02:00
bin Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
desktop Package the desktop app as the web build, and delete the Linux embedder 2026-07-20 14:08:00 +02:00
docs Split CLAUDE.md and the performance doc; the whole repo is under the cap 2026-08-14 16:46:54 +02:00
lib Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
mcp Add read-only MCP server for the backlog 2026-07-10 21:20:39 +02:00
packaging/aur packaging/aur: track the current release tag 2026-08-10 07:18:53 +02:00
scripts Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
test Split sync_service_test.dart; all code and tests now under the cap 2026-08-14 16:44:32 +02:00
tool Cut the llm-design-spec template from 12 sections to 7 2026-07-26 22:03:35 +02:00
web Make the app compile and run for web, behind platform seams 2026-07-20 13:14:03 +02:00
.gitignore Add list filters/sort, status, priority rework, export/import, structured template 2026-06-15 16:52:59 +02:00
.mcp.json Add read-only MCP server for the backlog 2026-07-10 21:20:39 +02:00
.metadata Make the app compile and run for web, behind platform seams 2026-07-20 13:14:03 +02:00
.pre-commit-config.yaml Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
analysis_options.yaml Switch to very_good_analysis, matching the rest of the Flutter ecosystem 2026-07-20 11:05:13 +02:00
CLAUDE.md Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
DESIGN_AUDIT_TODO.md Add a design-rules audit against the new safe-design-rules checklist 2026-07-21 15:25:19 +02:00
install_arch.sh Package the desktop app as the web build, and delete the Linux embedder 2026-07-20 14:08:00 +02:00
LICENSE Add MIT license 2026-06-14 14:42:45 +02:00
MIGRATION.md Add MIGRATION.md documenting the sqlite_crdt -> crdt_sync move 2026-07-11 23:55:08 +02:00
pubspec.lock Migrate Sync settings to the shared sync_settings_ui package 2026-08-12 23:25:16 +02:00
pubspec.yaml Fix three gate defects found reviewing the cap refactor 2026-08-14 17:13:31 +02:00
README.md Initial commit: offline-first CRDT notes app (capture + GitHub sync) 2026-06-14 14:20:19 +02:00
refactor_claude_todo.md Mark refactor_claude_todo.md done for this repo 2026-08-14 16:51:07 +02:00
run.sh Package the desktop app as the web build, and delete the Linux embedder 2026-07-20 14:08:00 +02:00
skills-lock.json Add Flutter/Dart agent skills and AI rules for Claude Code 2026-06-22 22:53:03 +02:00

todo

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.