Thin app runtime and generic node shells

This commit is contained in:
2026-06-17 00:24:00 +02:00
parent 86e57d47ad
commit 9b1e593477
9 changed files with 377 additions and 264 deletions

View File

@@ -82,13 +82,13 @@ Current hotspot files:
- `src/canvas.cpp`: 17 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 1 line
- `src/node.cpp`: 231 lines
- `src/node.cpp`: 12 lines
- `src/main.cpp`: 87 lines
- `src/node_panel_brush.cpp`: 2 lines
- `src/node_stroke_preview.cpp`: 160 lines
- `src/node_canvas.cpp`: 85 lines
- `src/app.cpp`: 125 lines
- `src/app_dialogs.cpp`: 127 lines
- `src/app.cpp`: 94 lines
- `src/app_dialogs.cpp`: 95 lines
Latest slice:
@@ -141,6 +141,18 @@ Latest slice:
- The entire `CanvasModeGrid` implementation plus `ActionModeGrid` undo/redo
glue now live in `src/legacy_canvas_mode_helpers.cpp` instead of
`src/canvas_modes.cpp`, leaving `src/canvas_modes.cpp` as a minimal shell.
- `App::request_close()`, the RenderDoc frame wrappers, and the render/UI
thread entrypoint wrappers now route through
`src/legacy_app_runtime_shell_services.*` instead of staying inline in
`src/app.cpp`, leaving `app.cpp` as a thinner retained app shell.
- `App::show_progress()`, `App::message_box()`, and `App::input_box()` now
route through `src/legacy_app_dialog_services.*` instead of building dialog
plans and factories inline in `src/app_dialogs.cpp`.
- The remaining generic `Node` event/capture/resize shell plus the
width/height/padding/margin/flex/visibility/geometry wrappers now live in
`src/legacy_ui_node_execution.cpp` and `src/legacy_ui_node_style.*` instead
of staying inline in `src/node.cpp`, leaving `node.cpp` as a near-trivial
attribute/load shell.
Current architecture mismatches that must be treated as real blockers:

View File

@@ -590,6 +590,11 @@ Current slice:
keeping that shell pocket inline in `src/app.cpp`, which trims the live app
entry file a little further while preserving the retained open-action
behavior.
- `App::show_progress(...)`, `App::message_box(...)`, and
`App::input_box(...)` now also route through
`src/legacy_app_dialog_services.*` instead of building dialog plans and
factories inline in `src/app_dialogs.cpp`, which trims another coherent
dialog-construction pocket from the remaining app dialog shell.
Write scope:
- `src/app_dialogs.cpp`
@@ -651,6 +656,11 @@ Current slice:
live in `src/legacy_app_runtime_shell_services.cpp` instead of staying
inline in `src/app.cpp`, which reduces the remaining app file to a thinner
retained shell around document routing and runtime thread entrypoints.
- `App::request_close()`, `App::renderdoc_frame_start()`,
`App::renderdoc_frame_end()`, and the render/UI thread entrypoint wrappers
now also route through `src/legacy_app_runtime_shell_services.*` instead of
staying inline in `src/app.cpp`, which reduces the live app file to a much
thinner retained composition shell.
Write scope:
- `src/app.cpp`
@@ -754,6 +764,10 @@ Current slice:
- canvas async import/export/save/open background work now also runs through an
`AppRuntime`-owned worker queue instead of a retained static worker in
`src/canvas.cpp`
- `App::request_close()` plus the render/UI thread entrypoint wrappers now
also route through `src/legacy_app_runtime_shell_services.*`, which further
reduces direct runtime orchestration living on `src/app.cpp` even though the
owned runtime contract is still centered on `AppRuntime`
- retained `App` composition, task call sites, and platform/runtime entrypoint
coupling are still not fully reduced behind the runtime contract
@@ -916,6 +930,11 @@ Current slice:
`load_legacy_ui_node(...)` in `src/legacy_ui_node_loader.*`, which moves the
init/attribute-parse/create/child-load/loaded shell out of `src/node.cpp`
and leaves the remaining live node file thinner.
- The remaining default `Node` event/capture/resize shell now also lives in
`src/legacy_ui_node_execution.cpp`, while the remaining
width/height/padding/margin/flex/visibility/geometry wrappers now also live
in `src/legacy_ui_node_style.*`, which reduces `src/node.cpp` to the final
attribute/load entrypoints without changing the public surface.
Write scope:
- `src/node.cpp`