Skip to main content
Support

Browse by category

All categories
Changelog

Developer tools (legacy) changelog

All 21 entries, newest first. Click an entry to read it, or go back to the full changelog for the other areas.

removedNine tools retired

Nine tools have left the catalog. Eight did a job a chat assistant now finishes in one request: generating UUIDs, hashing text, converting CSV to JSON, working out one subnet, picking a color, pulling a palette from an image, reading a table from a screenshot, and scaling a recipe. The ninth, Warranty Tracker, saw almost no use. The catalog now centers on the files and calculations an assistant cannot handle for you.

What changed:

  • Old links still work: each retired page, its history page, and its alternate URLs redirect to the closest live page.
  • CSV to JSON now lands on the Log Query Workbench, which opens CSV files and exports JSON with SQL in between.
  • IP Subnet Calculator now lands on the Subnet Planner, which lays out a full VLSM plan with overlap checks.
  • Warranty Tracker now lands on the Receipt Scanner, which files the merchant, date, and total of each receipt into a ledger you can export as CSV.
  • UUID Generator and Hash Generator land on the Dev Tools page, Color Picker, Color Palette Extractor, and Screenshot to CSV on the Image Tools page, and Recipe Scaler on the Cooking page.
  • Update, 2026-10-08: the Dev Tools category has since been retired as well, so the CSV to JSON, IP Subnet Calculator, UUID Generator, and Hash Generator links now land on the Network & Sysadmin page.
changedDXF viewer now renders real drawings — text, dimensions, hatches, paper layoutsOpen DXF Viewer

The DXF viewer used to draw only outlines — now it renders the whole drawing. Open an AutoCAD .dxf and you'll see the text, dimensions, filled hatches, smooth curves, and even the laid-out paper sheet — all locally in your browser, no upload, no Autodesk account, no installer. Before this, a real architectural or mechanical drawing came through as a skeleton of lines with the labels, dimensions, and fills silently missing.

What's new

  • Text & dimensions: titles, room labels, callouts, and dimension lines now render — the annotations that make a drawing readable instead of a wireframe.
  • Hatch fills: walls, floors, and section poché show as filled regions, so floor plans and sections look like floor plans and sections.
  • Paper layouts: a Model / Paper toggle appears when a file has both. Paper view renders the title block and the scaled drawing views (viewports) inside it — the sheet the way it was laid out for printing.
  • SVG export: save the drawing as a scalable vector file, alongside the existing PNG and PDF export.

Improvements

  • Smooth curves: splines now render as true curves instead of jagged straight-line approximations.
  • Every layer listed: the layer panel shows all layers declared in the file (matching AutoCAD), not just the ones that happened to carry visible geometry.
  • Nothing dropped silently: if the viewer can't render a particular entity, it now tells you with a notice — so you're never misled into thinking a drawing loaded fully when part of it didn't.

Bug fixes

  • Fixed drag-to-pan, which could select the drawing or flash the file drop zone instead of panning.
  • Fixed text that could render upside-down.

As always: the file never leaves your device.

addedLog Query Workbench — SQL on your logs, locally

Drop a CSV, JSON, NDJSON, or Parquet log and query it with real SQL — joins, window functions, percentiles, the lot — entirely in your browser. The engine is DuckDB compiled to WebAssembly, so your logs and queries never leave your device. It's the "let me slice this file right now without uploading it to a SaaS" tool.

What's new

  • Log Query Workbench: a full SQL workbench for log and tabular data. Query files locally, with results in a virtual-scrolled grid built for large result sets.
  • One-click analyses: it detects log columns (ip, status, latency, path, timestamp) and generates the SQL for top talkers, status-class-over-time, 4xx/5xx error spikes, slowest endpoints (p95/p99), request volume by hour, and an auth-failure timeline. The generated SQL drops into the editor so you can tweak it.
  • Schema browser: every loaded file shows up with auto-detected column types and row counts; click a table to start a query.
  • Export anywhere: send query results out as CSV, JSON, or Parquet.
  • Agent-callable: window.loft.tools.invoke('log-query-workbench', { file, sql }) runs a query headlessly over a dropped file.

