Route command conversion through app core

This commit is contained in:
2026-06-05 06:31:38 +02:00
parent 548b6d3ae5
commit 1df93c23f7
11 changed files with 393 additions and 8 deletions

View File

@@ -844,6 +844,10 @@ Known local toolchain state:
UI-state save, stroke-preview renderer shutdown, recording stop,
texture/shader invalidation, layout unload, render-target/mesh destruction,
panel-node release, and quick-mode cleanup.
- `pp_app_core_command_convert_tests` covers command-line panorama conversion
sequencing for renderer-state setup, temporary canvas allocation, project
open, equirectangular export, malformed input rejection, malformed-plan
rejection, and exact executor dispatch order.
- `pp_platform_api_tests` covers service dispatch for clipboard read/write,
empty clipboard writes, cursor visibility, virtual-keyboard visibility,
external file display, file sharing, VR lifecycle, layout/asset file load

View File

@@ -105,6 +105,12 @@ agent or engineer to remove them without reconstructing context from chat.
tested `pp_app_core` plans consumed by `App::terminate` and
`pano_cli plan-app-shutdown`; retained cleanup execution remains in the
legacy app.
- 2026-06-05: DEBT-0003 was narrowed again. Command-line panorama conversion
sequencing for renderer-state setup, temporary canvas allocation, project
open, and equirectangular export now goes through tested `pp_app_core`
planning consumed by `App::cmd_convert` and `pano_cli plan-command-convert`;
retained OpenGL state dispatch and legacy `Canvas` project open/export
execution remain in the legacy app.
- 2026-06-04: DEBT-0036 was narrowed again. Canvas stroke commit,
thumbnail, and object-draw history paths now query saved blend state through
tested `pp_renderer_gl` capability-state dispatch; CanvasLayer equirect

View File

@@ -1,7 +1,7 @@
# PanoPainter Modernization Roadmap
Status: live
Last updated: 2026-06-04
Last updated: 2026-06-05
This is the living roadmap for modernizing PanoPainter into independently
testable C++23 components while retaining all existing functionality. Keep this
@@ -209,6 +209,11 @@ recording stop, texture/shader invalidation, layout unload, render-target
destruction, panel-node release, and quick-mode cleanup now lives in
`pp_app_core`; `App::terminate` and `pano_cli plan-app-shutdown` consume that
plan while retained cleanup execution stays in the legacy app.
Command-line panorama conversion planning for renderer-state setup, temporary
canvas allocation, project open, and equirectangular export now lives in
`pp_app_core`; `App::cmd_convert` and `pano_cli plan-command-convert` consume
that sequence while retained OpenGL state dispatch and legacy `Canvas`
open/export execution stay in the legacy app.
`panopainter_app` is now a real static target that owns app orchestration
sources, app version metadata, and version-header generation.
`pp_panopainter_ui` now owns app-specific modal, dialog, panel, canvas,
@@ -1667,6 +1672,13 @@ Results:
- Focused shutdown CTest coverage passed for `pp_app_core_app_shutdown_tests`,
`pano_cli_plan_app_shutdown_smoke`, and
`pano_cli_plan_app_shutdown_rejects_unknown_option`.
- `PanoPainter`, `pp_app_core_command_convert_tests`, and `pano_cli` built
after command-line panorama conversion planning moved into `pp_app_core`.
- Focused command-convert CTest coverage passed for
`pp_app_core_command_convert_tests`,
`pano_cli_plan_command_convert_smoke`,
`pano_cli_plan_command_convert_rejects_empty_project`, and
`pano_cli_plan_command_convert_rejects_bad_resolution`.
- `PanoPainter`, `pp_app_core_brush_package_export_tests`, and `pano_cli` built
after PPBR brush package export request validation and dispatch moved behind
app-core brush package services.