6.9 KiB
6.9 KiB
PanoPainter Capability Map
Status: live Last updated: 2026-06-03
This map is the preservation checklist for the modernization. When a component is extracted, update the relevant rows with the owning component, test label, and validation command.
Project And Documents
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| PPI open/save | Canvas, serializer, dialogs |
pp_document, pp_assets, pano_cli |
Round-trip tiny project, old-version fixture, corrupt/truncated fixture |
| Open-document routing | App::open_document |
pp_app_core, pano_cli, pp_panopainter_ui, pp_document, pp_assets |
Project/ABR/PPBR route tests, malformed path tests, open-action plan tests, CLI route/action smoke, app open smoke |
| Document session decisions | App::open_document, App::request_close, save hotkeys, file menu, dialogs |
pp_app_core, pano_cli, pp_panopainter_ui |
Clean/dirty/prompt-open/save/save-as/save-version/save-before-workflow/name/new-document resolution/overwrite/version-target decision tests, CLI session, new-document, document-file, and document-version smoke, app close/open/save/new/browse smoke |
| Version metadata | scripts/pre-build.py, version.* |
build system, pp_foundation |
Generated header smoke test, missing-tag behavior |
| Thumbnail generation/read | Canvas, Image |
pp_assets, pp_paint_renderer |
Golden thumbnail, corrupt input, destination-feedback copy/fetch gate |
| Save-as, overwrite prompts | App/dialogs | pp_app_core, pp_panopainter_ui, pp_platform_* |
Decision tests, UI automation, and platform smoke |
Image And Export
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| PNG/JPEG import | Image, Canvas import paths |
pp_assets, pp_document |
Fixture import, malformed file |
| PNG/JPEG export | Canvas, Image, export dialogs |
pp_assets, pp_paint_renderer, pp_app_core |
Golden output tolerance, export start/target planning tests |
| Equirectangular import/export | Canvas, shaders, RTT, export dialogs |
pp_paint_renderer, pp_app_core |
Tiny cube/equirect golden, app-core file target tests |
| Cube face export | Canvas |
pp_paint_renderer |
Six-face golden set |
| Depth export | Canvas, grid tools |
pp_paint_renderer |
Float/readback validation |
Brush And Painting
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| Brush settings serialization and stroke-panel controls | Brush, Serializer, NodePanelStroke |
pp_paint, pp_assets, pp_app_core, pp_panopainter_ui |
Round-trip and boundary values; stroke slider/toggle/blend/reset planning and invalid setting tests |
| ABR import | ABR, Brush |
pp_assets, pp_paint |
Sample ABR and malformed ABR |
| PPBR import/export | brush panel/dialog | pp_assets, pp_panopainter_ui |
Round-trip fixture |
| Stroke sampling | Stroke, Canvas |
pp_paint |
Property tests for spacing, pressure, jitter |
| Dual brush/pattern behavior | Brush, shaders |
pp_paint, pp_paint_renderer |
Stroke-alpha CPU reference, dual/pattern feedback planning, GPU golden |
| Blend modes | GLSL include files, layer rendering | pp_paint, pp_paint_renderer |
Final RGBA and stroke-alpha CPU reference vectors, fixed-function/framebuffer-fetch/ping-pong stroke composite planning, live Canvas/NodeCanvas blend-gate coverage, live canvas stroke/thumbnail destination-copy coverage, and GPU parity |
| Erase/flood fill/masks | Canvas, modes, shaders |
pp_document, pp_paint_renderer |
Edge masks, alpha lock, dirty rects |
Layers And Animation
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| Layer add/remove/move/merge | Canvas, Layer, actions |
pp_document |
Undo/redo invariant tests |
| Blend/opacity/visibility/alpha lock | Layer, UI panels, shaders |
pp_document, pp_paint_renderer |
CPU model and render golden |
| Selection mask | Canvas mask layer |
pp_document, pp_paint_renderer |
Mask apply/clear edge cases |
| Animation frames | LayerFrame, animation panel |
pp_document, pp_panopainter_ui |
Duration, duplicate, remove, seek |
| MP4/timelapse export | MP4Encoder, recording thread, export dialogs |
pp_assets, pp_paint_renderer, pp_app_core, app |
Recording lifecycle/progress decision tests, smoke export, cancellation, suggested-name tests |
UI And Workflow
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| XML layout parsing | LayoutManager, Node |
pp_ui_core |
Layout fixtures and malformed XML |
| Yoga layout | Node |
pp_ui_core |
Deterministic geometry fixtures |
| Generic controls | NodeButton, sliders, text, images |
pp_ui_core |
Event dispatch and layout tests |
| PanoPainter panels/dialogs | NodePanel*, NodeDialog* |
pp_panopainter_ui |
UI automation scripts |
| Canvas viewport UI | NodeCanvas |
pp_panopainter_ui, pp_paint_renderer |
Input-to-command automation |
| Settings UI | Settings, NodeSettings |
pp_assets, pp_panopainter_ui |
Round-trip settings |
Input, Platform, And Devices
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| Mouse/keyboard/touch/gestures/cursor | App, platform entrypoints |
pp_app_core, pp_platform_api, pp_platform_*, app |
Cursor visibility decision tests, platform service dispatch tests, synthetic event playback |
| Wacom pressure | WacomTablet |
pp_platform_windows |
Adapter smoke with fallback |
| Clipboard/file picker/share/display | App platform methods |
pp_app_core, pp_platform_api, pp_platform_* |
Clipboard read/write, share saved-path, picked-path, and display-file decision tests, platform service display/share/picker dispatch tests, platform smoke or mocked service |
| Virtual keyboard | App, platform entrypoints |
pp_app_core, pp_platform_api, pp_platform_* |
Keyboard visibility decision tests, platform service dispatch tests, platform smoke |
| OpenVR desktop | HMD, Vive, app_vr |
pp_platform_vr, app |
Compile gate and mocked pose tests |
| Quest/OVR | Android Quest files | pp_platform_android_quest |
Compile/package gate |
| Focus/Wave | Android Focus files | pp_platform_android_wave |
Compile/package gate |
Cloud, Logging, And Automation
| Capability | Current Area | Target Owner | Required Tests |
|---|---|---|---|
| Upload/download/browse | app_cloud, CURL helpers |
pp_app_core, app service, pp_platform_* |
Upload prompt/new-doc/no-canvas decision tests, bulk-upload progress decision tests, browse/selection decision tests, mocked HTTP and timeout tests |
| License/check flows | app/cloud code | app service | Mocked response tests |
| Logging/crash reporting | log, BugTrap/AppCenter |
pp_foundation, platform wrappers |
Log formatting and platform compile |
| Headless automation | none yet | tools/pano_cli |
JSON command fixtures |
| Tracing | none yet | pp_foundation |
Span nesting/timing tests |