Extract layer operation planning

This commit is contained in:
2026-06-03 10:20:37 +02:00
parent 07ed23c2d1
commit fdc1defaba
7 changed files with 752 additions and 38 deletions

View File

@@ -250,7 +250,8 @@ Implementation tasks:
- Set C++23 through target features, not raw compiler flags.
- Add warning profiles:
- MSVC: `/W4 /permissive- /Zc:__cplusplus /Zc:preprocessor`.
- MSVC: `/W4 /permissive- /Zc:__cplusplus /Zc:preprocessor`, with
`C4100` muted temporarily under `DEBT-0019`.
- Optional MSVC analysis preset: `/analyze`.
- Clang/GCC: `-Wall -Wextra -Wpedantic -Wconversion -Wshadow
-Wnull-dereference`.
@@ -289,7 +290,8 @@ Gate:
- Desktop library targets compile with strict diagnostics.
- New warnings caused by refactor are fixed or locally justified.
- No global blanket warning suppression for project code.
- Any global warning suppression must have an open debt entry, validation
command, and removal condition.
## Phase 3: Test Harness And Agent-Ready Automation
@@ -484,6 +486,10 @@ legacy `Canvas` resize execution and `ActionManager` history clearing continue.
`pano_cli plan-layer-rename` exposes the app-core layer rename decision used by
the live layer rename dialog before legacy `Canvas` layer mutation and
`ActionManager` undo wiring continue.
`pano_cli plan-layer-operation` exposes app-core planning for layer add,
duplicate, select, reorder, remove, opacity, visibility, alpha-lock, blend-mode,
and highlight actions used by the live layer panel before legacy `Canvas` and
UI layer execution continue.
`pp_platform_api` now owns a headless `PlatformServices` interface for
startup storage path preparation, clipboard text, cursor visibility,
virtual-keyboard visibility, UI-thread lifecycle hooks, render-context
@@ -1091,11 +1097,19 @@ Results:
`pano_cli_plan_document_resize_rejects_invalid_selection` passed and expose
live document-resize planning as JSON automation.
- `pp_app_core_document_layer_tests` passed, covering changed layer rename,
unchanged no-op rename, empty-name rejection, and overlong-name rejection.
unchanged no-op rename, empty-name rejection, overlong-name rejection, layer
add/duplicate/select/reorder/remove planning, metadata planning, bad-index
rejection, bad-opacity rejection, bad-blend-mode rejection, and transient
highlight behavior.
- `pano_cli_plan_layer_rename_smoke`,
`pano_cli_plan_layer_rename_no_op_smoke`, and
`pano_cli_plan_layer_rename_rejects_empty_name` passed and expose live
layer-rename planning as JSON automation.
- `pano_cli_plan_layer_operation_add_smoke`,
`pano_cli_plan_layer_operation_reorder_no_op_smoke`,
`pano_cli_plan_layer_operation_highlight_smoke`, and
`pano_cli_plan_layer_operation_rejects_bad_opacity` passed and expose live
layer-panel operation planning as JSON automation.
- `pp_app_core_document_sharing_tests` passed, covering saved-path gating before
platform share execution.
- `pano_cli_plan_share_file_unsaved_smoke` and