tracker: foundation hardening before Google sync #355

Closed
opened 2026-05-11 21:00:54 +00:00 by barrettruth · 0 comments
Owner

Problem

The blank-start cleanup stack landed, but the next feature work still sat on objective foundation gaps: provider ownership, server/API seams, external identity, task filtering, category persistence, UI controller shape, keyboard definitions, release entrypoints, feed token ownership, and provider settings UI duplication.

This tracker coordinates the hardening wave before Google Calendar/Tasks sync and self-hosting polish. The work should stay boring: preserve behavior, reduce ownership ambiguity, delete stale surfaces, and make the remaining boundaries easier to test.

Direction

The desired shape before new features:

  • settings contains only real operator controls or live information
  • provider definitions are owned by one registry, not compatibility facades
  • settings/provider mutations happen through server-owned operations rather than client choreography
  • external identity surfaces use explicit provider IDs before Google sync expands them
  • task filtering, category persistence, and API route adapters have clear owners
  • schema/tooling drift is caught by tests or checks instead of convention
  • large keyboard/calendar/kanban modules are split by responsibility, not arbitrary size

Non-goals

  • Do not remove NLP, geocoding, Photon, Mapbox, Google Maps, Anthropic, OpenAI, or built-in NLP.
  • Do not reintroduce app login, reminders, public sharing, keymap customization, PWA/offline, or generic automations.
  • Do not add Google sync behavior in this tracker; prepare the foundation only.
  • Do not add runtime legacy/backwards-compatibility shims unless a forward DB migration needs them.

Phase 1: low-conflict foundation PRs

[x] #313 — remove empty integrations settings route.
[x] #356 — collapse provider registry facades.
[x] #358 — canonicalize external link provider IDs.
[x] #359 — finish retired-schema forward cleanup coverage.
[x] #360 — move category data behind server ownership.
[x] #361 — centralize task filter parsing.
[x] #362 — verify generated CLI manpage drift.
[x] #363 — remove unused dev dependency and tighten generated ignores.

Phase 2: server/API boundaries

[x] #357 — make geocoding provider selection server-owned.
[x] #364 — tighten task API route adapters.
[x] #365 — split request auth from local owner lookup.
[x] #366 — extract API route test harness.

Phase 3: UI/controller seams

[x] #324 — normalize keyboard scope handling.
[x] #367 — split CalendarView controller from rendering.
[x] #368 — split Kanban board controller from rendering.
[x] #369 — share queue and kanban search surface.
[ ] #370 — extract provider settings UI primitives. PR #398 is open and mergeable; CI is pending.

Phase 4: audit follow-ups

[x] #386 — move calendar feed token out of user identity.
[x] #387 — split keymap definitions by domain.
[x] #388 — canonicalize calendar external identity.
[x] #389 — retire stale version bump wrappers.
[x] #390 — make FullCalendar adapter the canonical calendar contract.

Relationship to v0.1

After #370 lands, this tracker can be closed or converted into a short final note pointing feature work back at #290, #123, #187, #184, and #95.

## Problem The blank-start cleanup stack landed, but the next feature work still sat on objective foundation gaps: provider ownership, server/API seams, external identity, task filtering, category persistence, UI controller shape, keyboard definitions, release entrypoints, feed token ownership, and provider settings UI duplication. This tracker coordinates the hardening wave before Google Calendar/Tasks sync and self-hosting polish. The work should stay boring: preserve behavior, reduce ownership ambiguity, delete stale surfaces, and make the remaining boundaries easier to test. ## Direction The desired shape before new features: - settings contains only real operator controls or live information - provider definitions are owned by one registry, not compatibility facades - settings/provider mutations happen through server-owned operations rather than client choreography - external identity surfaces use explicit provider IDs before Google sync expands them - task filtering, category persistence, and API route adapters have clear owners - schema/tooling drift is caught by tests or checks instead of convention - large keyboard/calendar/kanban modules are split by responsibility, not arbitrary size ## Non-goals - Do not remove NLP, geocoding, Photon, Mapbox, Google Maps, Anthropic, OpenAI, or built-in NLP. - Do not reintroduce app login, reminders, public sharing, keymap customization, PWA/offline, or generic automations. - Do not add Google sync behavior in this tracker; prepare the foundation only. - Do not add runtime legacy/backwards-compatibility shims unless a forward DB migration needs them. ## Phase 1: low-conflict foundation PRs [x] #313 — remove empty integrations settings route. [x] #356 — collapse provider registry facades. [x] #358 — canonicalize external link provider IDs. [x] #359 — finish retired-schema forward cleanup coverage. [x] #360 — move category data behind server ownership. [x] #361 — centralize task filter parsing. [x] #362 — verify generated CLI manpage drift. [x] #363 — remove unused dev dependency and tighten generated ignores. ## Phase 2: server/API boundaries [x] #357 — make geocoding provider selection server-owned. [x] #364 — tighten task API route adapters. [x] #365 — split request auth from local owner lookup. [x] #366 — extract API route test harness. ## Phase 3: UI/controller seams [x] #324 — normalize keyboard scope handling. [x] #367 — split CalendarView controller from rendering. [x] #368 — split Kanban board controller from rendering. [x] #369 — share queue and kanban search surface. [ ] #370 — extract provider settings UI primitives. PR #398 is open and mergeable; CI is pending. ## Phase 4: audit follow-ups [x] #386 — move calendar feed token out of user identity. [x] #387 — split keymap definitions by domain. [x] #388 — canonicalize calendar external identity. [x] #389 — retire stale version bump wrappers. [x] #390 — make FullCalendar adapter the canonical calendar contract. ## Relationship to v0.1 After #370 lands, this tracker can be closed or converted into a short final note pointing feature work back at #290, #123, #187, #184, and #95.
Sign in to join this conversation.
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#355
No description provided.