Wire Backlog nav, Break up, Settings dialog + merge Backlog Board feature #20

Open
pyr0ball wants to merge 26 commits from Circuit-Forge/focus-flow:feat/9-12-13-wire-backlog-nav-and-modal-actions into main
Collaborator

Supersedes #18 (same starting commit, plus everything since).

Summary

  • Wires sidebar Backlog navigation and the task modal's Move-to-Backlog / Break-up actions to already-implemented backend commands. Closes #9, #12, #13.
  • Extracts the Break-up dialog into a standalone widget shared by the task modal and the timeline card's quick-action icon, and wires the timeline card's missing Break-up icon.
  • Adds a Settings dialog (sidebar + top bar entry points) bound to persisted OwnerSettings/BacklogStalenessSettings, including a new getOwnerSettings core use case that didn't exist before.
  • Merges the Backlog Board feature from the smolblocks.com upstream (20 commits: board columns/cards, task detail drawer, summary panel, search/filter/sort/group, Break Up and Someday actions, unified FocusFlowSection navigation). Reconciles with the above by replacing this branch's placeholder BacklogPane/createBacklogController wiring with the real BacklogBoardScreen/BacklogBoardController, and removes the now-dead placeholder widget entirely.
  • Adds a Forgejo-native .forgejo/workflows/ci.yml (ubuntu-latest only) alongside the existing GitHub-runner-labeled .github/workflows/ci.yml, since the latter never actually executes on this instance for non-org repos (see #19).

Test plan

  • flutter analyze - clean
  • dart format --set-exit-if-changed lib test - clean
  • flutter test - 106/106 passing
  • dart test (scheduler_core + scheduler_persistence_sqlite) - 348/348 passing
Supersedes #18 (same starting commit, plus everything since). ## Summary - Wires sidebar Backlog navigation and the task modal's Move-to-Backlog / Break-up actions to already-implemented backend commands. Closes #9, #12, #13. - Extracts the Break-up dialog into a standalone widget shared by the task modal and the timeline card's quick-action icon, and wires the timeline card's missing Break-up icon. - Adds a Settings dialog (sidebar + top bar entry points) bound to persisted `OwnerSettings`/`BacklogStalenessSettings`, including a new `getOwnerSettings` core use case that didn't exist before. - Merges the Backlog Board feature from the smolblocks.com upstream (20 commits: board columns/cards, task detail drawer, summary panel, search/filter/sort/group, Break Up and Someday actions, unified `FocusFlowSection` navigation). Reconciles with the above by replacing this branch's placeholder `BacklogPane`/`createBacklogController` wiring with the real `BacklogBoardScreen`/`BacklogBoardController`, and removes the now-dead placeholder widget entirely. - Adds a Forgejo-native `.forgejo/workflows/ci.yml` (ubuntu-latest only) alongside the existing GitHub-runner-labeled `.github/workflows/ci.yml`, since the latter never actually executes on this instance for non-org repos (see #19). ## Test plan - `flutter analyze` - clean - `dart format --set-exit-if-changed lib test` - clean - `flutter test` - 106/106 passing - `dart test` (scheduler_core + scheduler_persistence_sqlite) - 348/348 passing
pyr0ball added 26 commits 2026-07-11 08:10:46 -07:00
feat(ui): wire sidebar Backlog nav and modal Move-to-Backlog/Break-up actions
Some checks failed
CI / test (macos-latest) (push) Has been cancelled
CI / test (ubuntu-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / package (macos-latest, macos) (push) Has been cancelled
CI / package (ubuntu-latest, linux) (push) Has been cancelled
CI / package (windows-latest, windows) (push) Has been cancelled
CI / test (macos-latest) (pull_request) Has been cancelled
CI / test (ubuntu-latest) (pull_request) Has been cancelled
CI / test (windows-latest) (pull_request) Has been cancelled
CI / package (macos-latest, macos) (pull_request) Has been cancelled
CI / package (ubuntu-latest, linux) (pull_request) Has been cancelled
CI / package (windows-latest, windows) (pull_request) Has been cancelled
c357b7d97d
Backend was already V1-complete for these paths (moveFlexibleToBacklog,
breakUpTask); this closes the UI-wiring gap identified in the V1
feature-complete audit.

- Add createBacklogController() to SchedulerAppComposition and implement it
  in PersistentSchedulerComposition (only the demo composition had one).
- Sidebar now switches the main content area between Today and Backlog via
  a real SidebarScreen enum instead of hardcoded onTap: () {} stubs.
- Task modal's "Backlog" quick-action reuses the existing onPushToBacklog
  wiring (same backend command as the Push menu's "Push to backlog").
- Add a break-up dialog (row-level title/priority/reward/duration per
  MVP-AC-11) and SchedulerCommandController.breakUpTask(), wired to the
  modal's "Break up" button.
- Fix a latent bug where the active sidebar nav item's key was hardcoded
  to nav-today-active regardless of which item was active.

Closes: Circuit-Forge/focus-flow#9
Closes: Circuit-Forge/focus-flow#12
Closes: Circuit-Forge/focus-flow#13
Extracts the break-up dialog into a shared widgets/dialogs library so
the task modal and timeline card quick actions reuse the same flow
instead of duplicating it, then wires a Break up icon through
TimelineView/TaskTimelineCard to the existing breakUpTask command path.

Closes: #14
Adds a getOwnerSettings read query to scheduler_core (previously only
an internal helper existed) and an updateOwnerSettings command on the
Flutter command controller, then builds a shared Settings dialog
surfacing timezone, day window, compact mode, and backlog staleness
thresholds. Both existing no-op entry points (sidebar nav item, top
bar button) now open the same dialog and persist edits through the
existing OwnerSettings/BacklogStalenessSettings backend.

Per the design spec (circuitforge-plans/focus-flow/superpowers/specs/
2026-07-07-settings-screen-design.md), the compact-mode toggle
persists but is disclosed in-UI as not yet affecting Today rendering,
since that wiring is separate scope (#11).

Closes: #16
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
Closes: Circuit-Forge/focus-flow#9
ci: add Forgejo-native CI workflow for the Circuit-Forge fork
Some checks are pending
CI / Pure-Dart workspace packages (pull_request) Waiting to run
CI / Flutter app (analyze, test, format) (pull_request) Waiting to run
b85742fcca
Ashley's upstream .github/workflows/ci.yml targets GitHub-hosted
ubuntu-latest/windows-latest/macos-latest runners, which aren't
registered on git.opensourcesolarpunk.com for non-org repos - every
matrix job on eva/focus-flow's PR #18 shows "Has been cancelled"
rather than a real pass/fail. This adds a Forgejo-native workflow at
.forgejo/workflows/ci.yml using ubuntu-latest only, matching the
pattern already proven working for circuitforge-core/peregrine/kiwi
on this instance. Also runs the Flutter app's own analyze/test/format,
which the upstream workflow (root dart workspace test.dart only)
never covered.

Closes: Circuit-Forge/focus-flow#9
Some checks are pending
CI / Pure-Dart workspace packages (pull_request) Waiting to run
CI / Flutter app (analyze, test, format) (pull_request) Waiting to run
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u feat/9-12-13-wire-backlog-nav-and-modal-actions:Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout main
git merge --no-ff Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git rebase main
git checkout main
git merge --ff-only Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git rebase main
git checkout main
git merge --no-ff Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout main
git merge --squash Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout main
git merge --ff-only Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git checkout main
git merge Circuit-Forge-feat/9-12-13-wire-backlog-nav-and-modal-actions
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: eva/focus-flow#20
No description provided.