Nothing uploads — open DevTools' Network tab and watch your data stay put. The DuckDB engine downloads once from a CDN on first use, then runs offline.

addedSubnet Planner — plan your IP space, visually

A real subnet planner, not just a calculator: enter a parent block and the subnet sizes you need and it lays out an optimal VLSM allocation, draws a visual map of your address space, flags overlaps, and finds the next free block of any size. The plan is a file you own — no NetBox install, no server, no account, nothing uploaded.

What's new

  • Subnet Planner: VLSM allocation, a visual address-space map (colored by status), overlap/conflict detection across the whole plan, and a free-space finder.
  • Allocation tracker: name each subnet and tag it with VLAN, site, and status; the plan persists locally and exports as JSON or CSV (which NetBox/phpIPAM can ingest).
  • Built-in tools: a CIDR calculator (network, broadcast, range, mask ⇄ wildcard, usable hosts), supernet aggregation, and IPv6 expand/compress.
  • Import: load a CSV or JSON plan to pick up where you left off — round-trips with the spreadsheets you already use.

It's a planner and record-of-truth, not a live discovery tool (a browser can't ping-sweep or query SNMP) — import is how the current reality gets in. Everything runs in your browser.

addedAngle measure mode in CAD viewers

A new angle measure mode landed in the CAD viewer family. Click three points to get the angle between two edges — a standard CAD-review need that complements the existing distance and point measure modes. Available via the toolbar tool group and the Cmd-K command palette.

changedAutodesk-parity polish across the CAD viewer family

Three Autodesk-Viewer-class features landed across the CAD viewer family in a focused parity push:

  • Five visual styles: shaded, wireframe, shaded-with-edges, hidden-line, and x-ray. Hidden-line gives you the engineering-drawing look with edges only. X-ray makes the model translucent so you can see internal geometry at 8% opacity — the industry-standard reference look, not an opinionated brand-color version.
  • Bounding-box dimensions overlay: X, Y, and Z extents of the loaded model in your selected measurement unit, with axis colors matching the 3D convention (X red, Y green, Z blue). Auto-hides Z for 2D viewers.
  • Section box with six planes: previous section mode was a single plane. The new box mode gives you X-min, X-max, Y-min, Y-max, Z-min, and Z-max sliders so you can carve out any axis-aligned region of the model — the standard CAD-review tool for inspecting an interior cavity.

Phase A also fixed a STEP-parsing bug where the JDC4 model was rendering three phantom rod-shapes because the cylindrical surface trim-curve was being inverted. The fix extends our post-tessellation phantom-extrusion filter from cones-only to cones, cylinders, and toruses.

addedCAD viewers — editor template, mobile chrome, AR preview, sharable URLs

The new 3D and CAD viewers got the full editor template treatment, lifting them to feature parity with the rest of the Loft Tools editor surface.

What landed:

  • Command palette (Cmd-K): 26 commands across File, View, Render, Tools, Assembly, and Help groups. Fuzzy search, arrow keys, Enter to fire. The keyboard grammar matches every other editor in the suite — F to fit, M to measure, S to section, 1-6 for ortho views, Home for isometric.
  • View cube widget: top-right corner snaps the camera to any of 15 standard views.
  • Mobile chrome: a touch-optimized toolbar appears below 480px with 44px touch targets — the viewer is usable one-handed on a phone.
  • AR preview: on iOS Safari, GLB files can launch into Quick Look's room-scale AR view. Drop a model from a vendor page and walk around it at 1:1 scale.
  • Sharable URLs: the current view (camera angle, render mode, section state) encodes into the URL hash. Copy the link, paste it, and the recipient lands on exactly your view.
  • Bundled sample files: each viewer ships with at least one sample model so you can try it without finding a file first.
  • Print panel: print the current view with a clean header and dimensions.

The CAD splash screen was also brought into alignment with the Gerber viewer's source-of-truth dimensions so the two viewer families feel like siblings.

addedGLB animation playback + WebXR for supported devices

GLB files with embedded animations now play in the viewer. Open a .glb from a game, simulation, or product visualization and the command palette grows an Animation group with a Play entry per detected clip plus a Pause command.

