Go to file
Krzysztof kuhy Rudnicki 757c54beda Multi-select notes with an icon action bar
An app-bar toggle enters selection mode: a tap toggles a note (tint +
check on grid tiles, ListTile.selected + check in the list), Ctrl/Cmd-
click toggles and Shift-click range-selects on desktop, long-press
outside the mode still opens the per-note sheet. While anything is
selected an icon-only bottom bar sets status or priority for the whole
selection in one bulkUpdate, assigns plain notes to a repo picked from
the repos on notes or typed as owner/name, or clears the selection. A
refused assign (note already in a repo) flashes a block icon. Labels
are semantic only; menus pass an empty tooltip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWXdsB7CQPNXVN829G1
2026-11-10 15:39:13 +01:00
.agents/skills Add Flutter/Dart agent skills and AI rules for Claude Code 2026-06-22 22:53:03 +02:00
.github/workflows Bump Flutter to 3.47.9, Gradle to 9.8.2 2026-11-02 12:01:25 +01:00
android Bump Gradle wrapper to 9.9.0 2026-11-09 08:22:15 +01:00
assets/icon Launcher: label Todo (Android, desktop entry, PKGBUILD), icon fitted to the shared 340px ink circle 2026-10-23 14:38:14 +02:00
bin One open note per repo, merge tool 2026-11-02 14:11:21 +01:00
desktop Launcher: label Todo (Android, desktop entry, PKGBUILD), icon fitted to the shared 340px ink circle 2026-10-23 14:38:14 +02:00
docs Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 19:49:03 +02:00
lib Multi-select notes with an icon action bar 2026-11-10 15:39:13 +01:00
mcp Track who filed a note (created_by) 2026-11-10 14:18:19 +01:00
packaging/aur Launcher: label Todo (Android, desktop entry, PKGBUILD), icon fitted to the shared 340px ink circle 2026-10-23 14:38:14 +02:00
scripts Add todo app git hooks 2026-11-02 14:28:08 +01:00
test Multi-select notes with an icon action bar 2026-11-10 15:39:13 +01:00
tool Attach images to notes, stored on dufs and kept offline 2026-09-25 14:11:15 +02:00
web Launcher: label Todo (Android, desktop entry, PKGBUILD), icon fitted to the shared 340px ink circle 2026-10-23 14:38:14 +02:00
.fvmrc Bump Flutter to 3.47.9, Gradle to 9.8.2 2026-11-02 12:01:25 +01:00
.gitignore Latest stable dependencies, and the gate that keeps them there 2026-08-28 14:46:50 +02:00
.mcp.json MCP: Dart task server replaces Python todo_mcp 2026-11-02 09:36:44 +01: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 Add todo app git hooks 2026-11-02 14:28:08 +01:00
AGENTS.md One open note per repo, merge tool 2026-11-02 14:11:21 +01:00
analysis_options.yaml Exclude platform dirs from analysis; refresh the lockfile 2026-08-14 17:20:51 +02:00
CLAUDE.md Adopt the four markdown namespaces and gate them 2026-08-24 15:54:35 +02:00
install_arch.sh Desktop: no stray browser window from extensions; keyboard stays down after backing out of a note 2026-10-23 12:00:26 +02:00
LICENSE Add MIT license 2026-06-14 14:42:45 +02:00
pubspec.lock crdt_sync 0.12.1: serialized FileLogPersistence writes 2026-11-09 15:29:03 +01:00
pubspec.yaml Multi-select notes with an icon action bar 2026-11-10 15:39:13 +01:00
README.md Add headless note CLI (bin/todo_note.dart) reusing app CRDT sync 2026-10-16 15:35:46 +02:00
run.sh Export the backlog to ~/src/todo, not the pre-reorganisation ~/todo 2026-09-12 17:13:21 +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.

Headless note CLI

bin/todo_note.dart adds, lists, reads and deletes notes from the PC without the app, as one more sync node (own node_id and CRDT log under $XDG_DATA_HOME/todo-cli, or ~/.local/share/todo-cli). It needs the desktop Firebase session at ~/.config/todo/firebase_auth.json (seed it with python3 ~/src/utils/crdt-sync/tool/seed_session.py --app todo).

dart run bin/todo_note.dart --text "Title

body" --priority high --status in_progress     # prints the new note id
echo "Title" | dart run bin/todo_note.dart     # text from stdin
dart run bin/todo_note.dart --list             # id, priority, status, title
dart run bin/todo_note.dart --get <id>         # full note
dart run bin/todo_note.dart --delete <id>

--list and --get never push; --data-dir <dir> selects a throwaway node. Exit codes: 0 ok, 1 sync/auth failure or note not found, 2 bad arguments. All logic is in lib/cli/ (tested in test/cli/); --help lists every flag.