* refactor: render chat rows from presentation state * Fix Meshtastic channel sync and add MeshCore CN preset * Add granular chat notification settings * Add SD settings backup and restore * Prepare 0.1.26-alpha release --------- Co-authored-by: vicliu624 <vicliu@outlook.com>
3.4 KiB
Phase 10 Primary Path Migration Report
Scope
Phase 10 changes the default path. It does not delete fallback, rewrite GTK widgets, rewrite LVGL menu/page renderers, add UX packs, or let runtime entries choose UX packs.
The migration rule is:
adoption descriptor path is primary; hardcoded path is fallback-only
LinuxSim Primary Path
Previous status:
- LinuxSim hardcoded runtime routing was a contained fallback.
LinuxSimRuntimeEntryconsumedLinuxSimRuntimeEntryAdoptionProbe, but the primary/fallback source was not explicit.
Current primary path:
LinuxSimRuntimeEntry -> LinuxSimRuntimeEntryAdoptionProbe -> AsciiRuntimeEntryAdoption -> AsciiRuntimeScreenGraphPresenter
Current status:
LinuxSimRuntimeSource::ScreenGraphAdoptionis the default source when adoption loads.LinuxSimRuntimeSource::HardcodedFallbackis used only when adoption fails.usingPrimaryScreenGraph()andfallbackUsed()expose the active path.
Fallback status:
fallback-only after Phase 10.1
Deletion condition:
simulator renderer no longer needs hardcoded routing.
GTK Primary Path
Previous status:
- GTK hardcoded page registry was a contained fallback.
LinuxUConsoleGtkPageRegistryAdoptionexposed descriptors, but the primary/fallback source was not explicit.
Current primary path:
LinuxUConsoleGtkPageRegistryAdoption -> GtkRuntimeEntryAdoption -> GtkUConsoleScreenGraphPresenter
Current status:
LinuxUConsoleGtkPageRegistrySource::ScreenGraphAdoptionis the default source when adoption loads.LinuxUConsoleGtkPageRegistrySource::HardcodedFallbackis used only when adoption fails.usingPrimaryScreenGraph()andfallbackUsed()expose the active path.
Fallback status:
fallback-only after Phase 10.2
Deletion condition:
GTK page registry consumes descriptors as its only page source.
LVGL Primary Descriptor Path
Previous status:
- LVGL hardcoded menu/page creation was a contained fallback.
LvglRuntimeAdoptionProbeproved compatibility runtime descriptor consumption, but the descriptor runtime was not the explicit primary source.
Current primary descriptor path:
LvglPrimaryScreenGraphRuntime -> LvglRuntimeEntryAdoption -> LvglRuntimeScreenGraphPresenter
Current status:
LvglScreenGraphRuntimeSource::ScreenGraphAdoptionis the default source when adoption loads.LvglScreenGraphRuntimeSource::HardcodedFallbackis used only when adoption fails.usingPrimaryScreenGraph()andfallbackUsed()expose the active path.
Fallback status:
fallback-only after Phase 10.3
Real widget migration:
deferred
Deletion condition:
LVGL renderers consume descriptor runtime before creating menu/page objects.
Not Done
- real GTK widget hierarchy rewrite
- real LVGL widget/menu rewrite
- fallback deletion
- full navigation stack replacement
- all screen/page migration
Checker Status
tools/architecture/check_phase10_primary_path_ready.py verifies that the
three primary paths expose source enums, primary/fallback probes, reports, and
forbidden-token guardrails.
Phase 11 Recommendation
Phase 11 should target real renderer descriptor consumption:
- first consume ASCII descriptors as renderer input without hardcoded route lookup
- then let GTK page registry consume descriptors as the concrete page list
- then migrate LVGL device renderers from descriptor-primary runtime into real widget/menu construction