The same release added a WebXR / VR mode toggle across all six mesh viewers (STL, OBJ, PLY, GLB, 3MF, STEP). On a device with a WebXR-compatible headset, the "Enter VR mode" command drops you into a room-scale immersive view of the loaded model. On devices without XR support the entry stays hidden.

addedMarkup overlay for CAD review — rectangles, arrows, notes

A click-to-draw markup layer landed on the CAD viewers — the kind of annotation surface engineers and designers use in Autodesk Viewer to flag a region during a design review.

Three markup tools:

  • Rectangle: two clicks define a bounding-box outline with an optional label
  • Arrow / line: two clicks define a callout arrow
  • Note: one click drops a numbered note with editable inline text

Markups are stored per file in your browser's local storage, so reopening the same model brings them back. They auto-sync across tabs via the storage event, and their coordinates are normalized so resizing the window doesn't shift them. Pointer events bypass to the underlying viewer when no markup tool is active, so orbit and measure stay live alongside annotations.

changedSTEP assembly tree shows real part names + properties

STEP files with multi-part assemblies now show real part names in the assembly tree instead of "Mesh 1 / Mesh 2 / Mesh 11". The parser was pulling only the first PRODUCT name and suffixing shell indices; the fix walks all products and maps each shell to its real name.

The same release added a per-part properties panel: select any part in the assembly tree and a key-value table surfaces its STEP-encoded ID, name, and description. This is the same metadata Autodesk Viewer and Fusion 360 surface when you select a component — useful for cross-referencing parts against a bill-of-materials or a CAD-team's part catalog.

added3D and CAD viewer family — seven new tools

Loft Tools now has a full 3D and CAD viewer family. Seven file formats are supported, all running locally in your browser — no uploads, no Autodesk account, no installer.

Formats supported:

  • STL — the standard 3D-printing mesh format
  • OBJ — the long-standing mesh interchange format
  • PLY — common in 3D scanning and academic geometry
  • GLB — binary glTF with materials and animations
  • 3MF — Microsoft's modern 3D-print format with units and color
  • STEP — the heavyweight: full B-rep CAD assemblies from SolidWorks, Fusion, NX, CATIA, Onshape, and more
  • DXF — AutoCAD's 2D drawing format

What you can do with them:

  • Orbit, pan, and zoom with mouse, trackpad, and touch
  • Snap to standard views — top, front, side, isometric — via a corner view-cube widget
  • Measure distances and points with a measure tool that snaps to vertices and edges
  • Section through the model with a clipping plane to inspect interiors
  • Switch render modes between shaded, wireframe, shaded-with-edges, and hidden-line
  • Browse the assembly tree on multi-part STEP files — drill into nested products and isolate components

Everything runs on a new in-browser CAD kernel built specifically for this — no thin wrapper over a remote service. Files never leave your device.

changedGerber Viewer right pane is now actionableOpen Gerber Viewer

The Gerber Viewer's aperture and drill panels used to be inert lists of data. Now every aperture and drill row is clickable — tap a row and the viewport recenters on the first flash of that D-code while the renderer paints a selection ring on the target pad.

More:

  • Click any aperture row to highlight every flash on the board — a second click clears the highlight. Toggling the parent layer hides the contribution automatically.
  • Click a copper trace in Inspect mode to pin its width as a measurement — the renderer drops a perpendicular crossbar with the width value labeled, so you can document conductor widths without re-measuring.
  • The trace-width probe now runs in the default select mode, not just Inspect — hover any copper trace and read the width live.
  • Aperture column sorting now announces sort state to screen readers.
  • PNG/SVG/DXF export errors surface as in-app toasts instead of browser alerts.
fixedGerber Viewer — thermal-relief pads and SVG export rewriteOpen Gerber Viewer

Two correctness fixes in Gerber Viewer's render pipeline.

Thermal-relief (AMTHERM) pads now render as the correct wagon-wheel pinwheel shape in the WebGL fallback path. Previously the four rect cuts were dropped, producing a filled inner pad surrounded by a continuous ring — visually wrong on any board using thermal reliefs to connect pads to copper pour.

The SVG export got a full rewrite. Three compounding bugs in the previous version meant export rarely matched the canvas render:

  • Polarity was ignored — every chunk painted in copper color regardless of LPD/LPC state. Thermal-relief cuts, copper-pour cutouts, and soldermask openings all rendered solid.
  • Soldermask was inverted — chunks represent openings in the mask, not the mask itself, but the exporter painted them as solid mask color.
  • Annular rings now emit as evenodd fill paths instead of stroked circles, which is more reliable across renderers like Inkscape and Illustrator.

The rewrite uses per-layer SVG <mask> elements as the polarity arithmetic, mirroring how the canvas renderer composes layers.

fixedCalendar events generated with truly random IDs

The ICS calendar event generator used to fall back to Math.random() for event UIDs on browsers that lacked a built-in UUID API. It now uses cryptographically strong randomness in all cases, so generated events cannot be made to collide with another calendar entry on import.

fixedGerber viewer: polish round on render correctnessOpen Gerber Viewer

A focused polish pass after side-by-side comparison against tracespace, pcb-tools, and KiCad GerbView.

  • Thermal pads. Aperture macro primitive 7 (the cross-hair pad) now renders as a true pinwheel — annular ring with four rectangular cuts subtracted — instead of a plus-sign blob with the inner pad missing.
  • Silk over pads. Silkscreen ink no longer paints over pad openings, drill holes, or past the board outline. Real PCB fab processes don't deposit ink on bare metal; files often ship with silk crossing pads, and the viewer now clips that out on both Canvas2D and WebGL paths.
  • Per-flash transforms (X3 %LM/%LR/%LS). Modern KiCad 7+, Altium, and Eagle exports request per-flash mirror, rotation, and scale on aperture flashes. Previously dropped silently, which made silk text appear too big, oriented wrong, or back-to-front on bottom layers. Now applied correctly.
  • GPU paste color. Solderpaste over copper no longer renders as a tan/yellow opaque blob in GPU mode — caused by a premultiplied-alpha mismatch between the shader and the browser compositor.
  • Other fixes. Trace mode now picks the stroke body, not just pad centers, so clicking anywhere on a trace highlights its net. WebGL fallback no longer drops arc segments from fill chunks. Default tool mode is now pan (matches Tracespace / JLCPCB / Altium365 / KiCad convention) so drag actually does something on first load. Space-bar pan no longer re-fires the last-clicked button.
addedGerber viewer: flex / rigid-flex PCB supportOpen Gerber Viewer

The viewer now understands flex and rigid-flex board files. New layer kinds: coverlay (amber translucent), stiffener (opaque grey FR-4), and bondply (warm adhesive). Detection reads both X2 metadata (Coverlay / Stiffener / Bondply file functions per the Ucamco spec) and filename patterns for legacy archives.

The Board Info panel now shows a "Stackup" view when the file ships with material-stackup metadata, rendering the cross-section as a colored vertical legend that matches the canvas. Boards are auto-classified as rigid, flex, or rigid-flex based on stackup composition. Automatic IPC-2223 bend-radius calculations: 6× total flex thickness for static bends, 8× for dynamic, 15× for multilayer flex.

changedGerber viewer: real PCB rendering + X2/X3 metadata + diff modeOpen Gerber Viewer

The Gerber viewer just stopped looking like Gerber files and started looking like real PCBs. A KiCad export that previously rendered as a mustard-yellow mess now shows the green soldermask, exposed gold pads, dark drill holes, and FR-4 tan substrate you'd expect.

  • Faithful colors and layers. Soldermask is properly translucent green with gold pads showing through, drill holes punch through as dark holes, silkscreen sits at a sensible weight, and copper pours fill solid instead of looking like sparse threads.
  • Smart layer detection. Recognizes French and German KiCad exports (Cuivre, Composant, Kupfer, Bestueckung), Eagle two-letter extensions (.GTL, .GBL, etc.), and reads modern X2/X3 metadata directly from the file for unambiguous detection. A pre-canvas confirmation dialog lets you fix or drop misdetected layers before viewing.
  • Diff mode. Drop a second archive to compare two fab revisions side-by-side with a draggable slider divider, or use XOR to make added/removed copper pop in cyan/magenta. Layer toggles mirror across both archives so picking copper on one shows copper on both.
  • Performance. Idle CPU on a 100k-chunk board dropped from ~60% to ~0% while preserving 60fps response, thanks to a frame-skip loop that only redraws when something actually changed.
  • Industry conventions. Solderpaste hidden by default (assembly-only), bottom-side layers hidden by default (matches CAM350 / GerbView), benign tracespace warnings filtered out so the warning chip only flags real issues.
fixedGerber viewer: unit toggle now respected everywhereOpen Gerber Viewer

The mm/inch toggle was being ignored in five display surfaces. When the toggle was set to inches, several panels still displayed millimeter values with an "in" suffix slapped on the end. Fixed sites:

  • Aperture Table size column (a 1.5 mm circle was reading as "⌀1.500 in")
  • DRC report markdown coordinates
  • Reference pad label coordinates
  • Measurement TSV/Markdown export
  • Status bar cursor X/Y, hover pad coords, and trace probe width

All now route through a single unit-conversion helper. The Netlist CSV download intentionally keeps raw millimeter values for downstream machine consumption.

addedInspect any pad to read its net, refdes, pin, and component info

Modern Gerber files carry rich metadata about every pad — the viewer now surfaces it. The new Inspect mode lets you click any pad to read its net name, reference designator, pin number, component value, footprint, mount type, rotation, and aperture function. Click a net name to highlight every pad on that net across the board.

The Netlist panel now lists canonical nets sorted by pad count when X2 metadata is available, with click-to-highlight for any net. The Aperture Table gained an "Fn" column showing pad function (SMD pad, via pad, BGA pad, etc.). The Job Info panel reads .gbrjob companion files for generation software, creation date, project ID, board thickness, finish, and copper weight.

When a layer is detected by X2 metadata rather than filename guessing, the detection row shows it so you understand why a layer was tagged the way it was.

removedText-tools cleanup — 21 commodity transforms retired

Phase 1 of the AI-hard-moat pivot. Twenty-one text and design transforms that any chat assistant solves in two seconds were retired, so the catalogue focuses on tools where local compute and file-binary handling actually matter.

  • Novelty text generators removed (5 tools, return 410 Gone): zalgo text, fancy text generator, ASCII art generator, strikethrough text, small-text generator.
  • Commodity text utilities removed (11 tools, redirect to category): lorem ipsum, reverse text, case converter, sort lines, remove duplicate lines, remove extra whitespace, find-and-replace, essay word counter, reading-time estimator, word-frequency counter, readability score, passive-voice detector.
  • Random-name and random-team generators retired — Google's SERP widget already answers these in 0.5 seconds.
  • Design commodities removed — color-gradient generator and pattern generator (Coolors and the OS color picker own these).

Copy honesty sweep: removed every "ad-free" / "no advertising" / "zero ads" claim across the site (ads are planned for the free tier in a later phase), and pulled the "built in the open" framing since the codebase is closed-source. The cookies page now explains what changes when ads ship instead of promising they never will.

Cleaner card layout: tool cards now cap descriptions at three lines so the homepage and category pages render with even card heights regardless of description length.

changedDev-tools rebuilt — line-numbered editors, syntax highlighting, and a unified CSV ↔ JSON ↔ YAML converter

Every dev-tool that takes pasted text or builds a generated file got a rebuild. Plain textareas became proper code editors. Side-by-side input/output panes replaced the old two-textbox layout. JSON, CSV, and YAML conversions consolidated into one bidirectional tool that auto-detects what you pasted.

Line numbers + syntax highlighting on every output

Every output pane now shows numbered lines and proper colour coding. JSON keys go cyan, strings green, numbers and booleans orange. The same treatment applies to XML, YAML, CSS, HTML, JavaScript, SQL, Markdown, and JWT decoded payloads. Highlighting loads on demand per language so the page stays light.

The input side stays a plain monospace textarea — that's a deliberate choice. Highlighting while you type breaks cursor placement and copy-paste in browsers; we'd rather you have a textarea that behaves like a textarea, with the highlight reserved for the formatted output you actually want to read or copy.

One bidirectional converter for CSV, JSON, and YAML

Previously we shipped three separate tools: CSV → JSON, JSON → CSV, and YAML → JSON. They were the same tool with the input and output swapped. Now there's one tool with two format dropdowns and a swap button between the panes.

  • /tools/dev-tools/csv-to-json — CSV in, JSON out (default).
  • /tools/dev-tools/json-to-csv — same tool, JSON → CSV by default. URL preserved for SEO and bookmarks.
  • /tools/dev-tools/yaml-to-json — same tool, YAML → JSON by default.
  • /tools/dev-tools/json-to-yaml — same tool, JSON → YAML by default.

Click the round arrow between panes to swap source and target on the fly. Toggle "Auto-detect" and the tool sniffs the format of whatever you paste. Status chips below each pane tell you how many rows / columns were detected and which delimiter the parser picked.

New per-tool wins

JSON formatter — two new toggles in Advanced Options. BigInt-safe quotes integers larger than 2^53 before parsing so they survive the round-trip without losing precision (banking IDs, Twitter snowflakes, distributed-system tokens — anything that gets silently corrupted by JSON.parse). Auto-repair strips trailing commas, quotes unquoted keys, normalises single-quoted strings, lowercases True/False/None. Useful for Python or JS-object-literal copy-pastes.

Hash generator — pick from MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 (turn each on or off independently). Switch to HMAC mode and provide a shared secret to authenticate a payload. Paste a known hash into the Expected hash field for an instant match check across every enabled algorithm at once.

Markdown to HTML — DOMPurify sanitization is on by default with a green "Sanitized" chip when active. Toggle it off and the chip turns amber to remind you the raw HTML is unsafe to render unless you trust the input.

Timestamp converter — completely rebuilt. A live "current epoch" ticker at the top updates every second in seconds / milliseconds / microseconds, each one click-to-copy. Below: input format (Unix-s / Unix-ms / Date-string), timezone selector, and an All-Formats output covering Unix, ISO 8601, RFC 2822, Local, and Relative time. The new Code snippets panel below shows ready-to-paste expressions for that exact moment in JavaScript, Python, Go, Rust, PostgreSQL, MySQL, Bash, and ISO 8601.

UUID generator — auto-generates one UUID on page load (no more empty output). Choose v4 (random) or v7 (timestamp-ordered). Format options for braces, no-hyphens, uppercase, URN. New Decode field: paste a UUID and we extract its version, variant, and (for v1 / v7) the embedded timestamp.

URL encoder/decoder — new URL inspector view appears in the Tips slot when you decode a valid URL. The pasted URL splits into protocol / host / path / query-params / fragment so you can inspect each piece individually.

HTML minifier — new Preserve template syntax toggle. Minify a Blade / EJS / Smarty / Handlebars / PHP template and the {{ … }}, <?= … ?>, {% … %}, <% … %> blocks survive intact while the surrounding HTML still gets crushed.

JWT decoder — claim-validation chips. When the token has an exp claim that's already passed, a red Token expired chip shows. Standard claims iss, sub, aud are surfaced when present.

Regex tester + Diff checker — both now ship with default sample input so the result panel never starts empty. Replace the sample to test your own pattern / your own diff pair.

Examples + Copy + Download on every tool

Every tool's input pane has an Examples dropdown with one or two sample inputs you can load with a click. Every output pane has a Copy button (top-right, where you'd expect) and a Download button beside it that saves the output as the right file type — .json, .css, .min.js, .htaccess, sitemap.xml, uuids.txt, etc.

Advanced Options and Tips live in collapsible cards beneath the panes. Open or close once and we remember your preference for next time.

Why this took a rebuild instead of a polish

The old layout was two plain textareas with a tiny center column for controls. No line numbers, no highlight, no Copy on the output, no Examples menu, no Download. We could have papered over each gap one tool at a time, but eight separate text-tool migrations are coming and they all need the same chrome. Rebuilding the underlying template once means every text-flavored tool the site ships from now on inherits the same workspace UX.