Add focused containment browsing, contextual paged search, clear outline depth and direct component-port creation and connection actions. Share exact boundary feasibility checks to avoid whole-project validation for each picker candidate. Preserve source/property drafts and interrupted-save recovery state, document source-project behavior, and record Windows/Linux native verification and independent review fixes.
7.6 KiB
Actor ports and model navigation
User acceptance task: find a System Actor, create its component port, and connect a Boundary Exchange without discovering a hidden action menu. Navigate real containment in a large model without scanning one flat catalog.
Implementation
- Add port is visible on the selected System/Actor in the focused browser, Properties and creation area. The dialog chooses Standard or Flow explicitly; function Input/Output actions remain separate. A newly created port stays selected in the browser and exposes Connect boundary exchange.
- Model explorer starts with semantic groups and opens one container's direct children. Breadcrumbs, separate allocated work, contextual search, 100-result pages and Locate provide navigation. Allocation is not presented as containment.
- The cached index sorts siblings and walks full semantic depth. Outline rows indent the disclosure and label together, with a guide and kind color. Collapsed groups have finite width inside the horizontal scrollable. Each row has a constant widget count even at deep nesting.
- Boundary candidate filtering uses the core's exact orientation-aware feasibility check, avoiding a full cloned/validated project per candidate. Both orientations, Legacy direction and Standard interface compatibility are preserved.
Native Windows evidence
Windows build 22FC98F9343A3EE9E175F88E6C682B559C5E66B43CB5303AC990EA75E7F6CFE3 passed 136 desktop tests. Root operated its real native window: System perspective → Model explorer → System Actor → Add port; created a Standard actor port and a Standard system port with identical names; used Connect boundary exchange and the owner-labelled target picker; applied the exchange, inspected boundary symbols/connection, Undo/Redo, Save All. The saved 21-file fixture is D:/CodexBuilds/Capella2-release1-01a06e2e/ui-explorer-ports/native-port-exchange.arcadia. It contains 43 objects, 26 links and zero checks. Both new ports and the exchange occur in sa/participants.arcadia. The runtime log is empty and the process closed normally.
Native search for boundary port showed both results with different owners and ancestor context. Opening a result focused the correct port. Locate revealed its owner. Collapse All exposed a real layout failure (group-only content had zero intrinsic width); root fixed finite group sizing and reset scrolling.
Independent native review of build 6F94FBC1B814570A3645BA5E6469B27AC04D9CA188FD65C97CF286A2039623A3 passed at 1440×900 and exactly 1100×700 client. It exercised grouped collapse, parent/child navigation, alias search, Locate, saved fixture reopen (43 objects, 26 links, zero checks), distinct contained ports/allocated work, Standard/Flow dialog choices and a valid Boundary Exchange preview. Root also inspected its minimum-size window. A retained outline scroll offset on layer changes was subsequently fixed and verified by root.
Root then opened the independent 263-function source fixture (251 roots, 12 nested levels) in build 1A0D1251DDBF9828D6F5161F57315CF378BF53B018E38E5086798F42DB470AA0. Paging reset the browser viewport; searching @review_deep_leaf retained all ancestors, opening it and Locate revealed the correct leaf. OA's empty perspective and return to SA reset the outline correctly. Root added paging controls above the results after finding the bottom-only controls inconvenient. Native build 8D3326355A84952E0D75F859E8834487BCF443D1A5CC602253C5178119DA5358 verified pages 1–100, 101–200, 201–251, disabled Next on the final page, and Previous. Runtime logs were empty and these processes closed normally.
Linux follow-up
The real Linux/WSLg application created a Standard port through the Actor's Add port action, selected it in the browser and exposed Connect boundary exchange. A first Save to a nonexistent test folder reported the exact filesystem error and retained the model; after the folder was created, Save All succeeded with 21 files and 42 objects, 25 links, zero checks. This WSL save to a Windows-mounted drive took tens of seconds; native Linux filesystem save timing is not established. Fixture: D:/CodexBuilds/Capella2-release1-01a06e2e/ui-explorer-linux/port-trial.arcadia.
Linux font metrics exposed wrapped outline labels inside fixed-height rows. The final code uses single-line text, clipping and full-name/alias tooltips. Root launched rebuilt Linux SHA256 D05D25E09294A46430BC7DEDA4445CA0895F475EAC1C6E262C9BEE7CDFD7F735, reopened the saved bundle through the actual Open dialog, switched to SA and browsed Actor → Boundary port. The owner and children remained distinct, long labels stayed on one line, the tooltip showed the full Actor name, and the saved port's connection action was visible. The log explorer-linux-outline-runtime.log is empty; the process closed normally.
Automated verification
Logs are under D:/CodexBuilds/Capella2-release1-01a06e2e. Windows explorer-workspace-final.log passed 382 tests (223 core, 137 desktop, 22 server); the follow-up explorer-desktop-accepted.log passed all 138 desktop tests including same-identity reparent/Undo/Redo. Full workspace strict Clippy passed in explorer-clippy-accepted.log; affected desktop strict Clippy passed again after layer, pagination and font fixes. Linux explorer-linux-workspace.log passed all 386 tests (226 core, 138 desktop, 22 server), and full workspace strict Clippy passed. Windows and Linux final builds succeeded. Final cargo fmt --all -- --check passed. The final pagination/font edits affect presentation only and were verified natively; no later whole-workspace test invocation is claimed.
Independent findings and fixes
- New port creation could leave browser actions targeted at a different owner than the displayed focus. Catalog focus/selection and Properties-tab integration were corrected and regression-tested.
- Opening a Boundary Exchange picker among 1,000 mixed component/function ports took 10.657 seconds. Exact core feasibility reduced it to 15.156 ms; 3,000 ports take 136.999 ms. Six focused tests include 968 endpoint/orientation comparisons against full validated commands. Evidence:
D:/CodexBuilds/Capella2-explorer-usability-review/REVIEW.md. - Valid same-identity reparenting could leave an old group breadcrumb and folded new ancestry. Root now refreshes the focused group and reveals ancestry whenever the accepted model changes; a Reparent/Undo/Redo regression is added.
- A 400-level search path built 325,207 widget states. Root replaced per-ancestor widget groups with one depth-sized spacer and one guide per row, retaining actual indentation. Independent repro/retest project:
D:/CodexBuilds/Capella2-explorer-independent. - The independent requirements/simplicity review found that collapse actions during search silently changed hidden expansion state. They are now disabled while search forces matching ancestry open. No unresolved blocking finding remains from the bounded explorer/port reviews.
Final Windows build SHA256 3210042E61E95748386A57AD67120506F01A9EDB0A74DB40E36F94896C4068EC passed root's native font-fix follow-up at exactly 1100×700 client (1102×732 captured frame). Root switched OA→SA, opened Model explorer, selected the Actor, inspected its owned port and separate allocated function, then opened and canceled Add port. Grouped rows, names/tooltips, breadcrumbs, direct actions and all dialog fields/buttons fit. The process closed normally and explorer-windows-outline-runtime.log is empty. The immediate explorer/port usability milestone is accepted. The full first-release goal remains incomplete; this document closes no unrelated milestone. Source recovery/error runtime acceptance and source-project REST support remain separate required work.