• v0.4.0-patch-smoke-b 5ac18016ad

    v0.4.0 Pre-release

    calum released this 2026-07-02 23:40:11 +01:00 | 55 commits to main since this release

    Phase 4 patch layer smoke build B. Backend re-point (walker unchanged, output-axis resolves to amp_channel with speaker fallback). Sample Bistro extended with AMP-DIN 4-channel 1:1 + AMP-BAR parallel-speaker (SPK-BAR-1 + SPK-BAR-2 on one amp channel, centroid at (13.5,14)). Nudged SPK-BAR-2 to (17,14) so multi_speaker_spread warning actually fires (spread 3.5m > 3m threshold). Deduped amp-scoped warnings once per amp_channel per solve. Expected: 18 rows FULL-VENUE @ 22°C; 1 route_dead_end + 1 multi_speaker_spread. Full answer key in docs/SAMPLE_PROJECT.md verified line-for-line against verify_demo output.

    Downloads
  • v0.3.2-delay-smoke-c 20bd098705

    v0.3.2 Pre-release

    calum released this 2026-07-02 02:29:15 +01:00 | 67 commits to main since this release

    Phase 3 core smoke build C. Delay Matrix now renders as an actual matrix grid (sources across the top, speakers down the side, applied delay in each cell rounded to the rounding step; empty cell where a source doesn't reach that speaker; click a cell for the inspector with edit fields + audit). Sample-Bistro.lpatch.zip re-attached — same expected-answer tables in docs/SAMPLE_PROJECT.md apply, just displayed correctly now. Engine untouched from smoke-b.

    Downloads
  • v0.3.1-delay-smoke-b 3a5c9cc9c9

    v0.3.1 Pre-release

    calum released this 2026-07-02 01:02:29 +01:00 | 69 commits to main since this release

    Phase 3 core smoke build B. Adds the Sample Bistro validation fixture (docs/SAMPLE_PROJECT.md + Sample-Bistro.lpatch.zip attached to this release). Includes a walker fix: source-context route_dead_end warnings are now scoped to the walk, so a source that never touches a broken route on the far side of the graph no longer surfaces it as noise. Open the .lpatch in the app, run the Delay Matrix screen against the Full Venue and Local BGM route sets, verify against SAMPLE_PROJECT.md's expected pairs/warnings/delays tables.

    Downloads
  • v0.3.0-delay-smoke-a a17c990aca

    v0.3.0 Pre-release

    calum released this 2026-07-02 00:08:03 +01:00 | 72 commits to main since this release

    Phase 3 core smoke build (Delay MVP). Multi-source / route-set-aware venue matrix, bus-walk over the routes graph, modes 1+2, applied_delay_ms coalesce, CSV export in DiGiCo transcription order. Open the Delay Matrix screen, pick a source or route set, hit Solve & save, watch the matrix populate. Occlusion / listen-points / reference-target = additive layer, not in this build.

    Downloads
  • v0.2.6-updater-smoke-d 0af9bdd981

    v0.2.6 Pre-release

    calum released this 2026-07-01 22:12:54 +01:00 | 79 commits to main since this release

    Stage 2 auto-updater smoke build D — the visual round-trip target. If a v0.2.5-smoke-c install self-upgrades to this through https://patch.loud-dxb.ae (behind strict mTLS), the app's client-cert path is proven end-to-end at runtime.

    Downloads
  • v0.2.5-updater-smoke-c 6562da4802

    v0.2.5 Pre-release

    calum released this 2026-07-01 19:59:00 +01:00 | 80 commits to main since this release

    Stage 2 auto-updater smoke build C. This one proves self-update THROUGH the mTLS gate — the app presents its bundled client cert to patch.loud-dxb.ae. If a v0.2.4-smoke-b install self-upgraded to this, the mTLS round-trip works.

    Downloads
  • v0.2.4-updater-smoke-b e31f35dd90

    v0.2.4 Pre-release

    calum released this 2026-07-01 15:43:09 +01:00 | 84 commits to main since this release

    Stage 1 auto-updater smoke build B. If you're seeing this from a 0.2.3-smoke-a install: the self-update round-trip worked.

    Downloads
  • v0.2.3-updater-smoke-a f857b3bd00

    v0.2.3 Pre-release

    calum released this 2026-07-01 15:25:55 +01:00 | 85 commits to main since this release

    Stage 1 auto-updater smoke build A. Signed installer via TAURI_SIGNING_PRIVATE_KEY on loud-win. Self-update target: v0.2.4-updater-smoke-b.

    Downloads
  • v0.2.2 5ebacc7a44

    v0.2.2 Stable

    calum released this 2026-07-01 03:16:47 +01:00 | 90 commits to main since this release

    v0.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:

    1. speaker.no_floorplan_placement — speaker exists but no floorplan placement links to it.
    2. source_location.no_floorplan_placement — same shape for sources.
    3. floorplan.not_scaled — floorplan exists but never had Calibrate scale run.

    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_code correctly.
    • 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

    1. Open a project → create a floorplan → import a PDF you know → calibrate it (v0.6 mm-vs-m dropdown, defaults to mm).
    2. Create a couple of speakers + a source_location (CSV import or the entity screens).
    3. Return to the floorplan → the Unplaced sidebar shows them.
    4. Click Place on one → it lands at (0, 0), drag it to a location on the plan.
    5. Click Place Speaker in the toolbar → click a few spots to drop unlinked markers → they show as amber dashed (unassigned).
    6. Click an amber marker → open the inspector → pick a speaker from the dropdown → outline turns solid white + code appears below the marker.
    7. Toggle a layer off/on → markers of that type disappear/reappear.
    8. 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.
    9. 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 is LOUD-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
  • v0.2.1 a7c2a1370f

    v0.2.1 Stable

    calum released this 2026-07-01 01:46:01 +01:00 | 93 commits to main since this release

    v0.2.1 — calibration unit fix (v0.6 IPC amendment). Fixes the silent proportional error that made v0.2.0 calibration untrustworthy for CAD-input workflows.

    What was wrong in v0.2.0. calibrate_floorplan accepted a raw number and assumed metres. A CAD user (who works exclusively in millimetres) typing 4771 meaning millimetres got a scale_pixels_per_metre that was ~1000× wrong — 0.23 px/m instead of ~190 px/m. Wrong in a plausible-looking way that would silently propagate into every Phase 3 delay downstream.

    What v0.2.1 changes.

    1. Unit is now data on the wire. Calibration input carries known_distance + known_distance_unit: 'mm' | 'm'. Backend converts to metres at the boundary. Internal storage stays metres (unchanged). Nothing can silently assume any more.
    2. Working-units preferences per project. Two distinct concerns: geometry_input_unit (default mm) drives the unit dropdown on the calibration form; acoustic_display_units (default m) formats delay-context distances when they land in Phase 3. Fresh projects ship with the right defaults for the primary CAD workflow.
    3. Scale readback is now human-readable. The HUD and the calibration preview show 1 m = N px (primary), 1 px = N cm (reciprocal), and the raw N px/m — a wrong-unit entry falls out immediately (1 m = 0.19 px screams before you save).
    4. Measure tool (top toolbar between "Import image" and "Calibrate"). Click two points, read the distance in your working unit. Transient inspection ruler — nothing stored. This is what lets you verify calibration: calibrate on one known dimension, then measure a second known dimension to check the number lines up.
    5. Fit / 100% buttons now floated above the drawing with their own solid backdrop — no longer disappear on busy plans.

    Re-testing the plan you already had. No migration needed. The OroVerde-DD floorplan you were on: just hit Re-calibrate scale…, click your two points, this time the mm-vs-m dropdown will default to mm (CAD default), enter your CAD dimension in millimetres, save. Then use Measure… against a second known dimension to verify.

    Windows Settings → About should read 0.2.1; the installer filename is LOUD-Patch-Authority-0.2.1-windows-x86_64-setup.exe. Anything else is a stale build — flag it. SmartScreen will warn on first run (unsigned): More info → Run anyway.

    Build: a7c2a13. Backend test coverage: 60 tests, all green — 2 new tests pin the mm↔m equivalence at floating-point exact tolerance.

    Downloads