pcb-rnd 2.3.1 (r33837/r32524)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pcb-rnd part:

	[core]
		-Fix: CAM API: derive export file name: if option value is available, overwrite that instead of the default value
		-Fix: padstack term ID draw: remember whether a padstack shape is drawn in the current rendering effort using stamps and draw the terminal label only if the padstack was visible; this fixes 'label visible on inivisible padstack', i.e. turning off all layers a padstack spans will make the label disappear too
		-Fix: stub csect/fontsel error message draw shall not pass info==NULL to the rendering code, that wouldd lead to a crash
		-Fix: when manipulating existing objects using DRC show, use the object's clearance, not style clearance
		-Fix: enforce clearance on line endpoint move: set up start point for the drc enforcer
		-Fix: when enforcing clearance on line endpoint move, use the line object's thickness+clearance value, not the style's (for consistency)
		-Fix: textop rotation: normalize the resulting text rot field
		-Fix: when subc is copied from buffer to board, layer objects should do (batched) poly clipping (also fixes "ext obj doesn't clip when placed from buffer" bug)
		-Cleanup: code formatting (fix up old style comments in undo_old)
		-Add: more Undo() action commands, required for the live scripting undo API
		-Add: xor draw label event passes on draw info as an event arg so the event handlers know which region is drawn
		-Add: screen search list block variant that limits layer type
		-Add: brave setting for the upcoming clearance enforce upgrade
		-Add: brave-enabled clearance enforce on line/line-point move
		-Add: line endpoint move clr enforce: do a 'find' before grabbing the line endpoint, so that the enforcer will ignore the same-net objects
		-Add: central config node for controlling alien formats to load polygon-side clearance
		-Add: layer group change inhibit call so timed updaters can be blocked

	[data]
		-Del: get rid of old geda/pcb icons and old .desktop
		-Del: x-*desptkop: mime type registration is done centrally for files that are shared between applications
		-Import: Debian's .desktop
		-Add: magic(5) for file(1) containing a pattern for common pcb-rnd data files
		-Add: comment explaining how to use file(1) patterns

	[diag]
		-Change: make the plugin buildin by default because the conf test depends on it

	[dialogs]
		-Fix: window geometry save calls: obsolete, non-reentrant API calls to librnd (broke the save 'now' buttons)
		-Add: make library dialog refresh rate configurable

	[doc]
		-Cleanup: rename per system installation details to have INSTALL prefix and reference them from the central INSTALL file
		-Update: revise INSTALL, tune details
		-Update: key tree for {s k}
		-Del: developer/hid_remote: should be documented in librnd
		-Del: the #warning removal script from UNIX installation - we do not use #warnings anymore
		-Add: pin svn externs to rev of the release
		-Add: document the new Undo() action commands (intended for scripting)
		-Add: pcb-rnd runs on AIX, plus provision for systems not older than 25 years; notes on AIX+gtk2 compilation
		-Add: mention new config file in packager's changelog
		-Add: conf tree: cross_grid setting
		-Add: plugin package version match requirement mentioned in packager's changelog
		-Add: data model doc: short description on the subcircuit uid
		-Add: conf subtree doc for import alien format

	[drc_query]
		-Fix: don't mix code with declarations (c89)
		-Fix: wrong conf change callback prototype
		-Add: conf change infra to update the definitions GUI when a def value changes

	[export_bom]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_dsn]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_dxf]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_excellon]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_fidocadj]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_gcode]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_gerber]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_ipcd356]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_lpr]
		-Fix: set 'lpr' as default print command
		-Update: use the new export HID API to avoid overwriting option default values

	[export_openems]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_openscad]
		-Cleanup: use the central arc approximation instead of the local implementation
		-Cleanup: const correcntess (padstack mech cache might get updated, can't be const)
		-Update: use the new export HID API to avoid overwriting option default values
		-Add: export padstack mech shapes (slots)

	[export_png]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_ps]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_stat]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_stl]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_svg]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_vfs_mc]
		-Update: use the new export HID API to avoid overwriting option default values

	[export_xy]
		-Update: use the new export HID API to avoid overwriting option default values

	[footprint]
		-Cleanup: remove vtlib, use vtp0 and floating allocations instead so that parents don't need to be updated on array growth
		-Cleanup: const correctness in sort comparison
		-Fix: properly free footprint lib entry allocations

	[import_gnetlist]
		-Fix: assume action script only with gnetlist, use tedax with other backends
		-Add: support for lepton-netlist

	[io_autotrax]
		-Fix: sort out board and keepout layer groups on load
		-Fix: don't exit padstack load leaving broken parse state
		-Cleanup: dead code in text import: no need to check for empty strings
		-Add: comment about file format limitation on text rotation

	[io_bxl]
		-Fix: lex invalid pcb_strdup() references
		-Fix: old gcc #include code gets confused by the #line macros - don't rely on ./ include in grammar/lexical code

	[io_eagle]
		-Fix: remove hardwired layer ID for subcircuit text placement (fixes: value text ending up on the wrong side)
		-Fix: subc non-90-degree rotation on the back side
		-Fix: text rotation in subc backside non-90-degree cases
		-Fix: tDocu and bDocu layers are really assembly layers, not silks
		-Fix: bin: signal flattening postproc should pass through the newly added nodes to make it "recursive"
		-Cleanup: bin: split the signal postproc call to make the code more readable
		-Add: data based layer creation for non-copper layers
		-Add: paste and mask layers in the layer tab
		-Add: match layertab entry purpose to existing layer group purpose and create missing groups
		-Add: layer tab for all known non-copper eagle layers
		-Add: load polygon-side clearance when centrally enabled
		-Add: comment on how the poly-side clearance load works
		-Add: bin: explain how "recursive" flattening of singals/signal* is achieved without actual recursion

	[io_hyp]
		-Fix: old gcc #include code gets confused by the #line macros - don't rely on ./ include in grammar/lexical code

	[io_kicad]
		-Fix: don't crash when loading board with too many layers
		-Fix: custom shaped pad primitives shall be offset by the "at" subtree of "custom"
		-Add: fill in layer group purposes in the layer tab
		-Add: kicad5 seems to have gr_poly in global scope
		-Add: load polyon side clearance (zone/connect_pads/clearance) when centrally enabled

	[io_pcb]
		-Fix: don't crash on missing attribute value

	[io_tedax]
		-Add: netlist import: load nettag and comptag lines

	[lib_hid_pcbui]
		-Fix: when the status line is a single line, insert a space as separator between the two segments
		-Fix: don't try to update the layer menu during layer group update inhibit

	[libcdtr]
		-Fix: allow inserting points on constrained edges by splitting them
		-Fix: don't use assert on point coord out of range, rather return NULL
		-Fix: constrained edge split: save old user poitner after the _pre event callback, which may choose to change this field
		-Fix: inserting a point on a boundary edge
		-Fix: animator dump shouldn't assume coords are integers
		-Add: rewrite the tester to be command line based; remove hardwired C code tests except for the random test which is invoked using the 'auto' command
		-Add: regression tests
		-Add: animator dump call into a FILE * (instead of stdout)
		-Add: event infra, "split constrained edge" event
		-Add: example script with 2 out of 3 points out of range
		-Add: lib function and tester command for dumping a cdt in cdt_test script format
		-Add: an option for compiling the lib and tester with double coords
		-Add: minimal stadnard doc: README, AUTHOR, COPYING

	[librnd] (on pcb-rnd side)
		-Fix: util should depend on the librnd-local extern instead of the old extern path
		-Fix: wrong include path for the new librnd-local extern in bxl2txt
		-Fix: scconfig hook: reset pup lists between librnd and pcb-rnd generation to avoid librnd plugins leaking into pcb-rnd
		-Fix: genlist and genvector object deps for gsch2pcb-rnd: use librnd-3rd or link them from under librnd-local for now
		-Fix: tests build against local librnd
		-Fix: central configure should make dummy revtest in librnd executable
		-Fix: link order while linking pcb-rnd executable: librnd needs to come before gtk and other dependencies of librnd
		-Fix: don't attempt to compile puplug for the host, let librnd do that
		-Fix: dynamic link plugin template: path to librnd's local templates changed
		-Fix: static link order: librnd-hid needs to come after librnd-poly because poly depends on core
		-Fix: no need to manually create librnd .so symlinks on install, librnd's make install takes care of that
		-Fix: separate install, linstall and uninstall rules for the local librnd because $(HOW) can not be passed
		-Fix: dummy usage of some static linked librnd functions and variables that are then accessed from plugins, to ensure they are linked in from the .a files
		-Cleanup: scconfig variable for path to librnd so the local checkout doesn't need to be hardwired in Makefiles
		-Cleanup: remove redundant svn externs on 3rd lib, depend more on librnd
		-Cleanup: remove local puplug and sphash externs, use the ones offered by librnd
		-Cleanup: don't copy files manually, call librnd to install itself
		-Cleanup: remove local plugin build hack that used to build hidlib plugins before we switched to call librnd's native build
		-Cleanup: remove pcb-rnd-local gen_conf.sh, always use the one in librnd
		-Del: stop compiling and installing librnd (static lib, dynamic lib) from pcb-rnd src/
		-Del: lihata externs from src_3rd: these libs are available through librnd
		-Del: stage 3 init (plugin dir loading) moved to librnd because all ringdove apps will need the same
		-Change: switch over from partial extern of librnd to full extern so that a librnd local build can be done later
		-Change: switch over scconfig to use the extern from librnd-local extern for now, so redundant scconfig externs can be avoided during the transition
		-Change: instead of locally compiling librnd objects, link against the static libs compiled by librnd
		-Change: use librnd's 3rd lib instead of locally compiling those libs from src_3rd
		-Update: gsch2pcb-rnd for the new externs
		-Update: central make clean and distclean for the src_3rd changes
		-Update: map_plugins for the temporary librnd-local build
		-Workaround: temporary workaround for getting object files that core doesn't need but plugins need linked from librnd*.a
		-Add: temporary scconfig generation extras: generate librnd-local config files and Makefiles so librnd can be compiled stand-alone
		-Add: go and compile librnd before anything else when local librnd extern is used
		-Add: temporarily load librnd plugins from the local extern source tree as well
		-Add: compile sccbox for the local librnd as well for the transition
		-Add: static link librnd symbol workaround for the script plugin that got moved to librnd

	[menu]
		-Add: menu item for listing locked objects (so that they can be manipulated without the lock tool)
		-Add: edit properties for selection in the Select menu

	[mincut]
		-Fix: don't compile the code that runs popen() to draw the graph if graph debugging is not enabled

	[propedit]
		-Fix: pressing enter on a string value should force an update after setting the value

	[query]
		-Fix: context uninit resets inited flags to 0
		-Fix: advanced search dialog: remove non-drawing object from object type list (such as RAT and LAYER) as query() won't search those

	[rubberband_orig]
		-Update: Use the line clearance instead of route style clearance when drawing line clearance outline.
		-Cleanup: remove useless comment

	[scconfig]
		-Fix: make distclean should run recursively on util/, not only on util/gsch2pcb-rnd (to remove leftovers from bxl2txt)
		-Fix: make distclean recurses to fungw
		-Fix: make distclean should remove src/plugins
		-Fix: make clean should remove locally installed pup files
		-Change: switch over to ureglex common part linked only once, from librnd

	[script]
		-Del: move the plugin to librnd so other ringdove apps have the same scripting

	[show_netnames]
		-Add: new plugin for displaying netnames on traces when zoom level is high enough

	[tests]
		-Fix: use sccbox mktemp instead of system's mktemp which may not exist
		-Fix: pcb-printf test links against the whole librnd instead of cherry picking objects (that'd depend on librnd internals)
		-Fix: propedit test links against the whole librnd instead of cherry pickign objects (that'd depend on librnd internals)
		-Fix: pcb-printf test doesn't need to register conf items
		-Fix: use scconfig detected -I to librnd instead of hardwiring the local extern
		-Fix: uniq_name links to librnd static libs instead of cherry picking objs (which won't be available when librnd is installed)
		-Fix: uniq_name: don't use invalid pointer and don't print with %p (format not guaranteed); use array offset and #%d instead for maximum portability
		-Fix: cam: do not depend on tar -zxf being able to unpack tar.gz, that's a GNU extension on tar
		-Fix: cam: do not depend on installed pcb-rnd
		-Fix: suppress missing standard lib warning and empty lines in cam test
		-Fix: cam: layer group export test: can't export @inivisible any more, it's an on-screen-only virtual layer
		-Del: remote/ - this should be tested in librnd
		-Del: base64 - it's part of librnd, will be tested there
		-Del: orig/ - we have better tests in RTT by now
		-Del: pcb-printf: it's really rnd_printf and is tested in librnd, where it is implemented
		-Cleanup: use space indentation instead of tab indentation in menu/insert for consistency
		-Cleanup: remove any effective dependency on librnd-local from conf test
		-Workaround: AIX diff -u is not unified format really: inserts an extra space - use diff -w in the final checking to work around that
		-Update: pcb-printf for local librnd (for the transition)
		-Update: switch over more tests for the local full librnd extern
		-Update: conf test for local librnd (for the transition)
		-Add: enable the cam test
		-Change: replace grep -v "|" with awk, because old grep implementations don't support the | operator

librnd part:

	[build]
		-Fix: scconfig template include path for compiling dynamic link plugins
		-Fix: don't uninstall core/config.h twice
		-Fix: make clean should remove locally installed pup files
		-Fix: make clean and distclean shall remove generated files
		-Fix: make distclean should remove src/plugins/
		-Fix: make clean should recurse to genht because of version.h
		-Fix: make -ldl optional, some systems (e.g. windows) don't have it
		-Fix: set the default value of disable_so to false so the variable always exists
		-Fix: hidlib plugins with internal menu file need a different path reference for building the file
		-Fix: gen_conf.sh shouldn't try to keep all html files open for the whole time of generating them - some systems will have a lower limit on open fds
		-Fix: wrong order of args in svn:externals
		-Fix: wrong include path for the main config.h with installation paths
		-Fix: don't install non-existing (pcb-rnd) utils
		-Fix: make libporty_net optional as some old systems won't have FIONBIO
		-Fix: run ranlib on the static .a files
		-Fix: use the same ldflags for all 3 .so files
		-Cleanup: remove libuundo from src_3rd: not used directly in librnd
		-Cleanup: rename and fix up path of installation prefix and lib/share dirs (decoupling them from pcb-rnd)
		-Change: plugin search path should always include librnd install dir - any ringdove app will load HIDs from there
		-Change: better handling of missing dynamic linking; explicit disbale also disable puplug -ldl detection
		-Change: compile ureglex plugins with shared common exec
		-Add: compile and install sphash - the build infra provided by librnd depends on it
		-Add: --disable-so ./configure option - especially for windows, where .dll is not comparable to .so, and the cross-compilatio uses static linking with librnd anyway
		-Add: hidlib install plugins
		-Add: require fungw pup installation path to present (required for proper script plugin loading in case of system installed fungw)
		-Add: print TODO messages only in debug compilation
		-Tune: skip a level of unnecessary indirection when compiling host puplug

	[core]
		-Fix: hid uninit sequence: keep hid structs until after pup unload so plugin uninit cals won't address into already free'd memory
		-Fix: do not attempt to load plugins from installation libdir if installation path is not available compile time (e.g. on windows)
		-Fix: do not register empty path in puplug plugin search path
		-Fix: rnd_printf() on %mw shouldn't read an extra coord before fgw_arg
		-Fix: do not include non-standard <memory.h>
		-Fix: rnd_setenv() implementation in case of only putenv is available caches all the sets and makes sure each variable is stored in memory only once
		-Del: do not auto-load all fungw scripting engine plugins - the script plugin will pick the ones needed
		-Cleanup: remove useless comment
		-Add: HID API: option to initialize export option values and load those with the command line args, instead of overwriting the default value
		-Add: HID API: extended export plugin options registration that remembers the hid so that the command line arg parser uses the right backup memory per HID
		-Add: init stage 3: automatically load all plugins from all plugin directories available (optional)
		-Add: add fungw pupdir to the pup search path so scripting plugins can be loaded

	[DAD]
		-Fix: spinboxes respect min/max values set by the DAD macros

	[doc]
		-Cleanup: remove pcb-rnd leftover from doc installation

	[HID]
		-Add: editor/cross_grid setting to draw 3x3 pixel crosses instead if single pixels for the grid (accessibility)
		-Add: cross_grid option in gl local grid

	[hid_gtk2_gl]
		-Fix: skip color setting only if xor mode also matches - fixes subc bbox blinks on editopoint highlight

	[lib_gtk_common]
		-Fix: zoom-win call updates gtk scales so the view doesn't jump away e.g. in the first zoom after a zoom extent

	[lib_hid_common]
		-Add: action API for toolbar init so lib_hid_common doesn't need to be static linked
		-Add: rnd_zoom() action to expose the internal zoom mechanism - so that ringdove apps don't need to link lib_hid_common directly
		-Add: publish window placement save utility functions that are used by pcb-rnd preferences window

	[libporty_net]
		-Fix: try a differen AIX <string.h> workaround to avoid warnings on Linux
		-Cleanup: comment out #warnings, they are not portable
		-Workaround: AIX select problem

	[libuirc]
		-Fix: pick up actual nickname from the server from the 001 message (this may be different from the nick we wanted to set, due to nick name length constraints)

	[poly]
		-Change: increase rtree stack max size for real complex polygons

	[script]
		-Change: move the plugin to librnd so other ringdove apps have the same scripting (moved at pcb-rnd r33401)
		-Fix: remove local engine name guessing, search fungw engines to figure
		-Fix: language listing: strip whitespace from language name
		-Fix: script load logic depends on the ext/lang/eng cache instead of all plugins already loaded
		-Fix: load fungw language binding plugin from the dir fungw got installed to
		-Fix: live scripting language listing works from only fungw pup install dir
		-Fix: live scripting: get language list from the $script-ext field of the pup files, not from the $desc (as the desription is not intended to be parsed)
		-Fix: pass proper hidlib context to live_run() so that script reload from the GUI doesn't crash
		-Fix: use librnd's globalconst instead of pcb-rnd's so the plugin can be moved to librnd later
		-Del: pcb_script_pup_paths - librnd places fungw pup install dir on search path
		-Del: remove local pup map/parse function from live_script, use puplug's
		-Cleanup: c "scripting" API decoupled from pcb symbolism (while keeping backward compatibility for now)
		-Cleanup: namespace: switch from pcb_ to rnd_ where possible, to prepare the transition from pcb-rnd to librnd
		-Cleanup: const correctness
		-Cleanup: publish guess_lang(), it's used from multiple parts of the code
		-Cleanup: use the right vector type for the engine cache
		-Cleanup: remove unused var
		-Update: fungw API change on pup_list_parse_pups() callbacks
		-Split: undo calls (used in live script) to a separate glue .c so it will be easier to replace them with action calls plus it will show what actions the host app needs to deliver
		-Change: use pup's readdir calls in the language map code as it would be moved to puplug
		-Add: when language is unspecified for a script, use fungw engine based guessing
		-Add: determine default script file name extension by calling the fungw engine for the currently selected language
		-Add: debug action for printing the language list
		-Add: guess_lang: parse pup files for the $script-ext lines and prepare for building hashes of those
		-Add: guess_lang uses the extension/language/engine cache built from the pup files
		-Add: pass on hidlib to script to more calls, especially script loading calls, in preparation of setting "script user call context" during script initialization
		-Add: set up "script user call context" during script load/initialization so the action calls made by the script have the right context
		-Add: use the action API for arranging undo with the host app instead of hardwiring pcb-rnd undo calls
		-Add: more details on script parse failure (which fungw plugin reported the problem)
		-Add: corner case: if a lang name is really a fungw engine name (without the fungw_ prefix), accept that too (for cli)
		-Add: live scripting: list language aliases too, so bash is found for cli

	[tests]
		-Fix: librnd make clean removes all empty dirs and temp fiels generated
		-Cleanup: rename pcb-printf/ to rnd_printf/ because that's the name of the call and the API we are testing
		-Update: pcb-printf test should link the whole lib instead of cherry picking objects

	[ureglex]
		-Import: exec part of r267
		-Add: README with the original url and mention of public domain


pcb-rnd 2.3.0 (r33250/r32452)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pcb-rnd part:

	[act_draw]
		-Cleanup: remove global PCB dependency

	[act_read]
		-Cleanup: remove global PCB dependency
		-Add: idplist(print)

	[asm]
		-Add: menu for the feature plugin

	[ch_editpoint]
		-Add: plugin to indicate object editpoints and terminal names on hover

	[ch_onpoint]
		-Cleanup: don't calculate arc endpoints locally, call the dedicated function
		-Cleanup: move onpoint object lists from core/crosshair to ch_onpoint
		-Move: onpoint related code from core to plugin ch_onpoint to make core smaller and cleaner
		-Fix: don't crash if there's no tool
		-Add: allow indication only for tools that can edit geometry

	[core]
		-Cleanup: use vtp0 and pcb_any_obj_t for on-point highlight instead of a locally defined type+obj* struct to reduce code size (pcb_any_obj_t has a type field)
		-Cleanup: on-point: DrawLineOrArc(): don't need to pass type+obj, pcb_any_obj_t does include the type
		-Cleanup: on-point: DrawLineOrArc(): no need to do trickery with the layer argument, lines and arcs do remember their parent layers in pcb_any_obj_t
		-Cleanup: on-point: make DrawLineOrArc() static - needed by onpoint only; rename to remove CamelCase
		-Cleanup: decouple pcb_board_set_changed_flag() from PCB, adding a pcb_board_t * context pointer first arg
		-Cleanup: remove global PCB dependency from padstack actions
		-Cleanup: remove global PCB dependency from conf actions
		-Cleanup: remove global PCB dependency from font actions
		-Cleanup: remove global PCB dependency from file actions
		-Cleanup: pcb_xordraw_movecopy() grew too large, split it up to a per object type function
		-Cleanup: onpoint indication should be an obj common bit, not a flag - it's temporary data never to be saved
		-Fix: get low level text scale X,Y change undoable
		-Fix: make ChangePinName() undoable
		-Fix: make ChangeNonetlist() undoable
		-Fix: padstack undoable change hole shall call the proto updater to keep caches and hashes in sync
		-Fix: arc wireframe draw: never call the hid with negative radius (that resulted in artifacts)
		-Fix: RouteStyle() action help text did not reflect how the code worked
		-Fix: route style: text scale is really an int, not a coord
		-Fix: hole diameter change in padstack op shouldn't use old drc setting to limit minimum size; the padstack editor and the property editor already allows the user to set any size, don't do arbitrary limiting here either
		-Fix: pcb_text_draw_string_simple() shall set up xform and info to avoid crash
		-Fix: don't crash on pcb==NULL in text mirroring in buffer
		-Fix: don't use PCB from some actions, that's not available while new board is created
		-Fix: move crosshair out to the limit before removing the old board - this should trigger all ch_ plugins to release their old data, to avoid stale pointers
		-Fix: drc print: don't print measured or expected value if it is FGW_INVALID
		-Fix: when removing/destroying a polygon, remove it from parent subc term list
		-Fix: footprint parameter split: find and remove the trailing ')' even if there are spaces after it
		-Fix: set rendering to positive before drawing the fab layer (might be the first thing drawn on an empty board)
		-Fix: ChangeFlag doesn't have thermal anymore (thermal is not a flag bit)
		-Fix: SetThermal() with value non-zero should also turn on thermal
		-Fix: update library entry parent after sort or array relocation so it doesn't point to invalid/free'd memory
		-Fix: clear_buffer should reset buffer origin as well so it is not inherited between operations
		-Fix: new board creation crosshair state mismatch caused sw render HIDs to lose xor draw after creating a new board
		-Fix: low level label draw: separate x and y text mirroring is possible now, use it (fixes ctrl+tab text mirror bug)
		-Fix: turn off clearance optimization for line/arc/poly vs. poly intersection check if bloat != 0 (it caused shorts missed)
		-Fix: make subc flag change undoable (affects the lock tool)
		-Fix: SetThermal(): wrong description on the meaning of the numeric style values
		-Fix: SetThermal(): allow value 6 as well
		-Fix: pcb_net_find_by_obj() shouldn't crash on a terminal whose subc has no refdes attribute
		-Update: default boards are of lihata board v7, so plain save will not downgrade new boards to v6
		-Change: use style clearance for 'show drc clearance' instead of bloat
		-Change: conf field descriptions of the old DRC fields, which are now either obsolete or repurposed to limiting sizes
		-Add: tool infra: flag to mark tools that can edit object geometry
		-Add: generic, undoable attribute set function
		-Add: generalized subc layer allocation based on copying an existing subc layer
		-Add: respect rnd_render's ->override_render so loghid works
		-Add: padstack proto update makes a cache in tr[0] about which shapes are connected to the hole or slot
		-Add: padstack proto update calculates a cached prototype bit that indicates if all copper shapes are connected by the hole/slot
		-Add: RouteStyle(): undoable on set
		-Add: RouteStyle(): undoable route style name change (and query)
		-Add: RouteStyle(): commands for setting and querying text scale and text thickness
		-Add: RouteStyle(): undoable new and del commands
		-Add: extend the footprint API with an option for copying tags
		-Add: plug_io for saving and loading padstacks
		-Add: crosshair code: build a cache for attached object drawing: publish a clean() function that needs to be called before any crosshair attached object change so a cache can be maintained
		-Add: if a polygon has the clearpolypoly flag and showing the clearance is enabled, calculate the clearance offset poly and draw it while the poly is being moved or copied
		-Add: polygon helper: calculate the clearance polygon of a text object, without subtracting it
		-Add: when a text object is being moved, indicate the true clearance when clearance indication is on
		-Add: draw the clearance (union on all copper layers) around the padstack when it's being moved
		-Add: throw an error if no drc rule got executed
		-Add: crosshair: generate an event for updating screen indications when crosshair changed position
		-Add: editpoint indication on line, arc, polygon, padstack objects
		-Add: layer pointer to ID conversion (helper function)
		-Add: in-place subc replacement: keep thermal flags on terminals (map and apply thermals)
		-Add: subc in-place replacement: make a map of floaters, attempt to match them up and move/rotate new floaters accordingly
		-Add: find.c: publish low level pcb_isc_pstk_line_shp(), lib_polyhelp needs it for hole-on-contour
		-Add: find.c: padstack shape to polyarea converter (helper function)
		-Add: SetThermal(): support the 'noshape' style

	[dialogs]
		-Del: preferences: half of the old DRC sizes - use the new DRC definitions
		-Cleanup: rename DRC sizes to limit sizes in the code to reflect change in the code logic
		-Fix: flag changes from the flag edit dialog are undoable
		-Fix: when the padstack editor changes the hole or local clearance in a prototype, make sure the prototype is updated (for the hash and caches)
		-Fix: padstack proto save file name memory leak
		-Fix: library dialog, refresh button: print an error message if parent/root can not be found
		-Fix: don't crash when library window preview is called with NULL footprint name (may be a result of a broken parametric footprint), just clean the buffer so that nothing is shown in the preview
		-Fix: dlg_confval_edit(): uninitialized default value for optional argument 'modal' (may cause crash on drc definition edit)
		-Change: merge limiting sizes and misc sizes, by now they are the same as limiting sizes are no longer DRC-related
		-Add: padstack lib dialog: load and save buttons for padstack prototypes
		-Add: default file name for padtsack save is padstack.lht
		-Add: preferences, sizes&drc: print an error message if there is 0 drc plugins available
		-Add: convert the manage plugins dialog into a non-modal dialog box that presents an alphabetically sorted list of plugins in a list
		-Add: manage plugins: button for unloading plugins
		-Add: plugins dialog: print reference count of each plugin (useful for debugging)
		-Add: make layer comb flag change undoable

	[doc]
		-Fix: packager's doc: grammar about diagnosing (in package desc); missing punctuation in package desc
		-Fix: use both pcb-rnd's own plugins and librnd's svn extern'd plugins when mapping for packager's doc
		-Fix: plated slots can be represented already
		-Update: renumberblock description for subcircuits
		-Update: conf tree for the drc "show/enforce" change
		-Add: mention imagemagick as soft dependency for running some tests
		-Add: clarify what ChangeSize() does to subcircuits
		-Add: action doc for RouteStyle(); document 'del' and 'new'
		-Add: document the low level ttf import action
		-Add: lihata format doc: document the new file format for padstack protos: pcb-rnd-subcircuit-v*
		-Add: developer doc: plugin development howto for local, per plugin menu files
		-Add: query: document coord(), netlen(), isvoid(), layer_setup(), int(), double() and .net
		-Add: query: document user functions
		-Add: refine the nonetlist flag sentence explaining the actual effects
		-Add: explain how openscad-transformation attribute is not used for subcircuit rotation
		-Add: INSTALL references the packaging doc - maybe this will help new packagers figure where to look
		-Add: link regex syntax from the appendix and from the feature doc

	[drc_query]
		-Fix: invalid drc value is FGW_INVALID, not FGW_VOID
		-Fix: action that sets drc def should create the conf node and set the default value even tho the def is created in multiple steps when done in actions
		-Fix: make sure definition default value is set only once, not overwriting exisitng value
		-Add: refine stock drc rule violation report with expected/measured values

	[export_openscad]
		-Fix: respect options set from the GUI

	[export_stl]
		-Fix: do not apply holes/slots that fall on the board contour, that'd result in invalid model
		-Fix: use clipped contour poly instead of the as-drawn one, so all sort of tweaks (like half-hole cutouts) appear in the output

	[export_test]
		-Del: plugin removed in favor of the more generic loghid plugin (in librnd): the actual sequence of calls HID heavily depends on the do_export() implementation of the GUI/export hid chosen, so even if export_test worked, it would not have shown the same sequence as any actual export/screen-render

	[extobj]
		-Cleanup: remove code duplication on subc layer object copy
		-Cleanup: use the central subc layer allocation helper function instead of a local implementation
		-Fix: handle buffer copy/cut/move corner case: make sure the subcircuit is not added to the rtree twice
		-Fix: when (all) floaters are selected, also select the parent subc so it can be copied/moved to the buffer

	[find]
		-Cleanup: remove direct fctx->mark mark test and sets where it matters: wrap them in inline functions so they can be extended for the multi-component objects
		-Fix: don't assume hole/slot connection within a padstack if the hole/slot is not plated; special case: if term ID is set on a padstack with disjoint copper shapes, it should be taken as connected; rationale: each shape has the same terminal ID and we generally assume same-terminal-IDs are connected within the part soldered on
		-Add: make the padstack shape vs. padstack shape intersection (geo code) API public, padstack prototype code caching the shape overlaps with holes will need it
		-Add: maintain a multimark hash table in find context and allocate it for padstacks when needed (when not all copper shapes are connected)

	[font]
		-Fix: when unlinking a font (e.g. for fontedit()), re-link the parent of all symbol arcs and polys to avoid invalid ref

	[fp_fs]
		-Add: configurable prefix based file name ignores on lib mapping
		-Add: suffix based file name ignore from config (during lib mapping)

	[gsch2pcb-rnd]
		-Fix: wrong program name in help text

	[import_accel_net]
		-Add: atomic netlist import: undo undoes all at once

	[import_calay]
		-Add: atomic netlist import: undo undoes all at once

	[import_fpcb_nl]
		-Add: atomic netlist import: undo undoes all at once

	[import_gnetlist]
		-Add: atomic netlist import: undo undoes all at once

	[import_ipcd356]
		-Add: atomic netlist import: undo undoes all at once

	[import_ltspice]
		-Add: atomic netlist import: undo undoes all at once

	[import_mentor_sch]
		-Add: atomic netlist import: undo undoes all at once

	[import_net_action]
		-Add: atomic netlist import: undo undoes all at once

	[import_net_cmd]
		-Fix: don't crash if there's no board file name available
		-Add: atomic netlist import: undo undoes all at once

	[import_netlist]
		-Add: atomic netlist import: undo undoes all at once

	[import_orcad_net]
		-Add: atomic netlist import: undo undoes all at once

	[import_pads_net]
		-Add: atomic netlist import: undo undoes all at once

	[import_protel_net]
		-Add: atomic netlist import: undo undoes all at once

	[import_pxm_pnm]
		-Add: pick up transparent color from custom "transparent pixel:" comment when present

	[import_sch2]
		-Add: atomic netlist import: undo undoes all at once (wrapper around any format/method)

	[import_tinycad]
		-Add: atomic netlist import: undo undoes all at once

	[import_ttf]
		-Add: Erich's patch on cubic
		-Add: action, dialog box and menu item for the dialog for interactive glyph import
		-Add: handle self-intersecting poly contours

	[io_kicad]
		-Fix: segfault on redundant arc removal vs. term attribute set
		-Fix: apply poly clipping inhibit around board parse to speed up

	[io_lihata]
		-Cleanup: read: group all global states in a struct (reduce global vars)
		-Cleanup: read: do not depend on a global variable for the context, pass the read context struct down in every call that needs it
		-Fix: do not accept negative arc radius on load, change it to 0 and throw an error
		-Fix: buffer load shall set read version from the header, else padstacks won't work (as they did not exist in v1)
		-Update: make v7 the default format to use by extedit
		-Add: save padstack file: write a new header and the padstack proto subtree with ID 0
		-Add: parse pcb-rnd-padstack-v* for the padstack proto in it

	[io_pcb]
		-Add: long, detailed error message about non-undoable layer swaps
		-Add: io incompatibility warning for non-mod-90-degree text rotation

	[io_tedax]
		-Fix: clip poly before saving it in a footprint, to avoid a crash
		-Fix: error message on loading footprint objects on invalid layer
		-Fix: footprint load: throw an error on invalid objects
		-Fix: off-by-one bug on footprint polygon minimum number of fields
		-Fix: footprint terminal ID doesn't need to be an integer, it can be any string
		-Fix: allow trailing \\ when parsing lines
		-Fix: when called back from plug_footprint to load a footprint from the lib, use the lib fopen to apply the search path
		-Fix: \ parsing corner case on last escaped char in a field
		-Add: atomic netlist import: undo undoes all at once

	[lib_compat_help]
		-Fix: layer swap, used only by old geda/pcb save on silk not being the last layer, should also update padstack thermals

	[lib_hid_pcbui]
		-Fix: route style: text scale is really an int, not a coord
		-Fix: don't assume sizeof(int) == sizeof(long)
		-Fix: don't use PCB, that's not available while new board is created
		-Add: make route style field changes undoable (except for obsolete via fields)
		-Add: make style name change timed so it's less frequent
		-Add: make route style dialog name changes undoable
		-Add: make del and new buttons on the route style docked dialog undoable
		-Add: icon buttons for all layer visible/invisible

	[lib_polyhelp]
		-Cleanup: use pcb_board_set_changed_flag() instead of directly setting the changed flag
		-Fix: contour-to-poly: don't crash if board contour is not found, just return NULL
		-Add: contour to poly conversion: find and mark padstacks crossing the poly contour
		-Add: subtract intersecting holes and slots from board contour poly

	[libcdtr]
		-Fix: make local tester compilable
		-Fix: make local Makefile portable
		-Fix: make coord type configurable
		-Add: license banner: LGPL2 with permission from Wojciech via email
		-Add: make clean
		-Add: proper object deps in local compilation
		-Add: rule to compile a .a

	[librnd]
		-Cleanup: remove per plugin svn extern to librnd, use one, central extern
		-Del: local copy of map_plugins - use librnd's
		-Del: local scconfig templates for the build - use librnd's
		-Del: rnd_r_end() - dummy call to empty function, the iterator doesn't allocate anything
		-Move: box direction enum and macros to from librnd to local box_dir.h (needed by autoplace and autorouter only)

	[menu]
		-Fix: buffer content load, {b f l}, should clear the buffer before the load so only the new content is in the buffer by the end of the operation
		-Change: we don't enforce/show DRC clearance but style clearance
		-Add: {e g g} for padstack geometry edit
		-Add: {l v} and {l h} for all layer visible/inivisible
		-Add: convert-to-extobj in context popup for layer objects

	[openscad]
		-Move: Alexey's smd diode and tantalum models from work to the standard lib
		-Add: pcblib footprints reference their openscad models

	[pcblib]
		-Fix: make sure silkmark never writes arc with negative radius (or even close to zero)

	[propedit]
		-Fix: make flag changes undoable
		-Fix: throw an error for invalid prop path (missing p/ or a/ prefix) so the user has a chance to figure
		-Fix: layer comb property didn't get set
		-Fix: layer comb bits are not integers but booleans

	[puller]
		-Fix: don't use the bbox but corners of poly shaped padstacks for tighter pulling
		-Fix: use the true shape for line padstacks (both square and round cap) for tight pulling

	[qparse]
		-Fix: wrong fsf address in license banner

	[query]
		-Fix: type promotion bug between long and double
		-Fix: violation() returns numeric values properly
		-Fix: advanced search dialog missing object types: padstack, subc, gfx
		-Fix: advanced search dialog: gui->text string creation: use quotes
		-Add: coord() function that attempts to convert a string to coordinates (useful for reading coords from attributes)
		-Add: (cached) netlen() function that works by netname or by net object (requires simple, 2-terminal networks)
		-Add: isvoid() function for safe check if a value (e.g. function return value) is invalid/void
		-Add: user functions
		-Add: qry_run_() passes back last evaluation result as the final result if the caller needs it
		-Add: list() works on any variable, not only on @
		-Add: .net evaluates to the net parent of an object
		-Add: layer_setup() for checking the layer stack around an object
		-Add: allow any expression to be suffixed with fields/attributes - relevant for user function returns
		-Add: .layergroup for layer objects
		-Add: int()
		-Add: double()

	[renumber]
		-Fix: missing action descriptions

	[rubberband_orig]
		-Change: use style clearance for 'show drc clearance' instead of bloat

	[scconfig]
		-Change: move librnd extern from src/ and scconfig/ in a common single extern in src_3rd/
		-Fix: don't assume libs/ldl exists (it doesn't, on windows)

	[script]
		-Fix: delay permascript loading until the main loop has started - premature loading of scripts will lead to script compilation error since not all actions are registered

	[shape]
		-Add: menu for the feature plugin

	[tests]
		-Fix: RTT: handle missing convert(1) or compare(1) by really skipping the corresponding tests
		-Del: librnd test - it's in the now separate librnd project
		-Add: menu patch automated testing: typical plugin insertion in sumbenu and at anchor, overwrites

	[tool_std]
		-Fix: rat lines can be drawn from/to heavy terminal too, not only padstacks
		-Fix: shift-click in-place footprint replacement from buffer shall keep rotation and side of the original footprint
		-Fix: thermal tool should work when clicking on subc padstack
		-Fix: changing the lock state of an object shall mark the board changed
		-Fix: tool_move calls extobj float_pre and float_geo in pair so the extended object is not messed up
		-Fix: escape in arc and rectangle tools shouldn't immediately switch to the arrow tool but first fall back to the arc or rectangle initial state
		-Fix: lock: increase undo serial after locking/unlocking so they don't batch with random other operations
		-Change: use style clearance for 'show drc clearance' instead of bloat
		-Add: thermal tool: better fallback mechanism on multiple objects found and indicate if didn't do anything because all candidates were locked



librnd part:

	[librnd/build]
		-Del: tests left over from pcb-rnd
		-Del: remove pcb-rnd leftovers from Makefiles
		-Move: scconfig lib from scconfig/ to src/ so it is part of the single install subtree for reuse by apps
		-Move: gen_conf.sh to librnd/scconfig (with installation) so apps can reuse it
		-Move: scconfig templates from scconfig to src/librnd/scconfig as it's becoming installable for apps to reuse
		-Cleanup: detach building the plugins from $(PLUDGID) so the temporary in-pcb-rnd build still works
		-Cleanup: move src_plugins to src/librnd/plugins for easier svn externs and consistency with the installation later
		-Cleanup: plugin headers should be #included as <librnd/plugins/*.h> for portabilirty
		-Fix: make sure make dep generates the dependencies with full relative path (requires an extra step of 'sed' to work around gcc's shortcomings)
		-Fix: broken installation of buildin.hidlib.h
		-Fix: missing dependency on test-rnd executable to buildin.hidlib.h
		-Fix: use the same path notation for buildin.hidlib.h dep as for the build rule
		-Fix: mark all plugins part of $hidlib
		-Change: install doc and data in /librnd, not in /pcb-rnd
		-Add: #define LIBRND_ROOT so configure compiles
		-Add: install minimal libfungw headers and genht headers (apps will need these)
		-Add: make map_plugins.sh more generic so ringdove apps can reuse it without having to copy it
		-Add: install map_plugins.sh so apps don't need to copy it
		-Add: temporary branch in the internal conf generator template for pcb-rnd, as long as it needs to compile librnd locally
		-Add: set librnd plugin root from the Makefile so plugins are found

	[librnd/core]
		-Cleanup: dedoxygen comments
		-Cleanup: code formatting
		-Del: RND_BOX_ROTATE_CW() - no user
		-Del: box direction flags and macros - required by pcb-rnd autorouter only
		-Del: pcb-rnd related docs
		-Del: rnd_r_end() - useless dummy
		-Del: remove vcs comment mentioning multiple crosshair shapes from the copyright banner - that piece of code got removed
		-Fix: RND_ACT_CALL_C() needs to get hidlib as first argument and set up the call properly because action code depend on the hidlib context pointer
		-Fix: can't pass function pointer in low level C action call because there's no place the temporary func wrapper could be allocated
		-Fix: indicate error on action not found in parse action also in the case of action with arguments
		-Fix: str2coord for action arg conversion: do not crash on empty coord
		-Fix: don't crash if menu file did not parse
		-Fix: hid uninit sequence: keep hid structs until after pup unload so plugin uninit cals won't address into already free'd memory
		-Fix: don't crash if rnd_tool_get() is called before tool init
		-Fix: DAD: coord spin: accept 0.00 as legal value even without unit (special case)
		-Add: global var indicating if librnd is running the main loop
		-Add: generate an event when main loop state changes
		-Add: rnd_printf %mw prints an fgw_arg_t; prints coord with units
		-Add: MenuDebug() action with a command to save the menu
		-Add: MenuDebug(force-enable) for menu debugging with the batch HID

	[librnd/hid_gtk2_gdk]
		-Fix: limit poly draw coords to 32767, gdk seems to misbehave with larger coordinates

	[librnd/loghid]
		-Fix: mark plugin a hidlib plugin
		-Fix: preserve override_render bit after setting up the delegation
		-Add: set HID bit 'override render' to capture rendering calls
