Releases

What's shipped.

Every PatchMap release with the narrative that matters to network engineers. What's new, what's changed, what's fixed. No commit hashes.

Changelog

All notable changes to PatchMap will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Scope

This is the customer changelog. It only covers changes a user running the PatchMap app would notice — new features, behaviour changes, and fixes inside the product itself.

[Unreleased]

[0.9.0] - 2026-07-20

Added

  • Move a cable without re-creating it. The connection panel has a new Endpoints section with a Move button on each end of the cable. Pick a free port — on the same device (the picker starts there) or any other device — and the cable is re-terminated in place: cable type, ID, colour, notes and history all survive, and the vacated port frees up instantly. The only rule, as before, is that a cable’s two ends can’t land on the same device. Moves appear in the Activity feed as “moved cable old portnew port”.

  • Select and move multiple devices together on the Topology page. Hold ⌘/Ctrl (or Shift) and drag on the canvas to box-select devices, or ⌘/Ctrl-click to add and remove them one at a time — then drag any selected device and the whole selection moves as one, with every position saved in a single batch (“Saved n device positions”). A plain click still opens the device panel as before, and Backspace can no longer accidentally remove nodes from the canvas.

  • Rename device groups. The group page header now has a Rename button — click, type, Enter (or Save). Group names were previously fixed at creation.

  • Trunks are labelled on the patching schedule — and can be left off. Inter-panel trunks (cables with both ends on patch panels) now carry a TRUNK tag on the PDF patching schedule so permanent structured cabling reads differently from working patches, and a new Include trunks toggle next to Export PDF lets you print a front-of-rack working copy without them (the filename notes no-trunks so copies are distinguishable). Hand-picked row selections always export exactly what you selected.

  • Device templates now include console ports. The bundled device templates (Alcatel-Lucent OmniSwitch models included) previously dropped the console port their source data defines — 161 templates across the library now create it (as a passive/copper serial port), so a switch added from a template arrives ready to patch into a console server.

Changed

  • Connections CSV export includes rack-U positions. Two new columns — u_a and u_b, sitting right after each end’s rack column — carry each end device’s U position, so an exported patching list places both ends in the rack without cross-referencing. Exported files still re-import unchanged (the importer ignores the informational columns).
  • MM fibre cables now draw in aqua on the Topology page — matching the real-world OM3/OM4 jacket colour and making them instantly distinguishable from amber single-mode runs.

Fixed

  • Port names like 1/1/42 no longer turn into dates in Excel. The connections CSV export now wraps date-lookalike values in Excel’s text form, so stack ports open as 1/1/42 instead of 1 Jan 1942 — and re-importing an exported file still works exactly as before (the importer strips the wrapper).
  • Cables without a type no longer vanish from the Topology page. A connection with no cable type set was silently hidden from the topology — including from the links list when clicking a bundled cable between two devices — because the media-type filter (whose default selects all data types) could never match an untyped cable. Untyped cables now show whenever the media filter isn’t narrowed; narrowing to specific types still excludes them.
  • Rack drag-and-drop now works in Edge and Chrome. Dragging a device in the rack planner silently did nothing in Chromium-based browsers (Edge, Chrome) — the drag started and instantly cancelled, while Firefox worked. Caused by a style change applied to the dragged block at the exact moment the drag began, which Chromium treats as a cancelled drag; the change now applies a moment later and dragging behaves identically in all browsers.
  • Stack ports now list in true numeric order. Port dropdowns for stacked/grouped devices (the connection wizard on the Topology page included) sorted names as plain text, so 1/1/10 and 1/1/11 appeared before 1/1/2. Ports now sort naturally — 1/1/1, 1/1/2, … 1/1/10 — member by member, lowest at the top.

[0.8.0] - 2026-07-19

Added

  • Clone a device and its ports in one click. Every device row on the Devices page (and the device page header) now has a Clone button. The copy is named clone_<original name> and keeps the hardware description — type, vendor, model, U-height, power draw — plus the complete port layout, including patch-panel front/rear slot pairing. It deliberately starts clean: no rack position, no group membership, no serial number or asset tag, and nothing cabled, so you can rename it and drop it into a rack. Clones appear in the Activity feed as “cloned sourcecopy”.
  • Reorder racks in the multi-rack view. Each rack column in the side-by-side view now has ← / → arrows in its header to shift that rack left or right — no more deselecting and re-selecting racks just to change the column order. The order still lives in the URL, so a shared link reproduces your arrangement.

[0.7.0] - 2026-07-16

