Skip to content

Releases: AlexeyInwerp/BoardRipper

BoardRipper v0.31.32

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 08 Jul 12:08

v0.31.32 — 2026-07-08

A memory-optimization pass. Across a long session BoardRipper now releases
memory back to the system instead of holding on to many gigabytes — both in the
browser (open boards and PDFs) and in the Docker backend.

Performance

  • Hidden board tabs release their GPU memory. Each open board used to keep a
    full WebGL context and scene graph alive for the whole session, so opening many
    boards piled up gigabytes that came back only slowly. A board that stays hidden
    now releases its renderer and rebuilds — restoring the exact view you left — the
    moment you switch back to it. (1301612, 2935c2d, 6d1761d, 697ce08)
  • PDFs no longer accumulate memory as you scroll. Long schematics kept every
    visited page's render data until the document was closed; page resources are now
    trimmed as you navigate, off-screen tile and preview images are freed promptly
    instead of waiting for the browser's garbage collector, and clean mode no longer
    keeps a second copy of the document loaded once it's switched off. (31cc953,
    84ea23a, 200b2de)
  • The backend returns freed memory to the OS. The Go server now derives a
    memory budget from its container limit and hands freed pages back promptly; the
    PDF-index workers cap and recycle their memory instead of holding a permanent
    high-water mark; large files stream to the browser instead of being buffered
    whole; and a real container memory limit is now actually enforced. (c5260ff,
    ad6d9d2)
  • Smaller idle footprint elsewhere. The board renderer frees its overlay
    textures and detaches its ticker on teardown, and per-board diagnosis lookups
    are capped so a long browsing session doesn't grow them without bound.
    (b6c104c)

BoardRipper v0.31.31

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 07 Jul 23:29

v0.31.31 — 2026-07-08

A broad correctness-and-hardening pass from a full multi-directional audit, plus
a Library panel cleanup.

Fixes

  • Removed / renamed library files get pruned again. A deletion-path bug meant
    files that vanished from disk were never removed from the database after the
    first restart, so the folder tree, file list, and duplicate groups slowly
    filled with ghost entries. (1227506)
  • PDF text search no longer returns stale hits. Re-indexing a changed PDF now
    clears its old pages first, so search never surfaces text from a previous
    version of a file, and the watermark re-index reliably strips added watermark
    terms. (1227506)
  • A failed or rolled-back update can be retried. An update that rolled back
    (slow boot, transient Docker error) used to consume the release and could never
    be re-applied from the in-app updater; it now re-offers the same release, and a
    Docker image-load error is detected instead of being reported as success.
    (1227506)
  • Tighter file serving. The legacy file endpoints now only serve or delete
    actual board and PDF files, closing an over-broad path that could reach other
    files in the data directory. (1227506)
  • GenCAD boards in non-mil units render correctly. Files authored in inches or
    millimetres are scaled properly instead of collapsing to an invisible speck.
    (409f570)
  • Better part orientation, honest part types. Rotated parts from more formats
    get a correctly-oriented outline box, and formats that can't distinguish SMD
    from through-hole now report "unknown" rather than guessing "SMD". (409f570)
  • More robust AI-copilot worklist entries. Net or part names with different
    casing no longer create duplicate "(missing)" rows, an out-of-range repair mark
    can't corrupt the board highlight, and measurement requests reach the right
    net. (c5d4d3a)
  • PDF viewer memory and speed. Fixed a decoded-page memory leak on panel
    resize and made in-document search noticeably faster on large schematics.
    (7efd5b3)
  • Library trees fill in during the first load. On a fresh load or rescan the
    Board# and Model views no longer stay empty while files stream in. (90ac02a)
  • Cloud-storage placeholders fail fast. Opening a not-yet-materialised cloud
    file surfaces the "materialize on host" message immediately instead of retrying
    for three minutes. (90ac02a)
  • Keyboard and theming polish. Board rotate/mirror/pan shortcuts no longer
    fire while a list panel is focused, and bright accent colours stay legible as
    text on light themes. (8357207)

