-
v0.4.0 Stable
released this
2026-07-21 04:24:46 +01:00 | 83 commits to main since this release0.4.0 — Deliverables Build 1 (ADR-N065). Switch Diagram deliverable: dark header + odd/even faceplate (T marker for trunks, LAG label for members, VLAN colour top-strip, Disabled+4094 for disabled) + Port Detail table (full composed device labels, Cable ID, MAC, IP) + VLAN summary (4093/4094 blank subnet/gateway — never fabricated) + Uplinks/Trunks panel + footer (legend + PoE key + drawn-by + doc rev + disclaimer). Render engine = headless Chromium subprocess; preview == final by construction (same engine as v1 HOLD render). Branding singleton (Title / Design Company / Logo) on library.sqlite — reusable across projects, editable in-app, feeds header + drawn-by. In-app PDF viewer modal: fullscreen + Esc + Download. Placeholder disabled Generate Share Link button (Build 3). READ-ONLY toward the project model — model_read_signature captures before/after each render + FE refuses to display if it changed. Two template bugs found via realistic-data harness + fixed: LAG-member cell now shows peer device (not switch's own name); standalone trunk now shows T + native VLAN (not Spare/—). Real-store tests per ADR-N058 (5 branding round-trip, 3 signature guard, 1 render pipeline). Cargo 193/193, backend 50/50, tsc + Vite clean.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.4.0-windows-x86_64-setup.exe
0 downloads ·
2026-07-21 04:24:52 +01:00 · 5.2 MiB
-
Source code (ZIP)
-
v0.3.58 Stable
released this
2026-07-21 00:49:22 +01:00 | 88 commits to main since this release0.3.58 — Five refinements: (A) LAG member-port selector on Network/VLANs — scrollable list, generously-spaced rows, read-only 'Existing LAGs on this switch' reference block above, ports already in another LAG on the switch shown as disabled '— in LAG N' rows; used by both create + edit. (B) Create-trunk peer picker + config + confirm dialogs now show a LAG endpoint's member ports as '(Ports 49, 50)' beneath the label at every decision point. (C) Trunk-config VLAN multiselect gains an 'All' quick-select that ticks every real VLAN but excludes 4093 (Trunk Blackhole — PVID-only per ADR-N044); 4094 already excluded; paired 'None' for symmetry. (D) Disabled port cell (access/4094 via the Disable-ports flow) now renders visibly distinct — striped-diagonal muted body + 'DISABLED' label + 4094 identity, so it doesn't read as an empty port. (E) Trunk port cell gets a bold circled accent-blue 'T' top-right; fires for port_mode='trunk' AND for LAG-member ports whose parent LAG is trunked (ADR-N064 §3 inheritance); coexists with LAG label / PoE / VLAN in the bottom row. Walker 27/27 with pixel checks (T marker rgb 110,168,255; disabled body vs empty body pixel distance 82). No Rust / schema / write-path change. TS + Vite clean.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.58-windows-x86_64-setup.exe
0 downloads ·
2026-07-21 00:49:25 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.57 Stable
released this
2026-07-20 22:56:52 +01:00 | 90 commits to main since this release0.3.57 — LAG create form gains a DESIGNATION field. Pre-fills with next-available per-switch (matches pre-0.3.57 auto-assign default); editable so the operator can type a specific number (e.g. matching numbers on two switches for a bonded uplink). Same LagCollisionDialog from 0.3.56 fires when a typed number collides with an existing LAG on that switch (3 actions: Cancel / Add to LAG {n} / Create LAG (next available)). Rust upsert_lag INSERT now accepts a supplied lag_number when provided; falls back to MAX+1 otherwise. UNIQUE(device_id, lag_number) remains the backstop. Cross-device same-number is not a collision (SW-A LAG 1 + SW-B LAG 1 both valid). Rust real-store 4/4 + Cargo 184/184 + Walker 15/15 (C1-C8 create-form flow incl. collision Add-to-existing + Create-as-next + typed number persists in real store + cross-device pairing; R1 Edit-row designation regression). No schema change; no behaviour change to any existing flow. Access primitives (ADR-N060) unchanged; Edit-row designation (0.3.56), peer-symmetry guard, trunk-inheritance all unchanged. TS + Vite clean.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.57-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 22:56:55 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.56 Stable
released this
2026-07-20 19:57:15 +01:00 | 92 commits to main since this release0.3.56 — LAG editing (add/remove members, edit name, edit designation) + collision dialog + peer-symmetry guard + trunk-inheritance. Edit row in the Network / VLANs LAGs table calls api.upsertLag with the EXISTING lag.id → hits the ADR-N064 UPDATE path (join/leave propagation was already correct in Rust; the FE just wasn't calling it). Edit payload PRESERVES the LAG's trunk state (portMode/nativeVlan/vlanMemberships) so a trunked LAG's config survives edits. lag_number becomes editable (Rust upsert_lag UPDATE clause now overwrites from payload); UNIQUE(device_id, lag_number) enforces per-switch uniqueness. FE collision dialog (LagCollisionDialog) with 3 actions: Cancel / Add-to-existing (folds source members into target LAG, drops source) / Create LAG (next available) (MAX+1). buildPeerDeviceGroups gains an originKind param: LAG origin → offer LAG peers + non-switch trunk device ports; PORT origin → offer PORT peers only. LAG↔port never offered. Addendum: a member joining an already-trunked LAG inherits the LAG's config via ADR-N064 §3 (LAG is truth); the edit preserves the LAG's trunk state so the operator does not re-author. Rust real-store 5/5 (phase4_n064b_lag_editing.rs) + Cargo 180/180 + Walker 21/21 (E1-E6 editing + collision, A1 addendum trunked-LAG-add-members, S1/S2 peer-symmetry). No schema change; no Rust command surface change. TS + Vite clean.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.56-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 19:57:18 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.55 Stable
released this
2026-07-20 18:52:17 +01:00 | 94 commits to main since this release0.3.55 — Create-trunk peer picker becomes two-step (device → endpoint). The flat all-ports-all-devices list from 0.3.53/0.3.54 didn't scale (12×52 = hundreds of rows). Step 1 lists DEVICES with at least one trunk-capable endpoint, EXCLUDING the origin's own device (peer must be a different device); each row shows composed label + endpoint count. Step 2 lists the picked device's endpoints: LAGs as single 'LAG {n}' entries with members FOLDED IN + non-LAG-member trunk-capable ports. Back returns to Step 1. Rest of the flow (config dialog + secondary confirm + LAG-aware write via applyTrunkOnLagBothEnds) UNCHANGED. Non-clip row CSS from 0.3.54 preserved. Walker 19/19 on a real-project-shape scale (3 switches incl. one 52-port with 2 LAGs of 4 members each): Step 1 lists devices (not ports), Step 2 on the 52-port switch shows exactly 2 LAGs + 44 non-member ports = 46 rows (no member port duplicated), full LAG-to-LAG flow writes both LAG interfaces to trunk with matching memberships (real store). TS + Vite clean. No Rust/schema change.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.55-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 18:52:20 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.54 Stable
released this
2026-07-20 18:30:19 +01:00 | 96 commits to main since this releaseFix (0.3.54): Create-trunk peer picker no longer clips endpoint labels to 'N…'. CSS-only. Root cause: 0.3.53's peer rows reused the trunk-config VLAN row's 3-column grid (20px/14px/1fr) but supplied only a single child, which landed in the 20px checkbox track and got clipped by text-overflow:ellipsis to one letter of 'Netgear…'. Fix adds a dedicated .patch-trunk-peer-row (single 1fr track) and .patch-trunk-peer-label; ellipsis retained for the genuinely-too-long-label case at the real ~500px dialog width. VLAN checkbox row + all other picker sites UNCHANGED. Label DATA (composeDeviceLabel) was always correct — no data change. Walker fix: 0.3.53's assertion via element.textContent read clipped text as present (same class as ADR-N061 §7 pixel-vs-CSS-property lesson); new walker seeds a real-project-shape composed label ('Netgear M4300-52G-PoE+ #001') and asserts scrollWidth ≤ clientWidth + 2px on every peer row + the VLAN checkbox row (regression). Walker 9/9. TS + Vite clean.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.54-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 18:30:22 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.53 Stable
released this
2026-07-20 17:28:22 +01:00 | 98 commits to main since this releaseADR-N063 Build 2b (0.3.53) — Stage 1 COMPLETE. Top-bar authoring: Create trunk + Disable ports, on the ADR-N064 LAG-aware foundation. Cell bottom-row alignment fix (PoE compact-left, VLAN right-anchored, LAG label sits next to PoE — all three slots visible on a LAG-member PoE cell; pixel-verified). Create trunk: select-a-port mode → peer picker (switch ports + LAGs + trunk device ports) → LAG resolution (member port resolves to parent LAG) → CreateTrunkConfigDialog (empty starting memberships, PVID 4093 default; 4094 excluded, 4093 available) → CreateTrunkConfirmDialog (ADR-N063 secondary-confirm pattern, endpoint-agnostic) → applyTrunkOnLagBothEnds writes both endpoints via correct per-end primitive. Disable ports: multi-select mode with LAG-member guard (blocked with note, no silent un-LAG) → secondary confirm → per-port apply access/4094 with own memberships cleared; patched ports unpatched first via ADR-N062 primitive (device untouched). Rust real-store round-trip 5/5 (phase4_n063b_create_trunk_and_disable.rs — port↔port, one-endpoint-LAG, both-endpoints-LAG, plain disable, patched disable unpatches first) + Cargo suite 175/175 green + Walker 29/29 (pixel-verified cell alignment + LAG-aware writes to real store). Access primitives (ADR-N060) untouched. §4 boundary rule 'never SILENTLY write a device' extends via the secondary-confirm mechanism.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.53-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 17:28:25 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.52 Stable
released this
2026-07-20 16:29:17 +01:00 | 100 commits to main since this releaseADR-N064 (0.3.52) LAG foundation Build 1 — LAG is truth, members inherit. Migration 016 adds ports.lag_id back-pointer, lags first-class port_mode/native_vlan, per-switch sequential lag_number, drops dead trunk_config. upsert_lag propagates: join auto-conforms port (port_mode='lag_member', clears own VLAN config), leave reverts. New update_lag_trunk = LAG-as-trunkable-interface write path; members inherit, never individually carry trunk config. Cell renders 'LAG {n}' in bottom-middle slot for members; PoE glyph flipped from black (invisible on dark body) to WHITE. LAG-aware trunk primitive applyTrunkOnLagBothEnds kept SEPARATE from applyTrunkBothEnds (ADR-N063 separate-primitive rule). Closes the 0.3.51 LAG-blind hole ahead of ADR-N063 Build 2b. Rust real-store round-trip 6/6 + Cargo suite 170/170 + Walker 16/16 (pixel-verified WHITE PoE). §4 boundary rule 'never SILENTLY write a device' extends to LAG writes via ADR-N063 secondary-confirm mechanism.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.52-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 16:29:19 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.51 Stable
released this
2026-07-20 04:01:31 +01:00 | 103 commits to main since this releaseADR-N063 (0.3.51) Build 2a — trunk-config dialog + both-ends write + positive-only conform + secondary confirm. First deliberate case where the switch view writes a DEVICE port (trunk = peer relationship, both ends must agree); gated by a mandatory SECONDARY CONFIRM DIALOG that enumerates every change on either end in plain language before writing. Retires the ADR-N060 TrunkPlaceholderNotice + the ADR-N062 disabled 'Trunk conform — next build' button. New primitive applyTrunkBothEnds() lives in patchConform.ts, kept SEPARATE from the ADR-N060 access primitive. Manual REMOVE (destructive by intent) allowed; positive-only conform (union, never removes) is the pre-fill for the CONFORM trigger. PVID always written to both ends (default 4093 Trunk Blackhole per ADR-N044); native VLAN folded INTO the allowed set on save. Reserved 4094 excluded from the multiselect. Cancel on either dialog writes nothing. §4 boundary re-interpreted, not removed — the invariant is 'never SILENTLY write a device' and the secondary confirm is the mechanism. Rust real-store round-trip 6/6 + Cargo full suite 164/164 + Walker 48/48 (dialog + confirm + pixel + real-store persistence).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.51-windows-x86_64-setup.exe
0 downloads ·
2026-07-20 04:01:33 +01:00 · 5.1 MiB
-
Source code (ZIP)
-
v0.3.50 Stable
released this
2026-07-19 23:16:20 +01:00 | 106 commits to main since this releaseADR-N062 (0.3.50): patched-mismatched panel state. Third branch in the Patch Port panel for patched ports where the switch and device disagree (the class of failures ADR-N061 revealed on pre-N060 patches). Divergence detail line quotes BOTH sides in plain language ("This switch port is set to VLAN X, or unset; The connected device carries VLAN Y", trunk memberships comma-joined with (trunk) suffix). Three full-weight actions: Conform switch (one click sets switch access_vlan := device VLAN, access device only; trunk device shows a disabled "Trunk conform — next build" button — Stage 1 Build 2 owed); Edit device (retires .btn-ghost styling that read as disabled — new .btn-secondary full-weight class); Unpatch (extended — also clears the switch port so an unpatched port is genuinely empty, no leftover VLAN). Switch view never writes to a device row (§4 preserved). No bulk/no migration — operator fixes each mismatched port individually per their explicit instruction. Real-store round-trip 4/4 + walker 21/21 with pixel checks.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Loud-Network-0.3.50-windows-x86_64-setup.exe
0 downloads ·
2026-07-19 23:16:22 +01:00 · 5.1 MiB
-
Source code (ZIP)