Skip to content
OpenChipwiki

Changelog

Changes worth knowing about: new features, changed defaults, corrected errors. Not typo fixes.

Dates are when the change landed, not when it was released.

Four app fixes.

  • Blood-mimicking analog is now 33.5 % glycerol by volume, about 3.5 mPa·s at 20 °C — the high-shear blood viscosity its description promised. It was 40 %, which computes to about 4.8 mPa·s.
  • Edge clearance now measures a port by the boss it prints, so a luer slip near the edge is measured at 5.9 mm across rather than 4.27 mm. Ports close to an edge may now show a channel-near-boundary caution they did not before; the rim it reports is the real one.
  • Explode works on glass-slide chips, lifting the glass off the plate.
  • Design-check thresholds are saved in your browser between sessions. They are still not part of the project file.

The whole wiki re-checked against the code. Every page that documents the app was verified against version 1.0.0’s source. Corrections a reader would notice:

  • Printer profiles. You change a project’s printer under Settings → Project settings… → Printer, not from the CAD panel, which has no such editor.
  • Wall spacing. On a default chip, channels-too-close compares against the larger of the minimum printable wall and the chip’s 2 mm wall thickness, so a wall-test ladder warns on every pair, not only the tight ones.
  • port-protrusion. Its threshold is twice the minimum printable wall, not twice the printer’s minimum feature size.
  • Generating a chip with AI. channels-too-close is a caution, not a risk, and there is no check for a port with no fluid.
  • Fluid properties. Glycerol blends are computed at the fluid’s default inlet temperature, not at whatever temperature you later set; the 50 % / 80 % viscosity figures are by mass.
  • Fluid dynamics. Flow rates are saved with the project; run duration and the wash multiplier are not.
  • Pressure drop. Resistance through a taper is now integrated slice by slice, not taken from the average section.
  • The 3D preview. Explode is for two-piece chips only, and the camera frames the model once rather than on every change.
  • Drawing. Escape ends a channel run but keeps the draw tool.
  • Mixing chambers. Chambers are not part of the channel-spacing check.

New: Select all channels, Design with AI and the empty-canvas card, the glass-slide details in exports, hose barbs, and the papers each template is based on.

OpenChip has a DOI. Version 1.0.0 is archived on Zenodo as 10.5281/zenodo.23461556. The citation on Citing OpenChip includes it, and every page of this wiki now links to the source on GitHub from the top bar.

Templates credit their sources. The herringbone, spiral, gradient-generator and flow-focusing droplet templates now name the paper each geometry descends from, in the template’s detail view and on Templates. The glycerol–water viscosity model cites Cheng (2008) in full.

Version 1.0.0, the first public release. The source is now on GitHub at github.com/Jujified/OpenChip, under the MIT License, and bug reports go to its issue tracker. See Contributing and Install and run.

Design with AI. Describe a chip in plain English and let an AI assistant lay it out. The new Design with AI dialog — in the top bar, on the first Library card, and on an empty canvas — writes the prompt with your printer profile included, offers the openchip-design skill as a download for the Claude app or a one-line install for coding agents, and opens the .openchip file the assistant hands back when you drop it in. OpenChip itself sends nothing. See Generating a chip with AI.

Port bosses get a rounded base. The corner where a boss or pedestal meets the chip face is now filleted, 0.5 mm by default, because a sharp inside corner is where a printed boss cracks off. Luer-lock hubs stay sharp so the collar can seat. The new Base fillet field in the inspector sets it, and 0 turns it off. Projects saved earlier pick up the default too, so an older chip with bosses exports slightly differently. See The base fillet.

Resize every channel at once. A Select all channels button in the inspector selects every segment, and with two or more selected, Channel size sets them all to one width. If they differ now, the field says Mixed and a note warns that they’ll all become the new size, tapers included. See Sizing every channel at once.

Typing a number is one undo step, and Escape puts it back. Every keystroke in an inspector number field used to be its own undo step and its own rebuild, so typing 12.5 took three undos to reverse. Now the whole edit is one step, and Escape in the field restores the value it had before you started.

Editing stays smooth on large designs. The design checks, the autosave and the canvas redraw all used to run inside every frame of a drag. On the gradient generator a short drag had a dozen frames that took over 50 ms; it now has two. The first load is also about 30% smaller, and the 3D view no longer redraws while nothing is moving.

