• v0.6.2 44d2247f7c

    v0.6.2 Stable

    calum released this 2026-07-22 21:59:55 +01:00 | 65 commits to main since this release

    0.6.2 — OFFLINE FALLBACK renderer fixed for Windows. This is the LOCAL fallback path; the intended default is a server-side render (separate build to follow). Root cause: render_html_to_pdf spawned msedge.exe without --user-data-dir. Because the Tauri host process IS a WebView2 (Edge-family) instance, the spawned msedge forwarded to the running Edge instance and exited 0 without writing the PDF; the raw file-not-found (os error 2) then surfaced to the operator. Fix: --user-data-dir= (bypasses single-instance forwarding); reliability flags --no-first-run --disable-extensions --disable-default-apps --disable-background-networking; post-spawn verify_pdf_written() checks the PDF was written before reading; Stdio::piped() captures child stderr for diagnostic tails. Verified through the ACTUAL Rust command on both platforms: Linux dev box engine=chromium bytes=17898; Windows loud-win engine=edge bytes=32233. Both %PDF- valid. Cargo workspace all green; TSC + Vite build clean. Process failure recorded: prior 0.5.5/0.5.6/0.6.0/0.6.1 verification ran parallel Node/puppeteer harnesses on the dev box that bypassed the Rust command entirely; the only sanctioned verification path going forward is tests/deliverables_render_pdf.rs which calls render_html_to_pdf directly and whose chromium_present() gate now includes the Windows Edge/Chrome paths.

    Downloads
  • v0.6.1 1eceb30be3

    v0.6.1 Stable

    calum released this 2026-07-22 17:24:53 +01:00 | 68 commits to main since this release

    0.6.1 — ADR-N066 Pass B: Switch Diagram FACEPLATE refinement. CSS + template only. Empty cells drop 'Spare / —' (unused = quiet muted number). Disabled cells drop 'Disabled' body word-wrap; muted background + centred 4094 in the bottom row carries the 'off' state. Populated cells' typography retuned so short-names fit (fp-body 7pt→6.5pt line-height 1.05, min-height 14mm→13mm, tighter padding). Faceplate restructured as a 2-row CSS grid — row 1 = centred UPLINKS caption over the uplink COLUMN only; row 2 = main-run + uplink-slots side by side, both on the SAME y-baseline, both on a matching grey base bar. Section gap 3mm→2mm (subtler breathing space). Verified per ADR-N066 verify-by-SCREENSHOT: 52-port fixture (populated/empty/disabled/trunk/LAG/uplink) rendered end-to-end via chromium --print-to-pdf → pdftoppm PNG with agent visual read; images at /tmp/lnw-0.6.1-render/. TSC + Vite build clean. Header (Pass A), footer/legend (Pass C — still owed), port detail table, VLAN summary, uplinks/trunks panel, layout consumption (0.5.5), revision system (0.6.0), layout editor, create-rule, patch/LAG logic, real port config, reserved-VLAN correctness UNCHANGED.

    Downloads
  • v0.6.0 e98165356c

    v0.6.0 Stable

    calum released this 2026-07-22 16:34:44 +01:00 | 70 commits to main since this release

    0.6.0 — ADR-N067 Deliverables Build 3: revision workflow (create/generate/store/list/view/download). Migration 017 adds revisions + revision_artifacts tables (project.sqlite); artifacts stored on-disk in /deliverables/rev-N/ so they travel with the .lnetwork bundle. Create Revision snapshots the current branding (title/company/logo/date) — frozen thereafter. Regenerate REPLACES in place (same DB row, same file); only Create Revision bumps the number. Selecting an older revision shows its frozen state; archived-revision regenerate shows a WARNING dialog. Download Deliverable Package produces a ZIP named 'NNN - {frozen title} - Deliverables - YYYYMMDD.zip' with docs named similarly. Read-only guard preserved (model_read_signature stays equal — enforced by test). Verified per ADR-N058 real-store round-trip (Rust cargo test — 3/3 pass) and per ADR-N066 verify-by-SCREENSHOT (9-shot Chromium walker of the full workflow with agent visual read; screenshots at /tmp/lnw-0.6.0-shots/). Cargo workspace all green; TSC + Vite build clean. Switch Diagram TEMPLATE unchanged (Passes B/C still owe the visual refinement). Layout consumption (0.5.5) unchanged; layout editor (ADR-N066) unchanged; storage of real port/VLAN/mode config never touched.

    Downloads
  • v0.5.6 c9457ac2d3

    v0.5.6 Stable

    calum released this 2026-07-22 14:52:24 +01:00 | 72 commits to main since this release

    0.5.6 — ADR-N066 Pass A: Switch Diagram deliverable HEADER RESTRUCTURE. Header now: sheet title (Switch Diagram) LEFT, four content-sized labelled fields (PROJECT · SWITCH · UNIT · LOCATION) MIDDLE, BARE logo RIGHT (no wrapper box, no duplicated company name). SWITCH shows the composed identity WITHOUT the #NNN suffix (composeDeviceIdentitySansUnit) — the number surfaces separately in UNIT. LOCATION reads from ProjectMeta.location (currently blank on operator project — renders as muted em-dash). Old Site/Rack/Notes header fields removed. Values single-line ellipsis, no forced wrap. Storage + persistence UNCHANGED; layout consumption (0.5.5) unchanged; faceplate/port detail/VLAN summary/uplinks/footer/legend UNCHANGED (Passes B and C still owed). Verified by end-to-end PDF render (chromium print-to-pdf -> pdftoppm PNG) with agent visual read across three scenarios: authored 52p with logo + populated location; generic 24p with no logo + blank location (muted em-dash); typed-name 24p (typed device.name wins on SWITCH). TSC + Vite build clean.

    Downloads
  • v0.5.5 99e35ec0f5

    v0.5.5 Stable

    calum released this 2026-07-22 00:57:19 +01:00 | 74 commits to main since this release

    0.5.5 — ADR-N066 CONSUMED: Switch Diagram deliverable faceplate renders from model.switchLayout (with synthetic generic fallback via legacy copper/SFP split). One code path renderFaceplateFromLayout(); mainSections render as ordered runs separated by SMALL GAP (divider = breathing space, not heavy rule); uplinkSection on RIGHT labelled UPLINKS (fixes mislabel), respecting arranged slot order + null-empty slots. Cell content unchanged (ADR-N065 spec). ADR-N065 display bugs closed same pass: (1) switch name wraps in header; (2) cell short-name graceful 2-line clamp with word-break; (3) DISABLED + 4094 both legible (uppercase-truncated label REMOVED, 'Disabled' now shown in body with muted cell background); (4) VLAN legend aligned as clean row. Storage + persistence UNCHANGED. Verified by end-to-end PDF render (puppeteer chromium print-to-pdf → pdftoppm PNG) with agent visual read for both authored-52p + generic-24p scenarios. Cargo 207/207 + backend pytest 73/73 + TSC/Vite clean.

    Downloads
  • v0.5.4 6e122d5293

    v0.5.4 Stable

    calum released this 2026-07-21 23:11:47 +01:00 | 75 commits to main since this release

    0.5.4 — ADR-N066 visual layout pass. Fixes three visible defects the 0.5.1/0.5.2/0.5.3 structural walkers all missed: (1) absolute-positioned uplink toolbar overlapping port tiles — DELETED, replaced with normal-flow chip in new .slw-faceplate-toolbar row above the tiles (zero absolute positioning); (2) tiles 40→50px (+25%), min-height 42→52px, faceplate fits 52-port switch on 1920 viewport; (3) two-line label 'PORT' / '11' via splitPortKey() — port numbers never clip. Verify-by-SCREENSHOT rule recorded in ADR-N066 (structural pass insufficient for visual layout). Storage + persistence UNCHANGED. 11/11 walker assertions PASS including bounding-box overlap check. Agent visually confirmed screenshots.

    Downloads
  • v0.5.3 39b1724ce2

    v0.5.3 Stable

    calum released this 2026-07-21 21:14:22 +01:00 | 76 commits to main since this release

    0.5.3 — ADR-N066 uplink slot arrangement + wide-faceplate fit. BUG 1: uplink ports now default to numerical order on entry AND support in-place slot-drag swap (any arrangement via pairwise swaps). Type widens ports:string[]→(string|null)[] (TS-only superset; no migration). BUG 2: dialog grows to min(1900px,96vw), tile pitch shrunk (44→40/gap 3→2/k-anchor 6→4/padding 18→12), tile-num ellipsizes cleanly. 52-port two-row faceplate fits within dialog with NO horizontal scroll on standard viewports. Storage structure + 0.5.1 create-rule persistence UNCHANGED. 11/11 walker assertions PASS driving real mouse drags in headless Chromium.

    Downloads
  • v0.5.2 77fa263ba5

    v0.5.2 Stable

    calum released this 2026-07-21 20:03:33 +01:00 | 77 commits to main since this release

    0.5.2 — ADR-N066 interaction rebuild: pointer-event slot-based drag layer. Storage structure + create-rule non-admin persistence (0.5.1) UNCHANGED — only the in-dialog drag interaction is rebuilt. Ports drag smoothly; dividers snap to ANY K from 1..N-1 (bottom-row K including 'after port 12' now works — 0.5.1 was top-row-only); port drag into/out of uplink returns to numerical position. Two layout-stability bugs fixed (K-anchor resize + trash-zone inline reflow). 22/22 walker assertions PASS driving real mouse drags in headless Chromium. TSC + Vite clean; no backend changes.

    Downloads
  • v0.5.1 6b86395dfc

    v0.5.1 Stable

    calum released this 2026-07-21 17:34:52 +01:00 | 78 commits to main since this release

    0.5.1 — ADR-N066 amended: switch_layout + per-model image now writable via the CREATE-RULE path (non-admin). Editor + image controls relocated from admin panel to the DEVICE view. A normal user can now author a switch layout / upload a model image without admin sign-in. Backend NewVocabEntry + push_entries carry the three fields end-to-end with empty-clear semantics ({} clears layout; "" clears image; None is no-op). Client Rust NewVocabEntry + vocab_to_wire + insert_local_row + reconcile_unsynced all plumb the fields (N058 field-drop audit applied). Display-only per ADR-N066 — no real port/VLAN config touched.

    Downloads
  • v0.5.0 c61dc1b802

    v0.5.0 Stable

    calum released this 2026-07-21 14:17:00 +01:00 | 80 commits to main since this release

    0.5.0 — ADR-N066: model-owned switch layout + per-model product image. Backend adds nullable switch_layout (JSON) / image_data (BLOB) / image_mime (TEXT) columns on models; admin PATCH accepts them with empty-dict/empty-string clears. Client library.sqlite migration 014 mirrors. New Switch Layout editor dialog (drag-and-drop tiles, 1/2 line toggle, swap odd/even, inline dividers between sections, uplink block with 1/2-row slots, product image upload, reset/cancel/save). Editor is DISPLAY-ONLY — no port config mutation. Storage + editor only; wiring the Switch Diagram and Patch view to consume the layout is a follow-up build.

    Downloads