-
v0.2.2 Stable
released this
2026-07-01 03:16:47 +01:00 | 90 commits to main since this releasev0.2.2 — Phase 2 MVP complete. Step 4 (placement + link/unlink + primary + drag-to-move + layer toggles) + Step 5 (three deferred floorplan-dependent validation rules activated). Sits on the v0.6 contract (no bump — v0.5 already froze the placement surface, this is the deferred build).
What's new to eyeball
Toolbar → Place buttons. Three place-modes: Speaker, Source, Listener ref. Each disabled until the plan is imported + calibrated. Click the button, then click on the plan to drop a marker at that point (converted to metres via the calibrated scale). Click the same button again — or press Esc — to exit place-mode.
Marker visual conventions:
- Speaker (blue circle, "S"), Source (green, "▲"), Listener ref (yellow, "L").
- Linked + primary (delay engine will use this one): solid white outline.
- Linked + non-primary: thin dashed white outline.
- Unlinked ("unassigned" — placed but no DB entity attached): amber dashed outline, warning colour.
- Selected: cyan halo ring around the marker.
Click a marker → inspector drawer opens on the right of the canvas:
- Label, coordinate boxes (in your project's geometry unit — mm for CAD-first users, converted to metres before write).
- Link / Unlink dropdown (for speaker + source placements). Server does same-project FK validation.
- Primary placement checkbox — turning this on demotes any other primary placement of the same entity in a single server-side transaction, so the delay engine always sees exactly one primary per entity.
- Delete placement (leaves the linked entity intact).
Drag any marker to reposition. 3-pixel threshold so a normal click still selects. Coordinates round-trip in metres.
Unplaced sidebar (bottom of the left sidebar, once the plan is calibrated): lists speakers + source_locations that don't have a placement on the current floorplan. Click Place to drop-at-origin-and-link — then drag it into position, or edit coordinates in the inspector.
Layer toggles above the canvas: show/hide Speakers / Sources / Listener refs independently. Delay / Dante / Q-SYS status layers deliberately absent — those come with their data in Phase 3+.
Three new validation rules (Warning severity)
Now visible on the Validation screen, joining the existing 8:
speaker.no_floorplan_placement— speaker exists but no floorplan placement links to it.source_location.no_floorplan_placement— same shape for sources.floorplan.not_scaled— floorplan exists but never hadCalibrate scalerun.
The Jump to entity click-through from Phase 2 Step 1 works for #1 and #2 (Speakers/Sources screens). #3 currently just names the floorplan in the message — the jump-to-floorplan target would be a small follow-up.
Placement precision — the deliberate ceiling
12 mm placement error = ~0.035 ms delay error, a third of the delay rounding step. No snapping, no coarse-grid — the drag threshold is 3 display px, that's it. Precise placement isn't Phase 2's job; it will land in Phase 7 with vector CAD import + soft-snap-to-line-geometry (logged in
CONTINUATION.md).Test coverage
74 backend tests across 18 integration files, all green (up from 60). Notable pins:
- All five polymorphic JOIN branches resolve
linked_entity_codecorrectly. - Linking-second-placement-demotes-first-in-one-transaction (idx_floorplan_objects_primary never sees two primaries).
- Same-project FK guard rejects cross-project ids on link.
- Each activated validation rule fires before-condition-met and clears after.
Test plan
- Open a project → create a floorplan → import a PDF you know → calibrate it (v0.6 mm-vs-m dropdown, defaults to mm).
- Create a couple of speakers + a source_location (CSV import or the entity screens).
- Return to the floorplan → the Unplaced sidebar shows them.
- Click Place on one → it lands at (0, 0), drag it to a location on the plan.
- Click Place Speaker in the toolbar → click a few spots to drop unlinked markers → they show as amber dashed (unassigned).
- Click an amber marker → open the inspector → pick a speaker from the dropdown → outline turns solid white + code appears below the marker.
- Toggle a layer off/on → markers of that type disappear/reappear.
- Multi-place the same speaker (Place from toolbar → click; then Place from Unplaced sidebar for that same speaker) → both show, but only one has the solid "primary" outline; toggle primary in the inspector → the other one's outline goes to dashed non-primary.
- Open Validation screen → confirm the three new rules fire for un-placed entities and clear once you place them.
Version check: Settings screen reads
0.2.2; installer filename isLOUD-Patch-Authority-0.2.2-windows-x86_64-setup.exe. Anything else is a stale build. SmartScreen will warn (unsigned): More info → Run anyway.Build:
5ebacc7.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
LOUD-Patch-Authority-0.2.2-windows-x86_64-setup.exe
2 downloads ·
2026-07-01 03:16:49 +01:00 · 3.6 MiB