Releases: AlexeyInwerp/BoardRipper
Release list
BoardRipper v0.31.32
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
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
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
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
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
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'sincoming/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
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 asNetMeasurementobjects 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 MCPget_measurementstool returns
all net readings regardless of who recorded them — the technician typing a value
directly on a net row and the agent requesting it viarequest_measurementboth
appear in the same snapshot. Optionalstatus(pending|answered|skipped)
andsource(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
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
.cadboards 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
.cadboards 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
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) andworklist_add/worklist_update/worklist_set_list_note/request_measurement/post_message(write, gated on themcp_drive_uitoggle) — 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 (theDiagnosisNotesnote renderer is now exported and reused). Theboardripper-repair-helperskill 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
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_inforeturns a component's full metadata — value, serial, package, type, side — and a newfind_partsfree-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_netsgained substring/side filters + pagination, andboard_activereports 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)