Codex stop-gate BLOCK #1: `boolean_ops::apply_boolean_op` looked up source paths recursively (via `active_page().find()`) but only removed them from the top-level `page.children` list. When the sources lived inside a Group or Frame, the originals stayed in their parent's children while the result was appended at the canvas root — duplication + orphans. Fix: replace the top-level `retain` call with a recursive `remove_nodes_recursively` walker that drops any node whose id is in the source set from every children Vec depth-first. New regression test `boolean_op_removes_nested_paths_not_just_top_level` wraps two paths in a Group, runs Union, and asserts: - the Group still exists but is empty - one result Path lives at top level (total page.children = 2) Codex stop-gate BLOCK #2: `property_panel_sections::export_section_rect` was added in commit `5bde95b9` (PropertyPanel preview pills) but never wired into `hit_test_action`, leaving the visible Export section unable to open the new ExportDialog. The helper is dead code in the meantime. Drop it; replace with a comment marking the follow-up. Existing UX (File menu → Export image / Cmd+Shift+P) still opens the dialog. Tracking via task #52. Codex stop-gate finding #3 (`main.rs` 828 / `input.rs` 886 over the 800-line cap) is real but stylistic — already tracked as task #55 (sibling-module split). No functional impact; deferred so this commit stays scoped to the data-corruption + dead-code fixes. Tests: 184 shell-core + 19 shell-native (+1 nested boolean ops regression). Wasm32 build clean. |
||
|---|---|---|
| .. | ||
| openpencil-app | ||
| openpencil-desktop | ||
| openpencil-shell-core | ||
| openpencil-shell-native | ||
| openpencil-shell-web | ||
| pen-codegen | ||
| pen-core | ||
| pen-engine | ||
| pen-figma | ||
| pen-types | ||
| wasm-libc-shim | ||
| CLAUDE.md | ||