refactor: split task panel controller #353

Merged
barrettruth merged 1 commit from issue-323-task-panel-refactor into main 2026-05-11 20:50:43 +00:00
Owner

Problem

src/components/task-panel.tsx mixed form state, autosave sequencing, submit/discard behavior, suggestion derivation, recurrence parsing, and field rendering in one component. That made behavior-preserving task-panel edits hard to review.

This PR now targets current main after #350 and #351. The extracted location field preserves the centralized geocoding provider behavior and visible lookup-failure suggestions from #350.

Solution

  • Extract task panel form state, derived suggestion lists, recurrence display/parsing, geocoding lookup errors, and notes tracking into useTaskPanelForm.
  • Extract save queue, autosave, create, close/discard, and initial snapshot handling into useTaskPanelPersistence.
  • Move panel chrome, metadata fields, location/category suggestion rendering, and notes rendering into focused task-panel components.
  • Keep the existing compact classes, keyboard shortcuts, due-date dirty checks, autosave queue semantics, NLP recurrence parsing, and recurrence delete flow intact.

Verification

  • nix develop --command pnpm vitest run tests/lib/task-panel-save.test.ts --reporter=verbose
  • nix develop --command just lint
  • nix develop --command just test
  • nix develop --command just build

Closes #323

## Problem `src/components/task-panel.tsx` mixed form state, autosave sequencing, submit/discard behavior, suggestion derivation, recurrence parsing, and field rendering in one component. That made behavior-preserving task-panel edits hard to review. This PR now targets current `main` after #350 and #351. The extracted location field preserves the centralized geocoding provider behavior and visible lookup-failure suggestions from #350. ## Solution - Extract task panel form state, derived suggestion lists, recurrence display/parsing, geocoding lookup errors, and notes tracking into `useTaskPanelForm`. - Extract save queue, autosave, create, close/discard, and initial snapshot handling into `useTaskPanelPersistence`. - Move panel chrome, metadata fields, location/category suggestion rendering, and notes rendering into focused task-panel components. - Keep the existing compact classes, keyboard shortcuts, due-date dirty checks, autosave queue semantics, NLP recurrence parsing, and recurrence delete flow intact. ## Verification - `nix develop --command pnpm vitest run tests/lib/task-panel-save.test.ts --reporter=verbose` - `nix develop --command just lint` - `nix develop --command just test` - `nix develop --command just build` Closes #323
refactor: split task panel controller
All checks were successful
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 20s
quality / Build (pull_request) Successful in 41s
64074a4c9a
barrettruth force-pushed issue-323-task-panel-refactor from 64074a4c9a
All checks were successful
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 20s
quality / Build (pull_request) Successful in 41s
to 0a020d4d31
Some checks failed
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 21s
quality / Build (pull_request) Has been cancelled
2026-05-11 20:27:05 +00:00
Compare
barrettruth changed target branch from main to cleanup/geocoding-provider-config-315-v2 2026-05-11 20:27:13 +00:00
barrettruth changed target branch from cleanup/geocoding-provider-config-315-v2 to main 2026-05-11 20:29:39 +00:00
barrettruth force-pushed issue-323-task-panel-refactor from 0a020d4d31
Some checks failed
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 21s
quality / Build (pull_request) Has been cancelled
to 38df15a503
All checks were successful
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 21s
quality / Build (pull_request) Successful in 41s
2026-05-11 20:35:33 +00:00
Compare
barrettruth force-pushed issue-323-task-panel-refactor from 0a020d4d31
Some checks failed
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 21s
quality / Build (pull_request) Has been cancelled
to 38df15a503
All checks were successful
quality / Test (pull_request) Successful in 16s
quality / Lint (pull_request) Successful in 21s
quality / Build (pull_request) Successful in 41s
2026-05-11 20:36:00 +00:00
Compare
barrettruth deleted branch issue-323-task-panel-refactor 2026-05-11 20:50:43 +00:00
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
barrettruth/delta!353
No description provided.