mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-08-24 03:29:50 +00:00
7.4 KiB
7.4 KiB
Phase 7 Final Legacy Surface Matrix
| Surface | Current owner | New owner | Status | Removal condition | Blocking reason | Future phase |
|---|---|---|---|---|---|---|
| Chat delivery send-result bridge | LegacyChatDeliveryEventBridge |
ChatDeliveryEventProjector / IChatDeliveryEventPort |
contained | EventBus publishes structured delivery events directly | EventBus schema still carries coarse send-result fields | Phase 8 delivery event schema |
| Chat delivery action bridge | LegacyChatDeliveryActionBridge |
ChatDeliveryActionService |
contained | UI submits ChatDeliveryActionRequest to official action sink |
Visible message-menu action surface is still compatibility-driven | Phase 8 chat action surface |
| Team action bridge | TeamActionRuntimeSink |
TeamActionRequest / ITeamActionSink |
burned-down | legacy bridge name removed from active code; runtime sink owns Team action sends | Team command runtime port is adapter-backed, not controller-owned | closed in Team legacy burn-down |
| Key verification source | LegacyKeyVerificationSource |
KeyVerificationModel / presentation source |
contained | Protocol-specific key verification sources are renamed or split | MeshCore/Meshtastic adapters still share compatibility session | Phase 8 key verification adapters |
| Key verification sink | LegacyKeyVerificationActionSink |
KeyVerificationModel / action sink |
contained | Protocol-specific action sinks replace legacy naming | Existing adapter still hides protocol-specific mesh APIs | Phase 8 key verification adapters |
| Chat key verification modal helper | KeyVerificationModalRenderer |
Dedicated modal view object | burned-down | Full modal object owns widget lifecycle | Controller still coordinates modal workflow | UX Pack / modal runtime pass |
| Team rich message row structured payload | MessageRow summary fallback |
TeamRichPayloadDisplay / TeamMessageRichPayload |
burned-down | MessageRow carries structured Team rich payload fields and renderers consume them |
Full card styling can still improve UX but no longer blocks ownership | closed in Team legacy burn-down |
| Team position picker LVGL renderer | TeamPositionPickerRenderer |
Shared picker renderer | burned-down | UX pack-specific picker replaces or formalizes renderer | Current renderer is LVGL-specific | UX Pack picker |
| Team Page create/pairing/request command handlers | team_page_components.cpp LVGL handlers |
TeamPageCreateTeamAction / TeamPagePairingCommandAction / TeamPageRequestKeysAction |
burned-down | command actions own create/pairing/request eligibility and runtime orchestration | Page controller still adapts state, notifications, save, and navigation | Team Page controller burn-down |
| Team Page event effects and navigation | team_page_components.cpp event handlers/nav helpers |
TeamPageEventEffectSink / TeamPageFlowController |
burned-down | event-effect sink and flow controller own effects/nav decisions | Page controller still renders and applies page transition side effects | Team Page controller burn-down |
| Team Page LVGL render helpers | team_page_components.cpp render helpers |
TeamPageLvglRenderer |
burned-down | renderer owns page labels/buttons/lists/member detail/kick confirm/kicked out rendering | Controller still composes renderer input/context/handlers | Team Page controller burn-down |
| Team Page kick-confirm command handler | team_page_components.cpp LVGL handler |
TeamPageKickConfirmAction |
burned-down | command action owns Kick/KeyDist/key rotation/status orchestration | Page controller still adapts state, notifications, save, and navigation | Team Page controller burn-down |
| Hostlink Team shadow state | hostlink_bridge_radio.cpp local runtime Team state |
ITeamUiSnapshotStore / ui::team_presence |
burned-down | EvTeamState is projected from canonical snapshot after Team shell handles events |
Hostlink still owns Hostlink frame enqueue and Team AppData forwarding | Hostlink bridge split |
| GPS Team overlay page-state read | ESP GPS map reads Team Page globals | TeamMapOverlaySource over ITeamUiSnapshotStore and Team posring |
burned-down | ESP GPS map never includes team_state.h, reads g_team_state, or calls team_ui_posring_load_latest directly |
GPS marker widgets remain page-local rendering | Phase 8 map overlay renderer |
| Contacts Team Page state read | Contacts page reads Team Page globals | ContactsTeamSnapshotSource over ITeamUiSnapshotStore |
burned-down | Contacts never includes team_state.h or reads/writes g_team_state |
Contacts still owns Contacts page UI workflow and composes Team chat/action sinks | Team consumer closeout |
| Map tile source/path lookup | Platform tile runtime | MapTileResolver / LegacyFilesystemMapTileSource |
contained | Dedicated map tile runtime injects source into renderers | Platform tile code still owns loading cadence | Phase 8 map tile runtime |
| Map visible tile plan | Platform tile runtime | MapTileRenderQueue |
contained | Dedicated map runtime computes queue without legacy MapTile records |
LVGL tile record compatibility still exists | Phase 8 map tile renderer |
| ESP decoded LVGL tile cache | LvglDecodedTileCache wrapper |
IMapTileDecoderCache boundary |
contained | Decoder cache is injected into a dedicated map tile renderer | LVGL image lifetime is platform-specific | Phase 8 map decoder cache |
| Map overlay current position | Legacy GPS source adapter | LegacyMapOverlaySource / MapOverlayProjector |
contained | Renderer consumes MapOverlaySnapshot directly for markers |
Existing ESP marker widgets are still page-local | Phase 8 map overlay renderer |
| Map overlay team positions | Team map projection source | TeamMapOverlaySource / MapOverlayProjector |
burned-down | GPS/map/dashboard consumers use TeamMapOverlaySource; only the Team map source seam reads Team posring |
Route/tracker/measurement overlays remain separate deferred items | closed in Team consumer closeout |
| Map route/tracker overlay | ESP route/tracker draw callbacks | Deferred overlay presentation source | explicitly deferred | Route/tracker stores expose presentation sources and renderer consumes overlay snapshot rows | Route/tracker stores are still platform/page-specific | Phase 8 route/tracker overlay |
| Measurement overlay | LegacyMapPresentationState |
Deferred overlay projection | explicitly deferred | Measurement state projects as MeasurementPoint overlay rows |
Measurement tool runtime boundary is not split | Phase 8 measurement tool |
| GPS page refresh cadence | GpsPageRuntimePump |
Runtime scheduler / UI refresh sink | contained | Page-local refresh adapters are replaced by GPS presentation refresh model | ESP GPS page workflow remains large compatibility surface | Phase 8 GPS page runtime |
| GNSS skyplot timer | GNSS page runtime | Deferred GNSS runtime pump | explicitly deferred | GNSS page cadence uses a runtime pump and skyplot renderer consumes snapshots | GNSS skyplot was outside Phase 7 map/GPS final scope | Phase 8 GNSS scheduling |
| ACK timeout projection | Adapter hook | Delivery event source | explicitly deferred | Unified ACK source emits structured timeout event | Radio/EventBus source remains protocol-specific | Phase 8 delivery telemetry |
| Key missing/radio failure projection | Delivery mapper | Delivery event source | explicitly deferred | EventBus carries structured failure kind | Current EventBus send-result schema is coarse | Phase 8 delivery telemetry |