Added

  • Create a patch panel with its slots in one step. The Add-device form now asks how many slots a new panel has (default 24) and creates them as numbered front/rear pairs (“01”…“24”) ready to patch through — no more adding slots one at a time or importing ports and pairing them afterwards.
  • One-click repair for scrambled Front/Rear sides. Panels built from imported A01/B01 port lists could show the wrong side labels (an upgrade assigned sides by creation order, not by name). A new Fix Front/Rear sides button on the panel’s device page re-derives every slot’s sides from its port names — A01 is Front, B01 is Rear again.

Changed

  • Design consistency pass across the whole app. Buttons, inputs, and selects now come in one shared size scale (no more one-off heights); dialog titles, modal headers/footers, slide-over headers, and table headers follow a single pattern; row-action Edit/Delete buttons look identical on every list page and are keyboard-focusable (most previously had no visible focus state); list-row icons, hint text, and timestamps use consistent sizes and colours throughout.

Fixed

  • Rack planner drops now land where the preview shows. Dragging a multi-U device within a rack could place it up to several U above the green preview (the grab-point correction was never applied at drop time).
  • A patch panel placed front-and-rear in the same rack can no longer be dropped onto its own other half, and the server now rejects any device placed over a panel’s rear block — previously rear-side slots were invisible to overlap checks, so devices could silently stack.
  • Dropping a device or filler onto an occupied or out-of-bounds slot no longer leaves the green/red hover band stuck on the rack.

[0.6.0] - 2026-07-15

Added

  • Pending invites on the Users page. Admins now see a “Pending invites” section listing invites that were sent but not yet accepted — email, role, when it was sent, and when it expires (with an Expired badge for stale ones) — and can revoke a pending invite, which kills the emailed accept link immediately. Works on both PatchMap-connected and air-gapped instances.
  • Device search. The Devices page has a search box that matches name, vendor, model, serial number, and asset tag — across the whole inventory, not just the visible page.
  • Filter the unassigned list in the rack planner. The Unassigned side panel (single-rack and side-by-side compare views) now has a filter box to find a device by name, vendor, model, or type, with an “x of y match” count.

Changed

  • Sessions now time out. You stay signed in while you’re active, but a session idle for 12 hours requires a fresh login (operators can tune this with SESSION_IDLE_TIMEOUT_HOURS), and even a continuously active session re-authenticates after 30 days. Previously a session could survive indefinitely.

Fixed

  • The floating “Report a bug” button no longer sits on top of the Previous/Next pagination buttons at the bottom of list pages (Connections, Devices, Users, Activity).
  • CSV import now works on real installations. The import wizard’s validate/apply calls and its “Download template” links were missing authentication and always failed outside development mode.
  • Changing or resetting a password now signs out every other session for that account. Previously an already-signed-in session (or a stolen token) survived a password change.
  • A mistyped password no longer counts twice against the login rate limits (the app was silently retrying failed logins).
  • The Invite user dialog no longer shows the previous attempt’s email or error message when reopened.

Security

  • Admin-generated password-reset links are no longer written to the application log — the link now exists only in the admin’s browser response.
  • Login response timing no longer reveals whether an account is disabled or SSO-managed.

[0.5.1] - 2026-06-06

Added

  • Place each side of a patch panel independently from the unassigned list. In the rack planner, an unplaced patch panel now appears in the right-hand list as a single card with two draggable halves — Front (A) and Rear (B), using your side labels when set. Drag each half into whichever rack it belongs to. A half that’s already placed shows where it landed (rack + U position) while the other stays draggable, and the card stays in the list until both halves are placed.

Fixed

  • A patch panel with both sides placed in the same rack now shows both the front and rear blocks at their U positions (previously the rear block was hidden, and its slot wasn’t protected from overlap).
  • You can now drag a placed patch-panel half — including the rear side — back out of a rack to unplace it, in both the single-rack view and the side-by-side compare view.
  • Long device or rack names no longer wrap and inflate the patch-panel cards in the unassigned list.
  • On a 1U patch panel, the dual-rack cross-reference text (”↔ other rack U-n”) no longer overlaps the panel’s name in the rack diagram.
  • In the side-by-side compare view, the “drop to unassign” highlight on the shared list no longer stays stuck on after you drag a device out into a rack.

[0.5.0] - 2026-06-06

