5.1 KiB
State and ordinary multiselect merged-source review
Reviewed the staged .local/peerunion source on codex/multiselect-union-956atf-20260923, combining e34ba27e26ede3ab55f276acc250d92b2e0c3204 and bed7f825fd00ec32299032a664a5f5d753aad86d. The read-only e34 baseline was .local/scunion, not root production. Scope: merged App admission/reconciliation, menu dispatch, State/ordinary canvas interactions with newer Scenario/Text/Properties behavior. No source mutation, compiler, GUI, expensive Git scan or archived helper execution.
No concrete blocking regression found in this bounded source review. Suitable to freeze for combined gates; not combined-runtime acceptance.
app.rs:1382–1470retains e34's complete early Text/source/allocation/Scenario admission block verbatim. New selection/state envelope checks at:1350–1380precede it and do not mutate state on refusal. Scenario revision/visit/epoch, separate camera lifetime, and Properties target/pending-input checks still run before reveal/allocation reconciliation. The new State singleton guard likewise refuses queued Select/Move/Remove before those shared side effects.app/multiselect.rs:88–99scopes ordinary selection throughroute_contextand State selection through a validatedstate_context; it does not introduce a Scenario adapter. Reconciliation uses exact occurrence targets and State placement ownership (:141–249), preserving row identity rather than substituting its owner node.app.rs:1529–1533reconciles after ordinary dispatch; the allocation early-return path also reconciles (:1483–1488). Existing early Text implementation is byte-identical to e34 and retains its nested update dispatch.model_menu.rs:99–121validates the captured occurrence against visibility and request identity. At:236–339, group entries precede the State popup; the singleton State popup is still appended/reached.app.rs:2613–2630retains pending-draft refusal, dispatches group selection directly throughupdate, and only uses legacyselectfor other menu actions. This avoids collapsing a group before processing its captured snapshot.behavior/state_canvas.rs:220–235,1540–1544preserves the meaningful distinction between canceling edits and canceling all gestures: dirty input retires model editing without clearing an ongoing read-only pan. Group currentness checks include selection snapshot, editability, tool and viewport (:790–811); retirement consumes the event before it can become a fresh keyboard edit (:1528–1606). The new selection route inbehavior/state_view.rs:43–46still reaches App's early envelope, while other events retain State dispatch.- Ordinary and State selection strips reserve 56 pixels (
views.rs:695,behavior/state_view.rs:248); the State missing-element picker also reserves its 34-pixel slot (:147–151). This preserves canvas size/focus-tree continuity during group selection and Hide/Undo. Both new native example Diagram literals includelayout: None. - Direct byte comparison confirms
source_defaults.rs,source_project.rs, both source-project implementation modules,app/scenario_spacing.rs, andapp/text_workspace.rsare unchanged from e34. No writer/default migration was silently replaced by the selection merge. The newer Scenario picker guard and Properties action row remain in mergedviews.rs.
Targeted combined acceptance checks
Reuse the delivered ordinary/State core, App and mounted tests, but run them on the frozen merged input set. In addition, retain the e34 Scenario/Text/Properties regressions so source-only preservation is exercised together with new reconciliation. The discriminating seams are: a captured State/ordinary group action after Text Apply or navigation; a same-visit stale Scenario action while a new reveal exists; a State mixed row/placement selection with a pending inspector draft; and group Hide/Undo while the missing-element picker changes contents. Require model/source/history, selection, camera and pending ownership to remain correct together. These are coverage requirements, not newly proven defects.
Native held-drag cancellation and dirty-State read-only pointer pan remain unobserved unless actually exercised. Existing mounted/core evidence must not be relabeled as native closure. The prior ordinary preview-cache ordering concern remains a targeted redraw check, not an established stale-commit bug; this merge review supplies no new reachable failing trace.
Reviewed byte pins
File below crates/oa-desktop/src/ |
SHA256 |
|---|---|
app.rs |
21fbca718bea0bf77414b18e0552768235c6f5b3af6f71a80b77a89521a59445 |
app/multiselect.rs |
1b1c29c2153aa976272e38136433731b6c3b53f0610ab53f03341ec664f8b361 |
model_menu.rs |
99a6792cb4187ec4fa9031005fb9bc2b03b41c70df00dffa9047a1dfd41304d2 |
behavior/state_canvas.rs |
9ccf0682bf1b97db408662a750d9c29b627eb7dc51cb61056e11ceeac62baf88 |
behavior/state_view.rs |
234ff0f4969c1e6067100795d1e75f5f6a7e8c22e374392becb83b23912f4f2d |
diagram.rs |
99d9ccd2ed0daf4716a36bfc1a22ce3caf6d5165bd30a3c1d8b21577b262783d |
views.rs |
c6a8e67e5a5cde7a2f31e4c5488980555d5a38d854bb60e1c9477688d719237c |