• v0.9.24 031d401eea

    v0.9.24 Stable

    calum released this 2026-08-15 01:55:15 +01:00 | 79 commits to main since this release

    WiFi port type + WiFi Devices deliverable — addressable-not-patchable (ADR-N095)

    Downloads
  • v0.9.23 300b9c6642

    v0.9.23 Stable

    calum released this 2026-08-15 00:54:22 +01:00 | 80 commits to main since this release

    MAC Collection Sheet — round-trip xlsx per named device subset

    Downloads
  • v0.9.22 8cc689946c

    v0.9.22 Stable

    calum released this 2026-08-14 17:44:20 +01:00 | 82 commits to main since this release

    Devices master list: search + filter + sort

    Downloads
  • v0.9.21 d62d5a9ccb

    v0.9.21 Stable

    calum released this 2026-08-12 03:29:10 +01:00 | 86 commits to main since this release

    0.9.21 — ADR-N093 phase 1: VLAN identity via stable UUID. Additive migration adds vlan_row_id (UUID FK) alongside existing INTEGER vlan_id on every membership / address / port / lag; auto-populate triggers keep them in sync; upsert_vlan cascades the INTEGER on renumber. Fixes the class of bug where changing a VLAN's number silently orphans memberships (the one the operator hit on Management 1010 → 1542). Phase 2 (0.9.22) drops the INTEGER cache and switches readers to UUID keying.

    Downloads
  • v0.9.20 cbcaefd1e9

    v0.9.20 Stable

    calum released this 2026-08-11 21:51:19 +01:00 | 88 commits to main since this release

    0.9.20 — ADR-N092: firewall address = vlans.gateway (was hardcoded .1); .1 warn+override in the shared checkAddressIllegal predicate (routes through the SAME OverrideConfirmDialog as reserved ranges — no second override system). Server-side .1 hard block removed; collision still hard-blocks via ClashDialog.

    Downloads
  • v0.9.19 a913388abe

    v0.9.19 Stable

    calum released this 2026-08-11 20:24:39 +01:00 | 90 commits to main since this release

    0.9.19 — ADR-N091 Conform-to-subnet button: one-click re-anchor of a VLAN's reserved + DHCP ranges onto its current subnet, preserving each endpoint's host portion (mask-derived, per-endpoint; clamp+flag for the rare straddled-boundary case). Removes the hand-edit for the common venue-IT-changed-subnet case; write path unchanged.

    Downloads
  • v0.9.18 8911e99269

    v0.9.18 Stable

    calum released this 2026-08-11 18:42:43 +01:00 | 92 commits to main since this release

    0.9.18 — ADR-N090 settled-flush safety: VLAN/subnet dropdown + dialog close no longer hostage to a failed pending commit (regression from 0.9.17 hit while re-basing ranges to a changed subnet).

    Downloads
  • v0.9.17 d2742468e9

    v0.9.17 Stable

    calum released this 2026-08-10 23:24:36 +01:00 | 94 commits to main since this release

    0.9.17 — Reserved-range editor: per-field debounce + reconcile-in-place writes (ADR-N089). Fixes 0.9.16 data-loss on rapid multi-VLAN range editing.

    Downloads
  • v0.9.16 fdef3a26cb

    v0.9.16 Stable

    calum released this 2026-08-02 03:52:09 +01:00 | 97 commits to main since this release

    0.9.16 — Rack drawing: skew fix + landscape output + SYSTEM-WIDE rack hardware library (ADR-N088).

    Three related changes in one build.

    §1 SKEW FIX. dxf_to_svg_group now uses uniform min(sx, sy) scale + centering (was independent X/Y scale, stretched castors 1.111:1). Castors + device symbols + hardware symbols render true-aspect. Applies to frames + devices + hardware by construction (one funnel). Verified: castors are ROUND on both FRONT and SIDE views.

    §2 A3 LANDSCAPE output. Payload gains orientation: "portrait" | "landscape"; template branches page_size + fit math. Each rack now generates BOTH orientations per Generate click; subject_ids ${rack.id}-portrait and ${rack.id}-landscape. Both participate in Generate All + revision ZIP. Uses the existing render_deliverable(page_size=...) seam — NO frame fork.

    §3 SYSTEM-WIDE RACK HARDWARE LIBRARY. A new catalogue category for rack fillers (patch panels, blanks, shelves, brush plates, drawers). Shares the ADR-N085 per-model CAD storage shape exactly (BLOB + filename + three-state, DXF-validated). Admin CRUD at /admin/rack-hardware (create/edit from the editor; delete admin-only). Client mirror at library_rack_hardware (LIBRARY_SCHEMA_VERSION 16 -> 17); bytes stay server-side. Placement extension: rack_placements rebuilt at project SCHEMA_VERSION 21 -> 22 to allow either device_id or hardware_id (CHECK exactly-one-non-null; hardware_id NOT UNIQUE so a "1U Blank" can appear many times). Occupancy resolves height per kind. Editor: hardware section at BOTTOM of sidebar (compact, ≤20% col height), Create/Edit dialog with admin creds, drag/occupancy identical for both kinds. Render: payload placement schema unified with kind + label; server template _fetch_cad_bytes routes to models OR rack_hardware.

    Verified: cargo 230/230 (+4 new hardware tests: hardware_placement_roundtrip, multiple_hardware_placements_of_same_item, exactly_one_non_null_guard, mixed_device_and_hardware_occupancy). TSC + Vite clean. Live end-to-end PDF renders on 10.76.50.160 via mTLS: portrait single-page A3 (841.92×1191.12 pts), landscape single-page A3 (1191.12×841.92 pts), mixed device+hardware placements, castors ROUND. Admin CRUD proven with a live "1U Blank Panel" create; GET /catalogue picks it up. Backend counts 21/35/18/9/30 unchanged post-deploy. DOCKER-USER firewall lock intact.

    Non-blocking limitations: placeholder text is still mm-native in the SVG (from ADR-N087) — future refinement could overlay labels in HTML space for scale-independent sizing. Landscape orientation leaves horizontal whitespace on either side of the racks (aspect honest, not stretched).

    RACK FEATURE STATUS: Builds 1+2+3 (ADR-N085/N086/N087) shipped 0.9.13-0.9.15; 0.9.16 adds skew fix + landscape + hardware library. Six deliverables live: Switch Diagram · VLAN/Subnet Schedule (PDF+XLSX) · Device List · IP Tables · System Diagram · Rack Drawing (portrait+landscape per rack).

    Downloads
  • v0.9.15 927e39afe7

    v0.9.15 Stable

    calum released this 2026-08-01 23:18:54 +01:00 | 98 commits to main since this release

    0.9.15 — Rack Drawing Build 3 of 3: the RACK DRAWING DELIVERABLE (ADR-N087).

    Third and final build of the Rack Drawing feature. Sixth deliverable in the family. Rack feature COMPLETE.

    • Server endpoint POST /library/render/rack-drawing accepting RackDrawingPayload. Returns the standard RenderResponse envelope.
    • Server template extends the LOCKED shared frame (ADR-N073). ONE parse/emit pipeline (rack_dxf.py from Build 2) serves BOTH frame pieces AND per-device symbols. Composition: compose_rack_frame_svg → per-placement CAD symbol groups spliced into the frame SVG at correct U y-extents. FRONT + SIDE views side by side. Side view uses HIDDEN-LINE knockout (each entity stroked twice — wide white base + normal black re-stroke) for CASTORS occlusion. Missing-CAD placements render as LABELLED PLACEHOLDERS (dashed rect + device name + "NN U — no CAD symbol"). Never blank, never fabricated geometry. A3 PORTRAIT.
    • Client sends REFERENCES; server owns bytes. Payload carries model_id + resolved height_u per placement; server resolves CAD DXF BLOBs from catalogue.sqlite (ADR-N085 storage) and frame DXFs from Build 2's in-image assets. DXF bytes never traverse the client wire.
    • Multi-artifact one-per-subject flow (subject_id = rack.id) parallel to the Switch Diagram. New KIND_RACK_DRAWING constant, generateForRack() handler mirroring generateForSwitch(), integrated into Generate All loop, new Deliverables UI section between Switch Diagrams and VLAN Schedule. Participates in the revision ZIP.
    • Rust plumbing: LibraryProvider::render_rack_drawing trait method; MtlsHttpProvider impl; Tauri command render_rack_drawing_via_server. ZIP kind pretty-print extended with "rack_drawing" => "Rack Drawing".
    • Server-only, Cancel-only offline behaviour (accepted gap, same posture as VLAN Schedule / Device List / IP Tables / System Diagram).

    Verified: cargo 226/226; TSC + Vite clean. Live end-to-end mTLS render of a 600×24U +castors rack (5 placements) → 212 KB PDF at A3-portrait exact; second rack 800×12U no-castors (2 placements) → 158 KB (multi-artifact proven). Backend catalogue counts 21/35/18/9/30 intact. DOCKER-USER firewall lock intact.

    Non-blocking limitations recorded: placeholder text is mm-native in the SVG so scales with the rack (legible at zoom, small at print); shorter-rack whitespace; power panel + client-side DXF parity template are future work.

    RACK FEATURE COMPLETE. Six deliverables end-to-end: Switch Diagram, VLAN/Subnet Schedule (PDF + XLSX), Device List, IP Tables, System Diagram, Rack Drawing.

    Downloads