pcb-rnd 3.1.4 (r38675)
~~~~~~~~~~~~~~~~~~~~~~
	[asm]
		-Add: fill in group progress when the dialog box is created so the user sees how many subcircuits are in each group

	[build]
		-Update: depend on librnd >= 4.1.0 (transition to the new font engine)

	[core]
		-Fix: ignore aux layer lines when updating subc bbox (not calling the central data update)
		-Fix: when ignoring aux layer for bbox recalc in layer obj dup, decide by source object/layer not by destination because destination layer binding may be incomplete
		-Fix: subc replace (shift+click): do not add all the floater moves onto the undo list: the whole subc is created/removed at once on redo/undo
		-Fix: be less intrusive with events and don't do a full librnd design replace on board size change - if it happens from the propedit that'd close the propedit during the GUI event which segfaults
		-Fix: gfx measure resize should use the absolute value of pixel distance, direction shouldn't matter
		-Fix: when calculating padstack bbox local clearance shall not be ignored when global clearance is 0
		-Fix: proto move needs to reverse transform dx;dy when making modifications to transformed shapes
		-Fix: drc padstack ring min thickness special casing for circle of diameter 0: should never break (used in compat pstk converter for the clearance side effect when loading e.g. geda/pcb pins)
		-Fix: find.c: line-poly and arc-poly intersection: clamp line and arc thickness after bloat subtracting bloat so they don't ever become negative; fixes the corner case when minimum copper overlap requirement is comparable to trace thickness
		-Fix: segfault on rats patch when shift-click replacing a subcircuit that had no refdes
		-Del: replace pcb_act_Export() with librnd 4.1's rnd_act_Export()
		-Add: ElementList(Need) has an optional extra argument to set the device attrib
		-Add: implement low level x and y mirror in pixmap cache render
		-Add: undoable change call for gfx mirror bits
		-Add: when importing a pixmap onto a bottom side layer, auto-set y-mirror on the gfx so it appears correctly in the most common case (photo taken of the bottom side)
		-Add: undoable prototype and shape move functions that translates the prototype by relative dx;dy coords
		-Add: PadstackMoveOrigin() performs the actual prototype transformation and moves all users of the padstack back to its original position
		-Add: negative rat thickness means size specified in pixels; also add explanation on rat_thickness conf node values
		-Add: document the doubled local clearance value bug

	[dialogs]
		-Fix: padstack proto dialog: compensate for the confusing doubled-value local clearance storage so the UI always shows consistent "clearance means gap" values
		-Add: preferences window tab "Board meta" prints a line with the loader plugin's name
		-Add: view dialog 'cycle' button to cycle through zooming onto different highlight objects

	[djopt]
		-Fix: via removal should pass on via pointer as ptr2 (ptr1 is "parent")

	[doc]
		-Add: document that padstack per shape local clearance is stored as half

	[drc_query]
		-Fix: need to strdup() all strings entered into the tree-table widget else a crash may occur on drc dialog close

	[export_bom]
		-Add: make list separator sequence configurable
		-Add: a second default template that includes the device attribute as an extra column (so that an opamp is not simply so(8) but also an lm358)

	[font2]
		-Del: PCB_WANT_FONT2: always require font2
		-Del: ./configure time option that enables font2
		-Update: tests/drc_query/invchar.ref was buggy with the old font engine because (invalid char bbox bug)
		-Fix: use the usual rendering opts (for &entity;) when checking for invalid chars in text objects

	[fontmode]
		-Fix: font v2 kerning shall be translated to &xx hex glyphs instead of decimals in font preview window
		-Fix: don't segfault when fontsave is ran outside of fontmode, but throw an error and some remarks
		-Fix: preview dialog should have only 2 widgets in VPANE
		-Fix: decoding &num from string in kerning table preview edit should use hex, not decimap
		-Add: kerning table edit: allow multiple keys in a space separated list
		-Add: sort kerning table in preview window
		-Add: the font preview window should be split by a vertical pane windget so that there's more room for the kerning table when needed
		-Add: preview dialog widget to remove a kerning table entry
		-Add: preview: save font button
		-Add: comments on which widget does what and ends where
		-Tune: rearrange help text widget in the kerning table dialog for better screen estate utilization

	[footprint]
		-Fix: common_subc: get pad's mask and paste offs and ratio play better with absolute value being 0
		-Add: common_subc: help text for generic offs and ratio parameters include hints on how to use them in practice

	[io_eagle]
		-Fix: create subc aux layer before any other layer when creating new subcircuits to avoid mixing layers

	[io_lihata]
		-Fix: font v2 kerning shall be saved with &xx hex glyphs insteadof decimals
		-Change: make board v9 the default format

	[io_pcb]
		-Fix: save attribute names and values quoted so that " and \ won't break
		-Fix: don't change drc settings in design conf when importing pcb into buffer
		-Fix: reset design conf role before low level parse so previous settings don't leak in; also fixes: don't overwrite drc settings loaded by the low level parser
		-Fix: undo partial config mods (anything in design role) when parsing a board fails

	[io_tedax]
		-Add: netlist load: save (component's) device and use it in ElementList() so the subcircuits placed get the right attribute

	[lib_compat_help]
		-Fix: when saving an smd pad in compatibility mode, double padstack global clearance but do not double the local clearance (it is already doubled)
		-Fix: compatibility pin flags: recognize "holes" (padstack has unplated drilled hole and zero dia circle copper shapes or no copper shapes)

	[propedit]
		-Add: expose gfx x and y mirror bits

	[tool_std]
		-Fix: disable footprint replace on paste when doing a selected drag-and-drop move: if footprint replace broke, it messed up the sequence and the undo seqno, while it doesn't make sense to replace footprints on selected move with shift

	[trimesh]
		-Fix: action description


pcb-rnd 3.1.3 (r38476)
~~~~~~~~~~~~~~~~~~~~~~
	[backann]
		-Fix: rats patch "already done" check: when accepting component add/del, consider the input netlist, not the edited netlist (the edited netlist will always have the modifiaction, independently of whether it's been annotated back to the schematics)
		-Add: CLI for attribute back annot: propset(), just make sure the right conf node is set

	[core]
		-Fix: typos in Net() help
		-Fix: when generating file name for saving rats patch, remove the now default .rp suffix before appending .bap
		-Fix: rats patch fwd annot verify: if a terminal is not on a net the call may return -1 (e.g. the net is missing) - accept thta as connection broken
		-Fix: rats patch: back annotation on subc del: check connectivity before connections are removed, else the actual comp del line will always be missing
		-Fix: separate netlist change event and netlist import event; clean up netlist patch list only after an import so back annotation entries are not lost accidentally (because they are already done on the board) without a forward annotation
		-Fix: low level poly copy call should copy ->enforce_clearance so it is not lost on a through-buffer round-trip (including double clicking a polygon)
		-Fix: do not consider aux layer when sizing subcircuit bbox
		-Cleanup: rename PCB_RPE_ATTR_CHG to PCB_RPE_COMP_ATTR_CHG as it deals with components only and there would be another for nets
		-Cleanup: rename RATP_CHANGE_ATTRIB to RATP_CHANGE_COMP_ATTRIB to make room for network attributes in back annotation
		-Add: Net(remove, netname): remove a net (remove all connections of the net; back annotated)
		-Add: expose net patch remove API
		-Add: extend the rats patch API and action to take file format (more than just old/new)
		-Add: back annotation save: throw error when unknown file format is specified
		-Add: back annotation support for tEDAx backann v1
		-Add: netlist patch: introduce separate net attribute case
		-Add: netlist patch: enable saving tedax backann v2 with "attr_conn" for net attribute changes
		-Add: implement the frame (op dispatcher) of BaSubc()
		-Add: netlist patch: support for comp_add and comp_del; implement BaSubc() action for back annotating subc add/del
		-Add: netlist patch: implement is_subc_created_on_patch() to avoid duplicate adds/removes
		-Add: when a subc is added for back annotation, also add its main attributes (footprint and value) when available
		-Add: when back-annot removing a subc, first break all its connections (also back-annot)
		-Add: conf node for enabling subc attribute change back annotation
		-Add: make rats_patch_is_subc_referenced() public for propedit
		-Add: file format selector in rats patch export (back annotation export) dialog
		-Add: action BaConn() for adding a new connection to the netlist patch
		-Add: netlist patch: implement low level break conn for single terminal and all selected terminals; BaConn() operation: remove
		-Add: prepare the font save action for saving in different font formats
		-Add: when saving font pass on the format string so the saver can do things differently
		-Add: publish pcb_font_draw_atom() for fontmode preview dialog
		-Add: expose arc centerline bbox calculation function (to be used in fontmode)

	[dialogs]
		-Add: netlist dialog: button for breaking connection (removing a terminal from the conn list of a net), back annotatable
		-Add: netlist dialog: button for adding terminals to nets (with back annotation)
		-Add: netlist dialog: button tooltips mention if a change is back annotated
		-Add: netlist dialog: frame a group of back annotated buttons
		-Add: netlist dialog: del net button
		-Add: netlist dialog: don't let a terminal back-annotation-connect to a net if the terminal is already connected to a net
		-Add: netlist patch dialog
		-Add: netlist patch window: export button
		-Add: netlist patch dialog: remove button
		-Add: netlist patch dialog: print comp attr change differently from net attr change
		-Add: netlist patch window prints comp_add and comp_del lines
		-Add: flag edit dialog: add the same tooltip to flag names as well, check boxes are smaller, less probably to get hover
		-Change: make addconn functions public (preparation for actions)
		-Change: decouple addconn functions from the netlist dialog (preparation for actions)
		-Move: addconn functions from the dialog code to core (rats_patch) to make the functionality available in an action

	[doc]
		-Add: document new Netlist(Remove) for back annotation
		-Add: lihata board v9 (netlist patch details for comp attr and net attr)
		-Add: lihata board format: comp_add and comp_del ops for netlist patch
		-Add: document lihata board v9 upgrade on drawing area box approach instead of width/height
		-Add: empty page for documenting back annotation
		-Add: back annotation: explain how it works, list file format and software versions
		-Add: back annotation: list available operations
		-Add: back annotation: document network related operations
		-Add: back annotation: mention the back annotation window
		-Add: back annotation: add/del subc
		-Add: back annotation: claim net, replace footprint
		-Add: back annotation: attribute changes
		-Add: back annotation: board file formats and versions
		-Add: back annotation: link the pool node for historical aspects
		-Add: BaConn() and BaSubc() action doc
		-Add: backann: CLI for conn add and break: the BaConn() action
		-Add: backann: claimnet has an action for CLI
		-Add: file format doc for pcb-rnd-font-v2
		-Add: lihata versions: list changes between font v1 and font v2
		-Add: lihata versions: list board v9 change: uses font v2
		-Add: lihata board version changelog: text entity flag
		-Add: new tutorial video link

	[export_stl]
		-Fix: potentially uninited stack var options may randomly tunr cutouts on/off

	[font2]
		-Fix: io_lihata: allow lihata font to have any version integer and let the librnd parser decide if the given version is supported or not
		-Add: temporary ./configure --enable-font2 and --disable-font2; requires librnd >=4.1.0; controls config.h #define PCB_WANT_FONT2 for the new font support
		-Add: extra argument for rendering opts when font2 is enabled
		-Add: io_lihata uses font2 when enabled
		-Add: rnd_font_invalid_chars() has an extra argument in font2 API
		-Add: follow font2 API change on thin poly rendering
		-Add: implement the format selector in font save
		-Add: introduce text flag for &entity; substitution
		-Add: io_lihata warns when entity flag is saved in pre-v9 board format
		-Add: extend the low level text rendering API to receive text flags
		-Add: text rendering: execute the entity text flag
		-Add: io_lihata: save explicit glyph advance in font2
		-Add: doc: lihata format: mention nonprintable kerning table chars are in &hh hex index format
		-Add: fontmode preview: hint on key format

	[fontmode]
		-Fix: when converting a font into an editor board, the vertical blue line markers for total width are placed by the wrong calculation (calculation differing from the one done by the rendering code)
		-Fix: setxdelta: rather recalculate arc centerline bbox instead of depending on naked bbox and thickness
		-Add: store a pointer to the original font so metadata can be reproduced on save
		-Add: font2: preserve input kerning table and input entity table when converting back from graphics to font for save
		-Add: draw baseline when available
		-Add: FontBaseline() action to create or modify the baseline
		-Add: preserve tab_width and line_height on save
		-Add: font mode preview dialog and action

	[io_altium]
		-Fix: terminate reading padstack after 4 fields, even if the 4th is not a terminator
		-Add: support for global clearance (gap) for rules with all-all expression

	[io_lihata]
		-Cleanup: remove excess newlines from incompatibility list items
		-Add: EXPERIMENTAL: register board file format version 9 (mainly for the back annotation upgrade and new font support)
		-Add: introduce experimental v9 board format for the new netlist patch instructions
		-Add: support for loading and saving comp_add and comp_del netlist patches in the v9 board format
		-Add: board v9: save full drawing area box instead of just x;y (width;height) so that negative coords are fully supported by the file format
		-Add: font2: save new font fields in v9
		-Add: accept lihata format with version suffixes in the call writing font files; if format string ends in v2, set wrver to 9, put v2 in header and save in the v2 font format

	[io_pcb]
		-Add: test parse before old font open: ignore files that don't look like an old font file so syntax error is not thrown if the file is a lihata font

	[lib_bom]
		-Fix: don't crash if sort_id renters to NULL string

	[lib_polyhelp]
		-Fix: triangulate using doubles because coords are at least 32 bits but may even be 64 bits

	[menu]
		-Add: window menu item for the new back annotation dialog, key binding: {w b}
		-Add: subc context popup: back annotate add/del menu
		-Add: subc add/del back annotation (object and selected) in the back annotation menu
		-Add: font editor preview (and table edit) in maintenance

	[poly]
		-Add: #define PCB_WANT_POLYBOOL when the new polygon lib is enabled

	[propedit]
		-Fix: network attribute changes should cause net attrib netlist patch lines, not comp attrib lines
		-Add: propedit dialog: checkbox for enabling attribute back annotation
		-Add: propedit dialog: update subc attr back annotation checkbox from the config node
		-Add: propedit dialog: set backann config node when checkbox is changed
		-Add: add subc attribute changes to back annotation list when the config node enables that
		-Add: prepare the code for back annotating terminal attribute changes (attr_pin) but don't do it yet because forward annotation doesn't deliver them so they can never be removed from the patch list

	[sign]
		-Add: new repo.hu crl for 2023

	[tests]
		-Fix: menu test make clean shall remove all the .out files

	[tool_std]
		-Fix: the insert tool shouldn't allow inserting a point in a rat line (doesn't make any sense)

	[trimesh]
		-Add: new plugin; TriMesh() action and infra (triangular mesh for simulation)

	[tutorials]
		-Update: main "getting started" tutorial replaced with a new record

pcb-rnd 3.1.2 (r38167)
~~~~~~~~~~~~~~~~~~~~~~
	[acompnet]
		-Cleanup: replace compat rtree with native

	[autoplace]
		-Cleanup: replace compat rtree with native

	[autoroute]
		-Cleanup: replace compat rtree with native
		-Cleanup: remove inline, use portable RND_INLINE instead

	[build]
		-Add: ./configure --enable-polybool and --disable-polybool (default for now) to allow testing the new poly lib later on

	[ch_editpoint]
		-Cleanup: remove rtree2_compat.h dependency

	[ch_endpoint]
		-Cleanup: replace compat rtree with native

	[ch_onpoint]
		-Cleanup: replace compat rtree with native

	[core]
		-Fix: poly as-drawn frame annotation option also draws cutout contours
		-Fix: allow padstack convert from selected work in footprint edit mode
		-Fix: pcb_flag_uninit() should clear all fields (flag bits), not just the unknown-flags part
		-Fix: do not uninit flags while gui-erasing objects
		-Fix: no-effect poly clearance change operation wrarning message doesn't refer to obsolete MinClearGap() but offers modern alternatives
		-Fix: verify number of points in a simplepoly when drawing/decomposing font; skip and warn if there are too many points
		-Fix: font unlink: when the default (system) font is unlinked, cheat: make a copy and return that; this is required for the font editor because the board struct hosting the default font is soon to be free()'d
		-Fix: pstk thin draw: don't draw mech layer twice because it will make the object inivisible in xor-draw
		-Fix: remove padstack mirror optimization: there are cases when ps->y is 0 but we still need to change the coords
		-Fix: revert should do the same PCB drawing area bbox tuning that normal load does, when pcb is a footprint; this fixes the problem of not updating drawing area of growing footprint on reload-on-change (which is really a revert)
		-Fix: when subc is moved to buffer (most notably to removelist), rebind subc layers to the buffer after all the objects have been moved; without this, free'ing the subc (e.g. clearing the undo list which clears the removelist which frees all objects there) would leave ghost objects on the rtrees because at subc free the rtree is NULL so child objects are not removed from the rtree but those child objects are freed
		-Cleanup: rename pcb_flag_erase() to pcb_flag_uninit(), as "erase" is used in the gui redraw sense; the confusing terminology already caused the call to be in the wrong place for all objects
		-Cleanup: remove inline, use portable RND_INLINE instead
		-Cleanup: centralzie flag uninit on object free, into obj_common
		-Cleanup: remove old rtree compat, use native rtree instead
		-Cleanup: remove unused/unimplemented function proto (pstk clear draw)
		-Add: more sophisticated thindraw shape selection for drawing from buffer: pick top copper or bottom copper first and fall back to first shape only if those are not found; this avoids picking the mech shape for the main contour

	[dialogs]
		-Cleanup: replace compat rtree dir consts with native
		-Fix: don't crash when help text is NULL (not available) for a parametric library entry
		-Fix: library parametric window command generator: corner case when there are no optional parameters (force generating all parameters that are not unknown)

	[distalign]
		-Cleanup: remove inline, use portable RND_INLINE instead

	[doc]
		-Add: document the templating system of the new export_bom plugin
		-Add: link in export_bom doc
		-Add: export_bom: document skip_if_empty and skip_if_nonempty templates
		-Add: export_xy skip_if_nonempty
		-Add: document outline and cutout mechanism including centerline defined cutouts and slots

	[draw_fab]
		-Cleanup: remove rtree compatibility dependency on determining if rtree is empty

	[export_bom]
		-Add: rewrite the plugin; switch over from hardwired format to templates (user configurable)	[export_openscad]
		-Fix: min-max value for fs so it can be changed from the GUI
		-Fix: adjust model placement so it considers top and bottom copper thickness
		-Cleanup: remove rtree compat dependency
		-Add: support for --fs to set arc resolution
		-Add: export options to override default colors
		-Add: export cutouts & slots
		-Add: make exporting cutouts optional

	[export_ps]
		-Fix: finish previous file before starting a new file (fixes missing showpages)

	[export_stl]
		-Fix: switch over to generate all cutouts as an rnd_polyarea_t so that overlapping cutouts wouldn't cause broken export anymore
		-Cleanup: remove rtree2_compat.h dependency

	[export_xy]
		-Update: export_xy doesn't depend on export_bom anymore
		-Add: skip_if_nonempty template, to control which subcircuits to skip
		-Add: default templates: skip subcircuits that have the dnp attribute set

	[exto_std]
		-Cleanup: replace compat rtree entry with native

	[fontmode]
		-Fix: RND_EVENT_DESIGN_SET_CURRENT always requires an argument, even if it is NULL

	[footprint]
		-Add: openscad model for all parametric footprints in the default lib
		-Add: 3d related optional arguments in parametric footprints

	[gsch2pcb-rnd]
		-Del: remove the code, replace it with a long explanation on how to substitute it

	[import_ipcd356]
		-Cleanup: replace compat rtree with native

	[import_ttf]
		-Add: slice up large polygons so the resulting simplepoly always respects simplepoly size limitation

	[io_altium]
		-Cleanup: replace compat rtree with native

	[io_autotrax]
		-Cleanup: replace compat rtree with native

	[io_bxl]
		-Cleanup: replace compat rtree with native

	[io_eagle]
		-Cleanup: replace compat rtree with native

	[io_hyp]
		-Cleanup: replace compat rtree with native

	[io_kicad]
		-Cleanup: replace compat rtree with native

	[io_lihata]
		-Cleanup: replace compat rtree with native
		-Fix: when saving polygon coords in a lihata table, make sure col allocation is also set so table cols are allocated to the proper size, not to 0 size

	[io_mentor_cell]
		-Cleanup: replace compat rtree with native

	[io_pads]
		-Cleanup: replace compat rtree with native

	[io_pcb]
		-Cleanup: replace compat rtree with native

	[io_tedax]
		-Cleanup: replace compat rtree with native

	[jostle]
		-Cleanup: replace compat rtree with native

	[lib_bom]
		-Add: generic, reusable templating for BoM exporters

	[lib_compat_help]
		-Cleanup: remove rtree compat dependency from layer compat code

	[lib_polyhelp]
		-Cleanup: replace compat rtree with native
		-Add: API to generate a multi-island rnd_polyarea_t of all cutouts that are within a given contour
		-Add: topoly_cutout: include mech layer lines and arcs with their true shape so that slots work as expected

	[libcdtr]
		-Fix: there is no local genvector in pcb-rnd's src-3rd, use librnd's
		-Cleanup: remove inline, use portable RND_INLINE instead

	[millpath]
		-Cleanup: remove rtree compat dependency from toolpath calculation

	[oldactions]
		-Del: MinClearGap() action implementation
		-Add: MinClearGap() also suggests using polygon side clearance

	[polycombine]
		-Fix: set the standard clearpoly flag instead of an unknown-flag (string) on the resulting poly to get it behave as normal polygons do

	[puller]
		-Cleanup: replace compat rtree with native

	[query]
		-Fix: advanced search dialog: preserve quotes in strings in decompile

	[report]
		-Cleanup: replace compat rtree with native

	[rubberband_orig]
		-Cleanup: replace compat rtree with native

	[shape]
		-Cleanup: replace compat rtree with native

	[sketch_route]
		-Cleanup: replace compat rtree with native

	[teardrops]
		-Cleanup: replace rtree compat with native

	[util]
		-Add: warning about deprecation of the gnet-pcbrndfwd_elem script

pcb-rnd 3.1.1 (r37572)
~~~~~~~~~~~~~~~~~~~~~~
	[asm]
		-Fix: ignore subcircuits of extended objects

	[cam]
		-Fix: doc_png exports bottom side with flip_y enabled for proper layer ordering
		-Add: doc_eps job to export colored top and bottom in eps for documentation purposes
		-Add: doc_ps job, similar to doc_png and doc_eps
		-Add: doc_ps draws copper faded and silk solid for readability
		-Add: cam job for Advanced Circuits, as reported by Bdale

	[ch_endpoint]
		-Fix: remove endpoint indications (on first subsequent redraw) when tool is switched to a non-indicating one

	[core]
		-Fix: pixmap transformation: avoid sign swap in rotation
		-Fix: scale pixmaps before rotation to keep their aspect if it's not 1.000
		-Fix: find.c vs. disjoint padstacks: set all-copper-conn'd for multi-copper padstacks only if the hole that connects them are plated
		-Fix: find.c vs. disjoint padstacks: don't require plated hole for the single-copper (smd) case
		-Fix: find.c: skip checking bloated up pstk against polygon for isc if clearance is larger than bloat and there's no thermal connecting them (works around line approximation false positive isc)
		-Fix: find.c: switch over from geometric rat-end connection find to (more precise) anchor based when rat anchors are avaliable; this means the rat line is connected only to the two objects it was mapped for; fixes the bug when two nointconn lines touch at endpoint from where a rat also starts and by geometry the rat shorts to two nointconn lines making an internal connection against the user's will
		-Fix: typo: check if rat rtree exists (not padstack rtree) before looking into the rat rtree
		-Fix: when removing a layer, all layers are renumbered; shift the thermal bits (indexed by layer index) in each padstack so thermals remain on the same layer after the re-indexing
		-Fix: allow idpath data address of buffer#n to end in /
		-Fix: idpath data address lookup: boundary check on the buffer array
		-Fix: pcb_idpath2obj_in() should be able to return object from buffer if the path refers to a buffer; provide an _only() variant that excludes the buffer
		-Fix: draw code used the wrong field for applying gui xform, causing conditional jump on uninitialized value
		-Fix: when converting string to thermal bits, accept NULL as empty string
		-Add: initialize new conf node rc.path.dotdir so users can refer to their own config easier
		-Add: hid_cam: support for global opt flip_x and flip_y so that bottom side layer order can be rendered correctly
		-Add: low level cam support for force_nonepty (creates output file even if layer group is empty, overriding the export plugins normal decision, in case the plugin cooperates)

	[dialogs]
		-Fix: reapply filter after a refresh to avoid gui inconsistency between the filter entry and the tree displayed
		-Fix: library window: refresh button shouldn't crash when filter entry is empty
		-Fix: library window on parametric edit: when the parametric footprint fails to produce a valid help text, don't override the filter with NULL string (causes segf)
		-Fix: typo in load file name filter name (should be rp, not rs)
		-Fix: Save() syntax should mention the extra, optional path argument where it is available
		-Add: library window: refine filter text tooltip: mention regex and case-insensitive
		-Add: padstack dialog instance tab displays logical layer id (for reference and to ease debugging)
		-Add: open dialog: file name filtering widget when opening a board

	[doc]
		-Add: gtk4 and sch-rnd formats in datasheet
		-Add: document new openscad export features
		-Add: mention gmail is not supported
		-Add: link in route-rnd
		-Add: FAQ item about high DPI screen icon_scale
		-Add: document cam's global option flip_x and flip_y and force_nonempty option
		-Add: sch-rnd on the bridges drawing and Ringdove listing
		-Add: install resources/ when installing doc
		-Update: conf tree docs generated with the centralzied tool (removing excess pcb-rnd from titles)
		-Update: dotdir node in conf tree doc
		-Update: user manual: prefer sch-rnd over gschem
		-Update: use nlnet logo for the link

	[export_bom]
		-Fix: ignore subcircuits of extended objects

	[export_fidocadj]
		-Fix: ignore subcircuits of extended objects

	[export_gerber]
		-Add: let cam override "layer group is empty" decision

	[export_ipdcd356]
		-Fix: ignore subcircuits of extended objects

	[export_oldconn]
		-Fix: ignore subcircuits of extended objects

	[export_openscad]
		-Fix: don't hardwire pcb_ prefix in generated scad script, read it from a global var so later it can be changed
		-Add: export option 'prefix' to change module names to allow multiple exports to be used in a single large project
		-Add: do not hardwire board thickness 1.6mm but use the standard thickness query between top and bottom copper
		-Add: support for openscad-origin (object attribute) to set 0;0 of the board on the x;y plane

	[export_ps]
		-Fix: restore config after the export so that forced conf sets (like flips) are reverted
		-Add: set librnd's ps_faded before rendering a layer, depending on xform->layer_faded
		-Add: let cam override "layer group is empty" decision in both ps end eps
		-Add: --enable-flip in eps to respect flip_x and flip_y

	[export_stl]
		-Fix: ignore subcircuits of extended objects
		-Fix: initialize triangulation pool large enough to host cutout coords as well
		-Fix: use rtree search for cutout objects so that ones from subcircuits are picked up as well
		-Fix: remove temporary cutout polygons before uninitializing the cutout poly vector
		-Fix: separate export options into per format arrays so file names and other settings are remembered separately when exporting from the GUI

	[export_xy]
		-Fix: ignore subcircuits of extended objects
		-Fix: get the format enum initialized when called from the export() action
		-Add: make enum values (format template names) available for --help

	[exprot_png]
		-Fix: don't override onsolder-rendering in cam mode, let the cam rule decide

	[footprint]
		-Add: openscad: 1008, 1210, 1806, 1825, 2706 SMD model
		-Add: openscad: SOT143, SOT223, SOT25, SOT26, SOT323, SOT232D SMD model
		-Add: openscad: SOT325, SOT325, SOT23, SOT89, SC90, SOD110, SOD80, SOD87 SMD model
		-Add: openscad: SC70_3 uses SOT323 package model
		-Add: openscad: SC70-4 3D model
		-Add: openscad: SOD80 3D model compatible with minimelf
		-Add: openscad: SOD106A, MPAK 3D model
		-Add: openscad: 3 and 5 mm LEDs, TO92, TO39(-3), TO18, OSC14_8
		-Add: openscad: HC49*, HC51, TO220*, TO126, TO251, TO247, TO264
		-Add: openscad: MULTIWATT*, HEPTAWATT, PENTAWATT
		-Add: openscad: 3D model for 6x6 mm tactile switch
		-Add: openscad: BNC, DC power jack, DSUB connectors

	[menu]
		-Add: hotkey {f f s} for import (fetch) schematics

	[oldactions]
		-Fix: ignore subcircuits of extended objects when listing rotations

	[propedit]
		-Fix: relative set on geo fields is not mistaken for absolute set
		-Add: pressing enter in the value input of the "new attribute" dialog should be the same as clicking on ok
		-Add: propset(rename/a/oldname, newname) renames the attribute (in an undoable way) keeping its value

	[query]
		-Fix: query() action syntax includes the optional scope argument

	[renumber]
		-Fix: ignore subcircuits of extended objects

	[tests]
		-Fix: filter out pup soft uninit warning to reduce noise
		-Fix: strflags: wront printf format for unsigned long int in hex
		-Fix: uniq_name: wrong array index integer width for printf %d
		-Fix: cam refs: 0 is written as 0.000 in current code
		-Add: test board for different disjoint padstack-padstack touches for find.c

	[tool_std]
		-Fix: arrow tool timer drops current click timing if the board got unloaded (or switched) meanwhile, to avoid operating on invalid or background board


pcb-rnd 3.1.0 (r37222)
~~~~~~~~~~~~~~~~~~~~~~
	[asm]
		-Cleanup: rename row[] to cell[] (tree code naming convention)

	[build]
		-Cleanup: missing #include (exposed by hid.h not always included)
		-Cleanup: simplify util Makefiles using vars defined in librnd.mak
		-Fix: use detected CFLAGS for compiling utils and tests
		-Change: switch over to librnd4 installation

	[cam]
		-Fix: pass on action design as the design-to-be-exported from the cam action (the code doesn't rely on PCB anymore)

	[core]
		-Del: remove 'reverted' parameter of pcb_board_replaced() - long unused, incompatible with the GUI moved out to librnd
		-Del: config node rc/have_regex: was hardwired 1 for many many years because of genregex
		-Fix: do not export heavy terminal marking (overlay) when when export is done from the GUI
		-Fix: netlist: do not make 0-sized allocation on subnet mapping
		-Fix: crosshair shouldn't register new tools before the GUI is up
		-Fix: respect render-above/render-below setting of the GFX object when searching overlapping objects by location
		-Fix: gfx rotate operations should generate new pixel content
		-Fix: mark the drc flag "omit from list" in flag_str so that the propedit gets to display exportsel which shares the same bit
		-Fix: inhibit menu merges while creating a new board so there's no invalid menu handling by a menu update between the old board already free'd and the new board not yet created
		-Fix: do notdraw pixmap 'X' on missing pxm render if target is an exporter, not a GUI (at the moment the default should be that we are not exporting pixmaps)
		-Change: switch over to librnd's font
		-Change: mark conf setting editor.beep_when_finished obsolete

	[dialogs]
		-Del: preferences dialog, library tab: no need to free tree-table cells, librnd4 will do that
		-Fix: use the right config node path for setting CLI history size in preferences general tab
		-Fix: set expose context ->design before calling main expose
		-Fix: generic view dialog should activate global flip on preview so that the views follow board flips
		-Fix: preferences lib tab: memleak on excess strdup() for 'path expanded' label
		-Fix: preferences dialog, library tab: used the wrong context pointer in the help button implementation
		-Fix: uninitialized variable caused save-as format options showing up randomly
		-Fix: strdup() cell value for cell modification, librnd4 API requires that

	[doc]
		-Fix: list menu keys for all plugins as well
		-Fix: pass on LIBRND_LIBDIR to datasheet.sh when run from Makefile to avoid error on gnuism
		-Update: menu key list: new format, list all plugins, include source
		-Update: key tree svg and txt
		-Add: wishlist items (2023-01 wishlist thread)

	[export_c_draw]
		-Fix: don't use global design when it is available from argument
		-Fix: set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_debug]
		-Fix: don't use global design when it is available from argument
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_dxf]
		-Fix: don't use global design when it is available from argument
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_excellon]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_gerber]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_oldconn]
		-Del: don't beep when finishing the export

	[export_openems]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_openscad]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_png]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback

	[export_ps]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose

	[export_svg]
		-Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose

	[find.c]
		-Fix: gfx object should return explicit "no intersection" instead of assert so an accidental {c f} over a pixmap won't cause problems

	[footprint]
		-Fix: parametric common: do not generate square pad smaller than 4 nanometer to avoid polygon corner cases
		-Fix: parametric common: minimum thickness for smd pads so there's no invalid poly
		-Fix: common_subc: subc_proto_create_pad_rect() passed the wrong argument to paste and mask offset calculator
		-Fix: common_subc: subc_proto_create_pad_rect() called the wrong function for mask offset calculation (so it used paste defaults when mask was not specified)
		-Fix: common_subc: if paste/mask ratio is empty string, don't use it as a value but fall back on defaults

	[gsch2pcb-rnd]
		-Add: set up exec prefix

	[import_sch2]
		-Fix: don't crash in path resolver when there's no design path

	[io_hyp]
		-Cleanup: decide what to do with parser debug, remove hint on unsupported action arg

	[librnd4]
		-Update: follow librnd4 API changes

	[millpath]
		-Fix: don't call text object decompose with NULL transformation in toolpath calculation, that'd lead to a segfault

	[oldaction]
		-Del: Bell() doesn't beep but throws an error

	[query]
		-Fix: net_len shouldn't crash on boards without any padstack (don't search NULL padstack tree)

	[report]
		-Fix: allow net length (hotkey: {n l o}) searches originating from subc parts (e.g. a terminal) as a fallback

	[tests]
		-Fix: propedit test needs to use locally defined ASSERT(), can't depend on assert() being accessible (it's turned off in production)

	[tool_std]
		-Del: rat line draw doesn't beep when object clicked is not a terminal (this beep was really a no-op in many cases)
		-Fix: allow GFX (pixmap) objects to be locked/unlocked by the lock tool

	[util]
		-Fix: bxl2txt needs to have an extra -I calculated for librnd4
		-Fix: bxl2txt: use the CFLAGS as detected (-O3 and -DNDEBUG for production)
		-Del: deblist.sh - not used by anything anymore
		-Del: devhelper's 404.sh: it's enough to keep one copy in librnd
		-Del: chglog scripts - use the one in librnd
		-Del: include, comment and copyright source crawler scripts - use the one in librnd
		-Del: rename scripts - use the ones in librnd
		-Del: "TODO grep" scripts - use the one in librnd
		-Del: local implementation of awk_on_formats - use librnd's
		-Move: html dialogs generator from doc to util to be shared with other apps later
		-Cleanup: list_dialogs doesn't get dialogs exrta from a file but from a shell var to make the system more modular and easier to reuse