Backspace in a dialog stays in the dialog. With Settings or another dialog open, Backspace deleted whatever was selected on the canvas behind it, and Escape closed the dialog and cleared the selection too. Keys pressed in a dialog, a menu or on a focused button now only reach that control.

Opening the Fluid tab no longer marks the project unsaved. The default fluids and port assignments are worked out when the tab is shown. They are saved once you change one.

Fine channels with viscous fluids get a flow estimate. A connected network of very narrow channels carrying something like 99% glycerol could be reported as “isolated from any outlet” because the numbers involved were so small. It now solves.

Dimension markers stop at their neighbours. Dragging a marker past the next one along a segment used to pick up that marker as well, or leave two stacked on the same spot. A dragged marker now stops just short of its neighbours.

The trapped-resin estimate uses the channel’s real shape. Round and trapezoid channels were counted as rectangles, overstating a round channel’s volume by about 27%.

Template channel lengths follow the curves. The Library measured each segment as a straight line, so templates with bends showed a shorter path than they have.

Port sockets in the OpenSCAD file cut cleanly through the top face. They ended exactly on it, which OpenSCAD’s preview shows as flicker and a render can close over with a thin skin. They now run a hundredth of a millimetre past it, as the STL always did.

An autosaved draft from an older version fills in missing settings. A draft saved before a setting existed now gets that setting’s default when it is restored, the same as an opened file, rather than failing on the first thing that reads it.

Luer-lock ports have a thread and their whole taper. The port cut a wide counterbore that removed the thread it was meant to hold and the top 5.5 mm of the 7.5 mm taper, which left a plain hole sealing over about 2 mm. The boss is now a hub with the full taper down its middle and a thread rib on its outside, so the male collar screws down over it. Where the collar reaches below the chip face, a ring-shaped groove is cut around the hub for it. A new Collar clearance field sets the groove’s width. The OpenSCAD export now builds the thread as well. See Ports and fittings.

Tapered channels report the right pressure drop. Resistance was taken from a segment’s average cross-section, but it goes as the fourth power of width, so a taper came out several times too easy to push through. Wall shear was off by more. Both are now integrated along the channel. Channels of constant size give the same numbers as before.

Drainage vents are in the OpenSCAD file. The STL had them and the .scad did not. A vent left behind on a deleted node no longer counts as drainage either.

Autosave tells you when a project is too big for it. Browser storage holds about 5 MB, and a few high-resolution snapshots can fill it. Autosave used to stop without a word and later “restore” a stale copy. Now it keeps your design and leaves the images out, saying so once, and if even that does not fit it says autosave is off and removes the stale copy.

Undo mid-drawing no longer breaks the file. Undoing while drawing, or opening a template mid-run, made the next click link a new channel to a node that no longer existed, and the project would not open again. The next click now starts a fresh run.

Ctrl-click inserts a node on Windows and Linux, as the help sheet says. It only worked with ⌘ before.

Clicking a node no longer costs you your redo. A plain click to select pushed an undo step and cleared redo. Only a drag that moves something does now.

The 3D preview no longer runs out of memory. Every rebuild leaked several megabytes, so after a few hundred edits the preview and export stalled.

A tapered segment no longer locks its own end nodes. Setting a width on a segment’s end pins a dimension marker there, and a marker pinned to an end sits exactly on top of that node. The canvas ranked the marker above the node, so once a segment was tapered its ports and corners could not be clicked, grabbed or moved at all — the click selected the segment instead. Nodes now win under the Select tool, which is the tool that moves them; the Dimension tool still takes the marker, which is the tool that drags those.

Backspace is in the help sheet. Backspace has always removed the selection alongside Delete, but ? listed only Delete — the key many laptops do not have. See Keyboard shortcuts.

The small print is legible. Units inside inputs, ruler numerals, panel section headings, menu shortcut hints and the mono readouts throughout the app were drawn in a tier meant for hairlines, at roughly 2.5:1 against their background. They now use one that clears the 4.5:1 minimum for body text, in both light and dark.

A chamber on a height-tapered channel sits where its channel does. Chambers were placed using the channel size at the far end of the segment they hang off, so on a channel whose height tapered they sat up to half a millimetre out and left a step where the two met. The OpenSCAD export had the same fault in its port bores, which meant the .scad and the .stl of one design were not the same solid. Both now read the size at the end they actually touch. Chips with a uniform channel height are unaffected.

A Claude Code skill that designs a chip from a description. Describe what the chip should do — “a serpentine mixer for two dyes”, “four concentrations from two syringes” — to a Claude Code session working in an OpenChip checkout, and it lays out the channel network, runs it through the same checks as the Design checks panel, and hands back a checked, ready-to-open .openchip file. See Generating a chip with AI.

View-snap buttons in the 3D preview. Top, Front and Right point the camera straight down one axis in orthographic projection, fit to the chip — the view for checking that two channels which should line up actually do, without perspective bending the judgment. A Persp / Ortho button next to them swaps projection by hand, in place; orbiting away from an axis snap reverts to perspective on its own, since the view is no longer axis-aligned once it moves. See Snapping to a view.

Glass-slide chips. A third split type. The chip prints open-faced with a pocket cut for a glass microscope slide, and the slide is bonded on afterwards as the lid — flat optical glass instead of a printed surface. The slide’s width, length and thickness are editable, with fit clearance, bond gap and pocket offset under Advanced, and the panel offers to resize the chip when the slide does not fit. Four checks come with it, of which port-under-slide is the one to read: a port under the glass is sealed by it. See Capping with a glass slide.

A draft saved by an older build no longer breaks on a new chip parameter. Browser-storage drafts replaced the defaults wholesale, so a field added after the draft was written came back undefined and the first thing to read it threw. Opening a .openchip file has always filled such fields in; the draft now gets the same treatment.

A cursor readout on the Draw canvas. The bottom-right corner now names the pointer’s position in chip millimetres. It reports the point after snapping — the coordinate a click produces — and says which snap is holding it. See Where the cursor is.

Centering. The Draw inspector’s new Position block centers the design, or just the marquee selection, in the chip. It measures footprints rather than centerlines, so a wide port on one side no longer throws the margins out. Changing the chip’s width or length still never moves your channels; it now offers to center them afterwards instead. See Centering the design.

Save a Copy. The chevron on Save opens Save and Save a Copy…, and the same item is in the Project menu. A copy is named from the project name rather than the file you have open, and — unlike Save as… — it does not become the project’s file: your next Save still writes to the original. It is there so you can keep an iteration without losing your place. See Saving a copy.

Isolate the channels. In the CAD Preview’s X-ray mode, Isolate hides the block and shows the fluid path on its own — channels, chambers, port bores and vents — drawn either Opaque or Transparent. The camera re-frames on the way in and out. It is a view of the void, not of a part; exports are unaffected. See Isolate the channels.

A segment can be tapered from the inspector. Selecting a segment now shows a Channel size row with a width for each end. Give the two ends different widths and the segment tapers between them.

Until now the only way to create a marker at all was to switch to the Dimension tool and click the channel — the inspector could edit markers that existed but never make one, so there was no direct control anywhere for “make this segment taper”. Each field pins only its own end, so leaving one unpinned still lets a taper run across a whole chain as before. See Dimension markers and lofting.

The toolbar’s Taper toggle is now called Width. It was reported as “not tapering anything”, which was fair: it only ever controlled whether channels are drawn at their real width instead of as centerlines. It sets no sizes. The T shortcut is unchanged.

Curved channels are followed more finely, and the export tier now actually refines them. Sample density along a path was capped at a flat 64 stations per segment, and that cap did not scale with the quality tier — so raising the tier for an export refined the rings around a channel without refining the path they were strung along. Every shipped template produced identical station counts at preview and export quality. Density is now driven by curvature as well as length, and both scale with the tier: a serpentine goes from 448 stations at either tier to 448 preview and 880 export.

This changes exported geometry. A curved channel is closer to the path you drew, so its swept volume shifts slightly — the effect is small and in the direction of accuracy, but a re-exported STL will not be byte-identical to an older one. Straight-run chips are unaffected.

The preview refines itself once you stop editing. A change still gets a coarse rebuild about 90 ms later, so the chip keeps up with a slider. About a third of a second after you stop, it rebuilds again at export tessellation. What is on screen at rest is now the mesh that gets written; while you are dragging it is still an approximation. See The 3D preview.

