Centralize legacy document image exports
This commit is contained in:
@@ -561,7 +561,9 @@ Known local toolchain state:
|
||||
- `pp_app_core_document_export_tests` covers export file targets, collection
|
||||
directory/stem targets, picked-directory stems, MP4 suggested names, and
|
||||
invalid export naming inputs, plus export-start license/canvas availability
|
||||
decisions.
|
||||
decisions, export menu executor dispatch, file/stem/collection export
|
||||
execution dispatch, failed directory creation preservation, named depth/cube
|
||||
export dispatch, and malformed export target rejection.
|
||||
- `pp_app_core_document_recording_tests` covers recording start/stop, clear,
|
||||
platform recorded-file cleanup, frame-count reset, export progress totals,
|
||||
and oversized progress-total clamping.
|
||||
@@ -605,6 +607,12 @@ Known local toolchain state:
|
||||
overwrite prompts, document field updates, title updates, and keyboard/dialog
|
||||
cleanup. Retained legacy UI/canvas execution remains tracked by `DEBT-0040`,
|
||||
`DEBT-0041`, and `DEBT-0042`.
|
||||
- `src/legacy_document_export_services.*` is the current app-shell bridge
|
||||
between `pp_app_core` document export execution plans and live equirectangular,
|
||||
layers, animation-frame, depth, and cube-face export calls. It preserves
|
||||
platform-specific export messages, directory creation, picker-selected stem
|
||||
exports, Web prepared-file handoff, and legacy `Canvas` export execution while
|
||||
retained renderer/document/platform ownership is tracked by `DEBT-0043`.
|
||||
- `src/legacy_history_services.*` is the current app-shell bridge between
|
||||
`pp_app_core` history plans and legacy `ActionManager`; toolbar and
|
||||
`NodeCanvas` hotkeys share it while document-history extraction remains
|
||||
|
||||
@@ -60,6 +60,7 @@ agent or engineer to remove them without reconstructing context from chat.
|
||||
| DEBT-0040 | Open | Modernization | Close request, document save, and save-before-workflow planning/execution dispatch now consume pure `pp_app_core` through `App::request_close`, `App::save_document`, `App::continue_document_workflow_after_optional_save`, `pano_cli simulate-app-session`, `DocumentSaveServices`, `CloseRequestServices`, `DocumentWorkflowServices`, and `src/legacy_document_session_services.*`, but the bridge still opens legacy message boxes/save dialogs, calls `Canvas::I->project_save`, mutates the unsaved flag on close confirmation, invokes native app close, and routes save-version through the retained legacy dialog | Preserve current close/save/dirty-workflow behavior while document session execution moves toward app/document/UI/platform services | `pp_app_core_document_session_tests`; `pano_cli simulate-app-session --unsaved --save-intent save-dirty-version`; `pano_cli simulate-app-session --no-canvas`; `pano_cli plan-document-file --work-dir D:/Paint --name demo --target-exists`; `pano_cli plan-document-version --directory D:/Paint --doc-name demo.01 --existing-path D:/Paint/demo.02.ppi`; `ctest --preset desktop-fast --build-config Debug` | Close prompt execution, native close requests, dirty-workflow save prompts, existing-project saves, save dialogs, save-version execution, and unsaved-flag mutation are owned by injected app/document/UI/platform services with `App` methods acting only as adapters |
|
||||
| DEBT-0041 | Open | Modernization | Accepted new-document planning/execution dispatch now consumes pure `pp_app_core` through `App::dialog_newdoc`, `pano_cli plan-new-document`, `NewDocumentServices`, and `src/legacy_document_session_services.*`, but the bridge still mutates legacy app document fields, clears legacy layer UI, resizes legacy `Canvas`, clears legacy history, creates the default layer through legacy UI, mutates unsaved/new-document flags, updates the title, and handles keyboard/dialog cleanup directly | Preserve current New Document dialog behavior while document creation moves toward app/document/UI services | `pp_app_core_document_session_tests`; `pano_cli plan-new-document --work-dir D:/Paint --name demo --resolution-index 3`; `pano_cli plan-new-document --work-dir D:/Paint --name demo --resolution-index 3 --target-exists`; `pano_cli simulate-app-session --save-intent save`; `ctest --preset desktop-fast --build-config Debug` | New document creation, overwrite confirmation, canvas/document allocation, default layer creation, history clearing, title updates, dirty/new-document state, and keyboard/dialog cleanup are owned by injected app/document/UI services with `App::dialog_newdoc` acting only as a UI adapter |
|
||||
| DEBT-0042 | Open | Modernization | Accepted Save As and Save Version planning/execution dispatch now consumes pure `pp_app_core` through `App::dialog_save`, `App::dialog_save_ver`, `pano_cli plan-document-file`, `pano_cli plan-document-version`, `DocumentFileSaveServices`, `DocumentVersionSaveServices`, and `src/legacy_document_session_services.*`, but the bridge still opens legacy overwrite prompts, calls legacy `Canvas::project_save`, mutates app document name/path/directory fields, marks version saves dirty before saving, updates the title, and handles keyboard/dialog cleanup directly | Preserve current Save As and Save Version behavior while document persistence moves toward app/document/storage/UI services | `pp_app_core_document_session_tests`; `pano_cli plan-document-file --work-dir D:/Paint --name demo --target-exists`; `pano_cli plan-document-version --directory D:/Paint --doc-name demo.01 --existing-path D:/Paint/demo.02.ppi`; `pano_cli simulate-app-session --save-intent save-as`; `pano_cli simulate-app-session --save-intent save-version`; `ctest --preset desktop-fast --build-config Debug` | Save As overwrite prompting, project-save execution, app document metadata updates, title updates, version-save dirty-state handling, and keyboard/dialog cleanup are owned by injected app/document/storage/UI services with `App::dialog_save` and `App::dialog_save_ver` acting only as UI adapters |
|
||||
| DEBT-0043 | Open | Modernization | Equirectangular, layer, animation-frame, depth, and cube-face export planning/execution dispatch now consumes pure `pp_app_core` through `App::dialog_export`, `App::dialog_export_layers`, `App::dialog_export_anim_frames`, `App::dialog_export_depth`, `App::dialog_export_cube_faces`, `pano_cli plan-export-*`, `DocumentExportServices`, and `src/legacy_document_export_services.*`, but the bridge still calls legacy `Canvas` export methods, owns platform-specific export success messages, creates export directories, handles picker-selected stems, and performs Web prepared-file handoff directly | Preserve current image/collection/depth/cube export behavior while export execution moves toward document/renderer/platform/storage services | `pp_app_core_document_export_tests`; `pano_cli plan-export-start --requires-license --demo`; `pano_cli plan-export-menu --kind layers`; `pano_cli plan-export-target --kind collection --work-dir D:/Paint --doc-name demo --suffix _layers`; `pano_cli simulate-document-export`; `ctest --preset desktop-fast --build-config Debug` | File, collection, stem, depth, and cube export execution, export-directory creation, platform success reporting, Web file handoff, and legacy canvas export calls are owned by injected document/renderer/platform/storage services with export dialogs acting only as UI adapters |
|
||||
|
||||
## Closed Debt
|
||||
|
||||
|
||||
@@ -750,6 +750,14 @@ Save Version plans through app-core document file/version save executors and
|
||||
legacy `Canvas::project_save`, app document field updates, title updates, and
|
||||
keyboard/dialog cleanup while retained execution remains tracked under
|
||||
`DEBT-0042`.
|
||||
`App::dialog_export`, `App::dialog_export_layers`,
|
||||
`App::dialog_export_anim_frames`, `App::dialog_export_depth`, and
|
||||
`App::dialog_export_cube_faces` now route accepted file/stem/collection and
|
||||
named export work through app-core document export executors and
|
||||
`src/legacy_document_export_services.*`, preserving existing platform messages,
|
||||
directory creation, picker-selected stems, Web prepared-file handoff, and legacy
|
||||
`Canvas` export calls while retained execution remains tracked under
|
||||
`DEBT-0043`.
|
||||
|
||||
Implementation tasks:
|
||||
|
||||
@@ -1314,6 +1322,14 @@ Results:
|
||||
`pp_app_core_document_session_tests`, `pano_cli_plan_document_file_*`,
|
||||
`pano_cli_plan_document_version_*`, and `pano_cli_simulate_app_session_*`
|
||||
smoke tests after the live bridge split.
|
||||
- `PanoPainter`, `pp_app_core_document_export_tests`, and `pano_cli` built
|
||||
after equirectangular, layers, animation-frame, depth, and cube-face export
|
||||
execution moved behind document export services. A clean rebuild was required
|
||||
once because MSVC reported the known Debug PDB `LNK1103` corruption, after
|
||||
which the build passed.
|
||||
- Focused export CTest coverage passed for `pp_app_core_document_export_tests`,
|
||||
`pano_cli_plan_export_start/menu/target_*`, and
|
||||
`pano_cli_simulate_document_export_smoke` after the live bridge split.
|
||||
- `pp_app_core_document_recording_tests` passed, covering recording start/stop,
|
||||
clear, platform recorded-file cleanup, frame-count reset, export progress
|
||||
totals, and oversized progress-total clamping.
|
||||
|
||||
Reference in New Issue
Block a user