Library panel

  • Reorganised for less clutter. The Folder tab now sits next to Board #; the
    status line is a single row pinned at the bottom that expands — on click, or
    while a scan/index is running — to the full breakdown, keeping the "view failed"
    button; and switching tabs focuses the search field so you can type straight
    away. (d45d37c)
  • DB / Live folder source is a quick dropdown. Clicking the Folder tab drops a
    small Database / Live menu that auto-dismisses, instead of taking a permanent
    row for one control. (8248438)

Under the hood

  • The MCP live-board bridge is now authenticated and gated, and its OAuth surface
    is bounded and hidden when the integration is off. Renderer pan/zoom hot paths
    shed redundant per-frame work. (1227506, c5d4d3a)

BoardRipper v0.31.30

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 06 Jul 16:15

v0.31.30 — 2026-07-06

Select components hidden under others, and get a clearer read on what's selected
versus what's merely on the same net.

Features

  • Select stacked / overlapping components. When parts overlap (alternates on
    shared pads, a small part on a big pad, a component under a shield), a click
    now selects the smallest part under the cursor; clicking the same spot again
    cycles through the stack. On 2-pin parts the second click selects the whole
    component — the first still selects the pin/net. Right-clicking a stack lists
    every overlapping part so any of them can be pinned to a worklist or looked up
    directly. (be05bef, 0358378, 6ec512b)

Fixes

  • Clearer selected-component highlight. The clicked part now draws a bold
    white outline with a white name label — distinct from the net-member parts it
    shares a net with (which stay in the net colour) and from the worklist mark
    colours. The selected name stays white at every zoom. (6ec512b, aeeaced,
    9142a7d)
  • Worklist mark highlights repaint on toggle. Turning the worklist Highlight
    on/off now updates the on-board outlines immediately instead of waiting for the
    next pan or zoom. (aeeaced)
  • Worklist scroll stays put. A long worklist no longer jumps back to the top
    when you click the board or switch the sidebar tab away and back. (#22,
    6961bb8)
  • ASUS X540 BDV boards align to their pins. Boards whose file supplies no
    per-part geometry (all-zero part corners, e.g. X540UV 60NB0HF0-MB1020) had
    every part's outline and label pulled toward the board origin; parts now derive
    their box from their pins. (e8aa6b7)

BoardRipper v0.31.29

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 01 Jul 19:48

v0.31.29 — 2026-07-01

The session-restore boot prompt now lets you pick which boards and PDFs to reopen
instead of restoring all-or-nothing.

Features

  • Session-restore file picker. The "Reopen your last session?" prompt now
    lists every board and PDF that was open with a per-file checkbox (all checked
    by default). Uncheck any you don't want and only the rest reopen; the primary
    button reflects the count ("Reopen (N)") and disables when nothing is selected.
    Discard still clears the whole saved session. (e4ca016)

BoardRipper v0.31.28

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 30 Jun 21:44

v0.31.28 — 2026-06-30