The 3D preview reads as a solid object. Flat faces were being shaded with a gradient smeared across them and port bosses melted into the chip face — the geometry kernel returns a welded mesh, and averaging normals at a shared corner tilts them. Hard edges are now shaded hard and curves stay smooth. The chip also casts a shadow, sits in a lighting environment it can reflect, and is tinted from the theme rather than always the dark-mode accent.

Snapshots can be downloaded. The confirmation after Save viewport as PNG carries a Download action, and every snapshot in the project is listed beneath the button with its own download and delete. Previously a CAD snapshot went into the project file and could not be reached again from anywhere in the app.

The Luer taper defaults were wrong, and are corrected. The luer and luer-lock port types shipped with a small-end diameter of 3.925 mm, which against a 4.27 mm large end over 7.5 mm is a 4.6 % taper wearing a 6 % label. Both now use 3.82 mm, derived as 4.27 − 0.06 × 7.5, so the geometry matches what it claims. A taper that is nominally 6 % but arithmetically 4.6 % seals on a line contact rather than a cone.

This changes exported geometry. Ports in projects saved before this date keep the values they were saved with — reapply the catalogue fitting, or set the small end to 3.82 mm by hand, to pick up the correction. The shipped counter-flow exchanger example has been updated.

The same change aligned the type defaults with the catalogue parts, so a port left on the defaults is now recognised as the Norm-Ject fitting instead of reading as unrecognised. Luer-lock defaults moved with it: boss 4 → 5 mm, thread major 7.6 → 7.7 mm, pitch 1.27 → 4.7 mm, collar 5 → 5.5 mm.

Two new port types, both male. luer-male grows a 6 % cone off the chip for a female luer to push onto, and barb prints a ridged hose-barb spigot that tubing goes straight over. Until now every port was a socket cut into the chip. See Ports and fittings.

Three new catalogue fittings, all for 0.125“ ID tubing: Male luer barb, Female luer barb, and Integral hose barb. Barb dimensions are editable fields, so other tubing sizes are reachable without a catalogue entry each.

A new design check. port-protrusion measures the wall between the bore and the outside of a male fitting where it is thinnest, and warns when it falls below twice the minimum printable wall.

The catalogue fitting picker is now a drawing. Each entry shows a dimensioned cross-section generated from its own numbers, with a solid view on a second slide — so a socket and a spigot are told apart at a glance rather than by reading.

This wiki. First publication. Every page derived from the source rather than from memory, with a sourceRefs contract and an audit that fails when a check, a schema field or a keyboard shortcut goes undocumented. See How this wiki is maintained.

Contextual help in the app. Every row in the Design checks panel now carries a Learn more link into the design-check catalogue, and the printer-profile, fluid-dynamics, split-type and export surfaces link to their explanations.

Three surfaces. The app, a landing page, and this wiki, sharing one design token file.

The following shipped before this wiki existed. They are recorded here for completeness rather than as a full history.

Starter templates. Seven geometries with previews rendered from their real channel graphs — serpentine, T-junction, Y-junction, herringbone, spiral, gradient generator and flow-focusing droplet generator. Each carries a caveat where its recreation departs from the published device. See Templates.

Real-part port catalogue. Norm-Ject luer slip, Norm-Ject luer lock, and a 1/8“ PVC tubing socket, with dimensions taken from the parts rather than from a nominal table. A port stops claiming to be a catalogue part the moment its geometry is edited away from one. See Ports and fittings.

Export for presentation. A single bundle containing the schematic, the CAD view and the heatmap, plus a composed 16:9 sheet, with vector sources re-emitted at the target DPI rather than resampled. See Export formats.

Guided tour and onboarding. First-run printer setup, and a walkthrough that marks itself seen when it starts rather than when it finishes.

Fluid dynamics. Analytical pressure, Reynolds, velocity, wall shear and residence-time estimates, heat exchange between adjacent streams, consumption planning, and heatmap export. See Fluid dynamics.

Drainage planning. Detection of enclosed cavities, unreachable regions and blind branches, with automatic vent placement. See Draining uncured resin.

Design checks. Thirteen checks across manufacturability, flow feasibility and drainage, none of which block anything.

CAD preview and export. Live solid geometry through manifold-3d, monolithic and two-piece splits, STL and OpenSCAD export.

Channel drawing. Straight and bezier segments, endpoint / grid / angle snapping, dimension markers lofting across connected chains.