Skip to content

Consolidate dock around the local-first tabbed UI #805

@ebelo

Description

@ebelo

Problem

qfit currently carries three UI layers from successive iterations:

  1. Legacy .ui long-scroll dock — still owns many real widgets, settings bindings, and workflow callbacks.
  2. Intermediate workflow-sections refactor — rearranges the legacy widgets into collapsible sections, but is now mostly hidden by the live local-first shell.
  3. Local-first tabbed dock — the current visible user surface, but it still depends on hidden legacy widgets as backing controls.

This creates a mismatch: the visible UI is cleaner, but some behavior still lives in hidden legacy controls. Users may not be able to discover or configure all features from the current tabbed UI.

Functionality to audit/re-expose in the local-first UI

Known candidates from the current code/UI split:

  • Mapbox background-map configuration and loading
    • enable basemap
    • preset
    • custom style owner / style ID
    • tile rendering mode
    • explicit load/apply basemap action
  • Activity styling / visualization options
    • style preset
    • preview sort if still product-relevant
  • Map filters
    • name/date/distance/detailed-route filters are moved into the Map page, but should be verified in the live layout.
  • Data/storage settings
    • GeoPackage output path and browse action
    • sampled activity point generation
    • point sampling stride
  • Advanced fetch settings
    • page size / max pages
    • detailed route fetching
    • detailed route strategy
    • max detailed routes this run
  • Analysis controls
  • Atlas/export controls
    • PDF output path and browse action
    • any remaining export settings still only present in hidden backing controls
  • Connection/settings controls
    • Strava and Mapbox credentials should have one clear Settings home, without duplicate hidden ownership.

Proposal

Consolidate the production dock around the local-first tabbed UI as the only user-facing dock architecture:

  • Migrate every still-needed legacy control into explicit local-first page content or Settings content.
  • Remove the dependency on hidden legacy widgets for user-facing configuration where practical.
  • Delete or retire the legacy long-scroll .ui surface once parity is reached.
  • Delete or retire the intermediate WorkflowSectionCoordinator collapsible-section path once it no longer owns production behavior.
  • Keep callback/application logic, but bind it to local-first widgets directly instead of hidden legacy widgets.

Acceptance criteria

  • The local-first tabbed UI exposes all supported user-facing qfit functionality.
  • No supported feature is configurable only through hidden legacy widgets.
  • The legacy long-scroll dock is no longer installed or required as a user-facing surface.
  • The intermediate workflow-section rearrangement path is removed or reduced to non-production compatibility only.
  • Settings persistence continues to load existing user preferences without breaking migration.
  • Tests cover the local-first UI parity for the migrated controls/actions.

Execution guidance

Use this issue as the cleanup/consolidation umbrella for retiring the legacy and intermediate UI layers. Do not implement the whole umbrella in one large PR. Split the work into small, reviewable PR-sized slices, for example:

  1. Re-expose one missing feature area in the local-first UI.
  2. Move its settings/callback bindings from hidden legacy widgets to local-first widgets.
  3. Add focused tests for that migrated surface.
  4. Only then remove or simplify the now-unused legacy/intermediate code for that slice.

Each PR should preserve existing settings compatibility and keep the visible local-first UI coherent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions