Merges 20 commits from Ashley's smolblocks.com instance (main branch), bringing in the full Backlog Board screen (BacklogBoardController, board columns/cards, task detail drawer, summary panel, search/filter/sort/group, Break Up and Someday actions) plus the unified FocusFlowSection navigation model. Reconciled with our own in-flight work: - Replaced our placeholder BacklogPane/createBacklogController wiring with Ashley's real BacklogBoardScreen/BacklogBoardController (same problem, more complete implementation - avoids two competing Backlog UIs). - Adopted the FocusFlowSection-based Sidebar API in place of our bespoke SidebarScreen enum; the Settings nav item now intercepts FocusFlowSection.settings in _selectSection to open our Settings dialog instead of falling through to a placeholder screen. - Gave every sidebar nav item a stable key (not just the active one) so the Settings dialog tests can still target it reliably. - Kept our additive owner-settings read controller, Settings dialog, and timeline Break-up wiring; renamed the Today controller field to todayController throughout to match upstream's now-multi-controller naming. - Fixed a test-only regression: backlog_board_screen_test.dart's standalone SchedulerCommandController construction needed the new `management` param. - Added .gitleaks.toml allowlisting the local, gitignored .claude/settings.local.json path (recorded bash command patterns, not repo secrets) that was blocking commits. Verified via focusflow-flutter-ci:3.44.4 (Flutter 3.44.4/Dart 3.12.2): flutter analyze clean, dart format clean, 106/106 Flutter tests passing, 348/348 scheduler_core + scheduler_persistence_sqlite tests passing. Closes: #9 |
||
|---|---|---|
| .githooks | ||
| .github/workflows | ||
| apps/focus_flow_flutter | ||
| archive | ||
| Codex Documentation | ||
| Human Documentation | ||
| packages | ||
| scripts | ||
| test | ||
| tool | ||
| .earthlyignore | ||
| .gitignore | ||
| .gitleaks.toml | ||
| AGENTS.md | ||
| analysis_options.yaml | ||
| DOCUMENTATION_PASS_SUMMARY.md | ||
| Earthfile | ||
| Focus Flow Contributors.md | ||
| LICENSE.md | ||
| LOGGING_RULES.md | ||
| pubspec.yaml | ||
| README.md | ||
| REUSE.toml | ||
ADHD Scheduler Workspace
SQLite-first Dart workspace for the ADHD scheduler backend, persistence adapters, notifications, exports, backups, integration tests, and CI scripts.
Local Workflow
Set up the workspace and local SQLite path:
scripts/bootstrap_dev.sh
Run the local app during development:
scripts/dev.sh
Run the full local quality gate:
scripts/test.sh
The test gate runs analyzer, tests with coverage, combines LCOV output, and
fails below 80% package lib/ coverage.
Package a local desktop release with the host toolchain:
scripts/package_release.sh --platform current --output build/releases
Equivalent Dart entry points:
dart run scripts/dev.dart
dart run scripts/build.dart --platform current --output build/releases
The dev script prints the SQLite path, starts dart run build_runner watch, and
launches Flutter desktop with SCHEDULER_SQLITE_PATH passed as a dart define.
Normal Flutter startup uses that SQLite file for scheduler state rather than
inserting seeded demo tasks.
Prerequisites:
- Dart stable SDK
- Flutter stable SDK with desktop support enabled
- platform desktop toolchain: Xcode for macOS, Visual Studio Build Tools for Windows, and Linux desktop build dependencies for Linux
Optional flags:
dart run scripts/dev.dart --device linux --sqlite /tmp/scheduler.sqlite
Earthly Workflow
Earthly is the supported containerized build path going forward. It builds a
Linux desktop Flutter bundle and exports a runnable application under builds/.
Install prerequisites on the host:
- Earthly
- Docker or another Earthly-compatible container runtime
Set up the Earthly build image:
earthly +setup
Copy code and resolve Dart/Flutter dependencies inside Earthly:
earthly +code
Run all style and metadata checks:
earthly +lint
Build and package the runnable Linux desktop app:
earthly +build
Run lint, build, and package in one command:
earthly +all
Smoke-run the Earthly-built Linux desktop app under a virtual display:
earthly +run
Earthly outputs:
builds/focus_flow_linux_x64/
builds/focus_flow_linux_x64.zip
Useful focused lint targets:
earthly +format
earthly +dart-analyze
earthly +flutter-analyze
earthly +reuse
earthly +docs
earthly +pre-commit
Flutter UI
The provisional UI app lives outside the root Dart workspace at
apps/focus_flow_flutter so backend package gates can stay Dart-only while the
Flutter foundation settles.
From the repository root, start the desktop UI with the default local SQLite database:
scripts/bootstrap_dev.sh
cd apps/focus_flow_flutter
flutter pub get
flutter run -d linux
Replace linux with macos or windows on those hosts. Use flutter devices
to list available device IDs. If Flutter reports that the desktop project is
not configured for that platform, generate the missing runner from
apps/focus_flow_flutter:
flutter create --platforms=linux .
Use --platforms=macos or --platforms=windows for those hosts.
For a disposable dev database, pass an explicit SQLite path:
flutter run -d linux --dart-define=SCHEDULER_SQLITE_PATH=/tmp/focus_flow_dev.sqlite
The default database path is ~/ADHD_Scheduler/scheduler.sqlite. To reset local
UI data, close the app and delete the SQLite file you used.
cd apps/focus_flow_flutter
flutter analyze
flutter test
Packaging
scripts/package_release.sh --platform current --output build/releases
dart run scripts/build.dart --platform current --output build/releases
Packaging prerequisites:
- macOS: Flutter desktop support and Xcode; produces a
.app - Windows: Flutter desktop support, Visual Studio Build Tools, and
msixpackage configuration available todart run msix:create - Linux: Flutter desktop support plus
appimage-builderandAppImageBuilder.yml; produces an AppImage
Tagged CI runs upload release artifacts from build/releases/.