ADHD-first scheduling app (Focus Flow) — fork of FOSS/adhd_scheduling by Ashley Venn
Find a file
pyr0ball 383130ebdb chore: merge upstream Backlog Board feature from Ashley's instance
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: Circuit-Forge/focus-flow#9
2026-07-10 22:46:09 -07:00
.githooks docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00
.github/workflows docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00
apps/focus_flow_flutter chore: merge upstream Backlog Board feature from Ashley's instance 2026-07-10 22:46:09 -07:00
archive docs: refresh stale completed ADRs 2026-07-06 20:06:45 -07:00
Codex Documentation test(backlog): complete board validation handoff 2026-07-07 15:00:26 -07:00
Human Documentation docs: add backlog board plan assets 2026-07-07 12:27:26 -07:00
packages chore: merge upstream Backlog Board feature from Ashley's instance 2026-07-10 22:46:09 -07:00
scripts docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00
test feat: complete sqlite runtime persistence plan 2026-07-01 19:40:56 -07:00
tool test(backlog): complete board validation handoff 2026-07-07 15:00:26 -07:00
.earthlyignore build: add earthly deployment workflow 2026-07-01 14:20:23 -07:00
.gitignore build: add earthly deployment workflow 2026-07-01 14:20:23 -07:00
.gitleaks.toml chore: merge upstream Backlog Board feature from Ashley's instance 2026-07-10 22:46:09 -07:00
AGENTS.md docs: add backlog board plan assets 2026-07-07 12:27:26 -07:00
analysis_options.yaml feat: add logging to entire project 2026-07-03 10:21:02 -07:00
DOCUMENTATION_PASS_SUMMARY.md docs(readme): sync v1 core handoff 2026-06-24 15:06:24 -07:00
Earthfile fix: repair earthly linux build target 2026-07-01 19:53:43 -07:00
Focus Flow Contributors.md refactor: group scheduler core src modules 2026-07-01 13:54:28 -07:00
LICENSE.md Initial commit 2026-06-19 15:30:42 -07:00
LOGGING_RULES.md docs: add logging handoff rules 2026-07-02 19:16:34 -07:00
pubspec.yaml docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00
README.md feat: add timeline task context menu 2026-07-01 20:22:06 -07:00
REUSE.toml docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00

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 msix package configuration available to dart run msix:create
  • Linux: Flutter desktop support plus appimage-builder and AppImageBuilder.yml; produces an AppImage

Tagged CI runs upload release artifacts from build/releases/.