Board↔PDF links now persist across reloads, the worklist records full multimeter
readings per net, two reported bugs (#20, #21) are fixed, and the tab/tooltip
chrome got a round of polish.

Features

  • Board↔PDF links persist. Linking a board and a PDF from the tab now
    writes a durable backend binding — a single row no matter which side you link
    from — so the link survives a reload + reopen, and auto-open / auto-switch keep
    working. Unlinking demotes the link (it won't auto-open or get resurrected)
    instead of destroying it. Dropped files are ingested into the library with a
    real id at drop time, so they bind and restore just like library files.
    (9b18933, bc2855a, 7ed1c8a)
  • Worklist records all three measurements per net. A net can hold a voltage,
    a diode drop, and a resistance reading at once — three independent slots
    instead of one value you had to switch the type of. Copying a worklist carries
    the nets and their readings as round-trippable text. (c869aaa, 62ea78d,
    8d06ceb)
  • Worklist info in the board hover tooltip. Hovering a part or net that's on
    the active worklist shows its mark + note inline; net readings render with the
    diode glyph. (e459913, 69bee13)

Fixes

  • #21 — self-update no longer drops Docker networks. The in-app update only
    preserved image/env/mounts/ports; it now also re-attaches the container's
    user-defined networks (with aliases), Compose labels, and memory/CPU limits —
    fixing the reverse-proxy 502 that hit networked deployments after updating.
    (cd95a7d)
  • #20 — PDF pan/zoom is kept when switching PDF tabs. Switching away and back
    no longer snaps the view to the top-left. (8b8dc67)
  • Session restore reopens PDFs. A restored session reopened boards but loaded
    PDFs invisibly (no panel); they now reopen, and the "reopened N" toast counts
    what actually opened. (f2cf83c)
  • Link indicator + tab polish. The / ○○ glyph is now proper link /
    link-off icons (identical size on Chrome and Safari). Long file names in tabs
    are truncated with a hover tooltip. Tab colours no longer flip when a group
    loses focus, so board↔PDF switching is visually stable. (bc2855a, f2cf83c,
    af1731b, 0f7609d)
  • Clearer menu wording. Right-click "Donor PDFs" → "Search in PDF files",
    and the PDF "auto-open boardview" toggle is renamed "auto switch
    boardview"
    . (f2cf83c, bc2855a)

BoardRipper v0.31.27

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 25 Jun 20:59

v0.31.27 — 2026-06-25

Reload no longer loses your work, and the update dropdown now shows what's new
before you update.

Features

  • Session restore — reopen your boards + PDFs after a reload or update. When
    boards/PDFs were open and the page reloads (manually or after a self-update),
    BoardRipper now asks whether to Reopen or Discard the previous session.
    It never auto-restores — so if you reloaded because something hung, you just
    discard and nothing reloads. The open set is persisted continuously (so even a
    hard hang/crash leaves a record). On Reopen, library files re-fetch from the
    server, dropped files come back via the library's incoming/ folder, and a
    dropped board that isn't on the server falls back to the local parsed-board
    cache; anything genuinely unavailable is reported. (188e3c6, 28d9b13,
    c7d7802, b2fbb48)
  • "What's new" in the update dropdown. The update badge now shows the new
    release's notes inline, under a collapsible What's new spoiler, instead of
    only linking out. The notes are embedded in the signed update manifest
    (sliced from this changelog at release time), so they're trustworthy and work
    offline; releases without embedded notes fall back to the "Release notes ↗"
    link. (Appears for updates to releases cut from here on.) (94108dc,
    e7d88c0, 65fb86d, 5afddcc)

BoardRipper v0.31.26

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 25 Jun 15:32

v0.31.26 — 2026-06-25

Two new features — a Donor boards library tab that turns marked PDFs into a
managed, auto-indexed, reset-proof donor pool, and Worklist v2 Phase 1
(inline per-net measurements + a relay-only AI section) — plus interface and MCP
fixes.

Features

  • Donor boards. A new Library tab gathers every PDF marked as a donor, each
    row showing its live index status and linked board. Click a row to open its
    detail (bindings + Open); double-click to open the PDF. Export / Import /
    Restore controls manage the pool. (e562176, 212e08e)
  • Marking a donor guarantees it gets indexed. Adding a PDF to the donor pool
    triggers a scoped backend pdfium index of exactly that file (server-side, so the
    UI, an MCP tool, or a script all benefit), plus a boot-time backfill of any
    donors that weren't indexed yet — so "search donors only" no longer silently
    misses a never-opened PDF. (b4367c4, af499d2, e148eae)
  • The donor pool survives "Reset Database". A path-keyed JSON snapshot is
    auto-written before a reset and restorable in one click, with manual
    Export / Import for portability — wiping the scan no longer loses your donors;
    they re-resolve to the rescanned files by path. (98308fd, e9c8cc5, 0df3351)
  • Per-net inline measurements on worklist rows. Each net row now carries a
    V / Diode / Ω strip where the technician types a reading directly — no separate
    "to measure" list. Values are stored as NetMeasurement objects with unit,
    value, timestamp, and source (user | agent). (a288871, 4a73959)
  • Relay-only AI section. The AI section in the worklist panel is now a relay
    transcript (messages + prompt box) only — measurement requests that target a
    net route to the net row's inline field, while part/pin targets land in the
    relay as a pending row the user answers or skips. (1b7902c, 7429650)
  • Source-agnostic get_measurements. The MCP get_measurements tool returns
    all net readings regardless of who recorded them — the technician typing a value
    directly on a net row and the agent requesting it via request_measurement both
    appear in the same snapshot. Optional status (pending | answered | skipped)
    and source (user | agent) filters narrow the result. (7429650)
  • Single off-by-default Highlight toggle. One Highlight button replaces the
    old always-on automatic outlines: when on, worklist parts render in their mark
    colours and any net shared by two or more worklist parts glows; when off, the
    board is unaffected. The Clear button is decoupled from the toggle. (b200bb6,
    85a00f9)
  • Hydrate-time migration of legacy measurements. Opening a worklist saved before
    Phase 1 migrates any flat-array AI measurement entries onto the corresponding net
    rows automatically, so existing worklists carry forward without data loss.
    (7f2e5cc)

Fixes

  • Toolbar tooltips no longer spill off-screen. The top-bar tooltips were
    pure-CSS pseudo-elements that couldn't clamp to the viewport, so buttons near
    the right edge ran off the screen. They're now a single JS-positioned tooltip
    that clamps horizontally and flips above the button when it would overflow the
    bottom; the board hover tooltip also clamps on every edge. (8e97b36, be1c442)
  • Board info sidebar is drag-resizable. A left-edge handle resizes the overlay
    sidebar (width persisted to localStorage), its tab labels no longer sit under the
    ☰ toggle, and the redundant × close button was removed — the ☰ toggle is the
    single close affordance. (be1c442, 8e97b36)
  • MCP bridge stops when MCP is disabled. Turning MCP off (or removing it by any
    means) now tears the WebSocket bridge down instead of reconnecting to a dead
    endpoint every three seconds forever; each reconnect re-checks that MCP is still
    enabled before retrying. (526f0a7)

BoardRipper v0.31.25

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 24 Jun 07:21

v0.31.25 — 2026-06-24

Smarter schematic lookup, and two fixes that make ASUS laptop .cad
boardviews open correctly.

Features

  • Context-scored schematic lookup. Double-clicking a component or net to find it in a linked schematic PDF now picks the best occurrence instead of the first. A scorer ranks every match by page context (the net/pin labels around it), then designator font size, then on-page proximity — so a large BGA lands on its schematic symbol sheet rather than a shared pin/connector index table, even though its reference designator sits far from the radiating net labels. Purely-numeric pin tokens (the sequential 10, 11, 12… a BVR exposes) are dropped from matching since they pack tables and carry no signal; ball-style alphanumeric names are kept. Verified across the 8 largest BGAs on an Apple M1 820-02020. (9b6996b, 2bc2cb4, 84a1548)

Fixes

  • ASUS .cad boards no longer open as a pile of giant overlapping components. TESTCAD/IMPACT exports (FA506QR, X415JA, G513IM…) store each part's true position in its shape coordinates and use PLACE only as a tiny nudge — the inverse of the case the shape-recentering logic was built for. Recentering crushed the board to a fraction of its size and left components 5–50× oversized (one part covering half the board). BoardRipper now detects this convention file-wide and skips recentering, restoring the real layout — cross-checked against the FZ export of the same chassis. Clean GenCAD, multi-revision V382, and Quanta files are untouched. (6310b1a)
  • ASUS .cad boards that froze the tab on open now load. The same exports re-list each component once per net/device record, so a large BGA listed thousands of times over a full-footprint shape produced millions of phantom pins and exhausted memory (FA506QR ≈ 9.1M pins). Consecutive byte-identical component records are now collapsed to one; genuine multi-revision files are unaffected. (7e878aa)

BoardRipper v0.31.24

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 23 Jun 09:18

v0.31.24 — 2026-06-23

Extends the MCP integration with a two-way worklist AI-mode loop — an
agent (e.g. Claude Code via the BoardRipper MCP) and the bench technician
collaborate on the same worklist, no in-app LLM required.

Features

  • Worklist AI-mode feedback loop (agent ↔ worklist ↔ user). The agent writes worklist entries, marks, and list notes, requests specific measurements, and posts relay messages; the user answers (or skips) each measurement inline and types back through a prompt box the agent reads. New live MCP tools — worklist_get / worklist_get_measurements / worklist_get_user_messages (read) and worklist_add / worklist_update / worklist_set_list_note / request_measurement / post_message (write, gated on the mcp_drive_ui toggle) — plus matching bridge dispatch handlers. The WorklistPanel grows an AI section: measurement rows with answer/skip, a relay transcript with a prompt box, and clickable [n:] / [p:] net/part chips (the DiagnosisNotes note renderer is now exported and reused). The boardripper-repair-helper skill gains a guided worklist-loop playbook and tool quick-reference. Design spec: docs/specs/2026-06-16-worklist-ai-mode-feedback-loop-design.md. (a2d21b3, f77eb38)

BoardRipper v0.31.23

Choose a tag to compare

@AlexeyInwerp AlexeyInwerp released this 20 Jun 15:49

v0.31.23 — 2026-06-19

BoardRipper can now be driven by an AI agent: a built-in MCP server exposes the
open board — its connectivity, the schematic PDFs, OpenBoardData and the board
database — to Claude Code (or any MCP client), and a bundled repair-helper skill
turns that into a hands-on bench copilot.

Features

  • MCP server — analyse and drive a board from an AI agent. A standards-compliant Model Context Protocol server (Streamable HTTP at /api/mcp), off by default, enabled in a new Settings ▸ Integrations tab. 21 tools: PDF full-text search, OpenBoardData diode/voltage/resistance readings, board-reference resolve, and file inventory answered by the backend; plus — over a WebSocket bridge to the board open in your browser — live connectivity (list/inspect nets and parts, pin-to-pin, net-neighbour power-sequence tracing) and drive-UI (highlight a net, select a part, flip the side, jump a linked PDF) so the agent narrates and shows the answer on your screen. (74dfdb4, 6ea651c, e742cdf)
  • Part info over MCP, including descriptions. part_info returns a component's full metadata — value, serial, package, type, side — and a new find_parts free-text-searches reference designators and those description fields, so a component can be located by its real name/number even when no schematic PDF is available. list_parts/list_nets gained substring/side filters + pagination, and board_active reports a generation token so the helper notices when you switch boards. (b936dc0, bf45adc)
  • Repair-helper skill. A bundled Claude Code skill (boardripper-repair-helper) that turns the raw tools into a structured copilot with playbooks for find-a-component-by-function (evidence order PDF → part descriptions → OpenBoardData → connectivity), power-rail / no-power triage, signal tracing, and short-to-ground hunts. (b936dc0, bf45adc)
  • One-click connect + OAuth onboarding. Connect with a bearer token or zero-token OAuth 2.1 (approve in the browser, nothing to copy). The Integrations tab has per-client connect cards (Claude Code, Claude Desktop, Cursor), a live status line with connected-page and tool-call counts, and a Test connection button. (e9e8556, ed9ff71, 5de9a60)