Maintainer Map
This page is the short maintainer-facing map for the workspace: which crate owns what, where major module boundaries live, and which hotspots need careful review.
Workspace Crate Map
univis_ui: facade crate for the recommended application-facing import story and the full stack pluginunivis_ui_style: shared theme, font, and icon resourcesunivis_ui_engine: root model, layout solver, settlement schedule, and render syncunivis_ui_interaction: picking, interaction state, and pointer-driven validationunivis_ui_widgets: higher-level controls built on top of engine and interaction crates
Engine Module Map
layout::layout_system: root resolution, root stacking capsules, screen transforms, and per-root settlement statelayout::univis_node: authored node, layout, and local-positioning componentslayout::geometry: logical UI units, sides, constraints, and axis helperslayout::core: hierarchy tracking, cache invalidation, measurement, solving, and solver helperslayout::render: mesh/material synchronization after layout settleslayout::profiling: optional runtime diagnostics and overlay helperslayout::registrationandlayout::settlement_loop: pipeline wiring and boundedPostUpdateexecution
Widget Module Map
- single-file widgets stay flat when their runtime is small
- stateful widgets split by responsibility:
modelruntimeinteractionvisualsevents
text_labelis the main exception because it owns bothmeasure/andrender/subtrees
Hotspot Ownership
- engine layout hotspots:
crates/univis_ui_engine/src/layout/** - interaction hotspots:
crates/univis_ui_interaction/src/interaction/** - widget hotspots:
crates/univis_ui_widgets/src/widget/** - facade/docs/import story: root
src/,README*, anddocs/src/**
Review Priority Areas
- root resolution and root stacking changes can affect layout, rendering, and picking at once
- cache and settlement loop changes can create broad regressions even when local tests pass
- text-label measurement/render changes need both layout and rendering validation
- widget runtime refactors should preserve the
Build -> Logic -> Visual -> Eventsschedule story