Skip to content

v0.30.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Oct 19:17
· 5 commits to master since this release
90dd910

[0.30.0] - 2026-10-27

Added

  • Align and distribute selected nodes (TRS-79) — with two or more nodes selected, right-click one of them for Align (Left, Right, Top, Bottom, Centre on Vertical Line, Centre on Horizontal Line) or Distribute (Horizontally, Vertically). Centre on Vertical Line puts the nodes' centres on one vertical line (same x); Centre on Horizontal Line puts them on one horizontal line (same y). Align uses the selection's bounding box. Distribute keeps the outer two nodes fixed and spaces the others with equal gaps between edges. Expanded nodes, including grouped nodes whose group is expanded, move. A selection that includes a collapsed subcircuit block or one of its members is refused with a message that names the subcircuit, including after the subcircuit was collapsed while its members were selected. Undo Layout in the same menu reverts the last align or distribute, as long as no other project edit has been made since. There is no keyboard shortcut; snap to grid and auto-arrange are not included.
  • Snap nodes to grid (TRS-80) — View > Snap to Grid makes dragged nodes snap to ImNodes' 24 px grid. It is off by default and lasts for the session only. Right-click a selected node for Snap selection to grid, which rounds the selected nodes onto the grid whether or not drag snapping is on. A selection that includes a collapsed subcircuit is refused, as with align.

Fixed

  • Node colours show the right hue — the per-type node colour was packed as ARGB but ImGui reads IM_COL32 (0xAABBGGRR), so red and blue were swapped on every type (the ADC rendered orange). themeColor() now returns the IM_COL32 layout. The new themeColor uses the IM_COL32 channel order test fails on the old packing.
  • Node title bars take their type colour — ImNodes copies the title-bar colour at BeginNode, but the widget pushed it after, so every node kept the default grey. The colour is now pushed before BeginNode for plain nodes and collapsed group blocks.
  • Schematic symbols are centred on their node body — symbols were drawn at hard-coded offsets (about 8 px left and 13 px above the body centre). Plain nodes centre the symbol on their 96×64 body, measured from the layout cursor. A collapsed group block has no fixed body: its symbol is centred on the block and in the free slot above its Expand button, so it no longer sits under Expand or touches the "(no external connections)" text.

Changed

  • Node pins share rows, and long titles are trimmed (#173) — a plain node puts input r and output r on the same row, so a node is max(inputs, outputs) pin rows tall instead of inputs + outputs. A 1-in/1-out node is one pin row shorter than before and the same height as a 0-in/1-out generator. Titles wider than the 96 px body are trimmed with ..., so the node stays at body width plus node padding. Collapsed group blocks are unchanged.
  • Schematic symbols share one design box (#173) — every node glyph is drawn inside one 48×32 box centred on the 96×64 body, with the same 2 px stroke and terminal leads to the box edge. The ATT and M labels share one slot below the box. Equalizer, ADC, and Mixer keep a 20 px minimum size at 1x. The Unknown kind now draws a dashed frame with a vector "?" at half alpha, where it drew nothing before. drawSchematicSymbol() keeps its signature; test_schematic_symbols checks the box, the size floor, and the Unknown glyph.