Added

  • One-shot patch-through. You can now document a cable that passes through a patch panel in a single step: pick the panel and slot once, then set the device and port on the front side and on the rear side. Both cable legs are created together and linked, so a trace runs straight through the panel end-to-end. Either side can be left open and wired later. The flow is available from the Connections tab, and in Topology by dragging a cable to or from a patch-panel node (the device you dragged is pre-filled as one leg) or by clicking a panel’s free slot side.
  • Front/Rear slot sides. Patch-panel slots now carry a clear Front (A) and Rear (B) identity with labels (using your side labels when set, otherwise “Front”/“Rear”), shown in the panel’s slots table. A Flip control swaps a side if it was auto-assigned the wrong way round.
  • Dual-rack patch panels. A single patch panel can now occupy a U slot in two different racks at once — set a Side A (Front) rack and a Side B (Rear) rack on the panel. It renders in both rack diagrams at its U position on each side, shows a cross-reference badge (”↔ other rack U-n”), is clickable from either rack, and counts toward each rack’s capacity. The device-location matrix and rack-layout PDF exports list both placements.
  • Connect a free panel port from Topology. Clicking a patch panel in the topology view now lists all its slots; clicking a free side opens the connection wizard to wire a device onto that exact port.

Fixed

  • Deleting a device that still has cables attached no longer fails with a server error. You now get a clear message naming how many connections are still attached, and the delete dialog offers to delete the device together with its connections in one step (or you can remove the connections first).

[0.4.0] - 2026-06-05

Added

  • A new Activity page shows a live, searchable history of who changed what across your workspace — who relocated a device into another rack, who deleted a device, who added or removed a connection, and who created, renamed, or deleted a rack. Filter by person, action, entity type, or date range, search by name, and watch it update automatically within a few seconds as colleagues make changes — no refresh needed. Activity is retained for 30 days, and every signed-in user can see it.
  • The sidebar now shows who you’re signed in as — your name (or email) and role — just above the Log out button, so it’s always clear which account you’re using.
  • Inviting a user now emails them a branded one-time invite link that names the organisation they’ve been invited to. You still see the link right after creating the invite, so you can copy and share it directly if you prefer — and if email delivery isn’t available on your instance, the screen tells you it couldn’t be sent so you can share the link yourself.
  • The device-creation form now recognises far more hardware out of the box. The built-in template library has grown to 318 switch, router, and firewall models across 18 vendors — including Cisco, Arista, Juniper, Palo Alto, Fortinet, HPE, Dell, Ubiquiti, MikroTik, Extreme, Check Point, and more, with deeper data-centre and enterprise coverage (Cisco Nexus/Catalyst, Arista 7050/7060/7280, HPE FlexFabric and Aruba CX, data-centre FortiGate/FortiSwitch, and Alcatel-Lucent OmniSwitch) — so the “Template available — Apply” prompt pre-fills the correct ports for many more devices without you having to build a custom template first.

Changed

  • Empty states, the dashboard onboarding card, the auth-loading splash, and the import-success affirmation now show the current PatchMap brand mark instead of the previous honeycomb ornament left over from an earlier design.

Fixed

  • The topology view now stays in sync when more than one person is editing it. Another user’s device moves, and connections they add or remove, now appear automatically within a few seconds — you no longer have to refresh the page to see them. While you’re dragging a device, incoming updates wait until you let go, so a teammate’s change can never snap a node out from under your cursor mid-drag.
  • The “Don’t see your model? Request it” link on the device-creation form was pointing at a placeholder GitHub repo (404). It now opens an in-app form (matching the bug-reporter pattern) that emails the request to support@patchmap.ai with the vendor, model, an optional data-sheet URL, and any notes you add.

Security

  • Sign-in is now protected against password-guessing: repeated failed attempts from one source are rate-limited, and an account is briefly locked after several wrong passwords in a row. Legitimate sign-ins are unaffected — the thresholds are generous and clear automatically after a short cooldown.
  • Updated bundled dependencies to pick up upstream security fixes (idna, weasyprint).

[0.3.0] - 2026-05-30

Added

  • Topology canvas: drag from the + indicator on any port to pull a new connection — the new-connection wizard opens with both endpoints pre-filled.
  • Topology canvas: pan and zoom now persist across reloads, so you return to exactly where you were last looking.
  • Workspace switcher in the sidebar for users with access to more than one PatchMap workspace — switch without re-authenticating.
  • Single-sign-on at the login screen, for instances that have been linked to an external identity provider. New users are created automatically on first sign-in.

Changed

  • Login screen redesigned around a primary sign-in button; the local-credentials form is reserved for admin break-glass.
  • Auth buttons standardised — full-width rounded boxes that match the surrounding form fields.
  • Updates page rebuilt with clearer running-version status and a single source of truth for the version across the app.

Fixed

  • Sign-in email collisions now return a graceful 409 instead of a server error — useful when an existing local account tries to sign in under a different identity.
  • The app’s shell HTML is no longer browser-cached, so a fresh deploy is picked up immediately without forcing a hard refresh.

[0.1.0] - 2026-05-07

Initial build covering Phases 1–22: network documentation core, authentication, single-sign-on, licensing, deployment, the UI overhaul, brand refresh, PDF exports, the dashboard, and the sites map view.