1.0.9 (r11472)
~~~~~~~~~~~~~~

	[doc] - design doc fixes
		-Fix: {des7:20} terminology (dealing with component attributes)
		-Fix: {des3:54} and {des3:56}: clarify group child rotation center
		-Fix: {des3:56} wording: the rot field is mandatory (but can be 0)
		-Fix: remove memb from {des3:54} group property table and move the description to {des3:56}; the member list is not really a property but a separate concept, as specified in {des3:53}
		-Fix: {des3:2} missed the member list (which is not a property)
		-Fix: {des3:2} clarify terminology (atom/composite)
		-Add: new section {des3:89} for the child objects, {des3:56} is more about geometry

	[io_eeschema]
		-Add: initial stable version of the plugin that can load KiCAD/eeschema sheets

	[lib_alien]
		-Change: refine coords too large error message

	[sch-rnd]
		-Fix: BufferLoad() default format is NULL for autodetect so that alien format symbols are easier to load (from Import menu)
		-Fix: move the About window from the Help menu to the Window menu to match pcb-rnd, with hotkey {i a}; remove the Help menu

	[std_devmap]
		-Fix: use csch_compile_attribute() instead of direct attribute merge/copy so that the '-' and '+' prefixes are applied

	[tests]
		-Add: export_abst: print execution log to stderr after diff fails (so that no logs need to be extracted from obscure distro build systems)

1.0.8 (r11368)
~~~~~~~~~~~~~~
	[act_draw]
		-Add: update extobj after group creation just in case attributes made the group an extended object

	[attbl_csv]
		-Add: attribute table in CSV format

	[attbl_json]
		-Add: attribute table in json format

	[attbl_lht]
		-Add: attribute table in lihata format

	[attbl_tedax]
		-Add: attribute table in tEDAx format

	[backann]
		-Add: expose more API so the plugin can be cross-called from other plugins to present a back annotation dialog

	[boxsym-rnd]
		-Add: accept "bidir" for pin direction, draw the bidir "triangle" graphic on the inside

	[diag]
		-Add: DumpLibSymbol(), similar to pcb-rnd's DumpLibFootprint - needed in bedrock-rnd preview CGI

	[doc]
		-Fix: missing generated index.html's - these need to be commited so that the doc is self-contained and doesn't depend on building anything
		-Fix: packager's doc: install hlibrary instead of hlibrary/* - it is an empty directory so the /* variant wouldn't match anything
		-Fix: use the new file naming convention (.rs and .ry ending) in the format doc primarily, but mention the old convention too
		-Change: web IRC pointing to our own implementation
		-Add: list new download options (binpack, win32)
		-Add: why use section on main page
		-Add: faq (generic and for-geda-users)

	[export_boxsym]
		-Add: plugin for exporting hierarchic child sheet into a boxsym script (for a symbol to be used on the parent sheet)

	[gui]
		-Add: popup logics: extended objects shall have a separate popup namespace so it's possible to create menus for them

	[io_geda]
		-Fix: update text object after placement so inst coords are computed from spec coords
		-Fix: placement of external geda components: invert rotation if mirx is set
		-Fix: r10776 "multiple attributes shall become an array" shouldn't be the case for embedded symbol's default attribute being overwitten by a locally specified value
		-Fix: when copying over externally referenced symbols props, do all symbol transformations first then update the group before doing any floater text inverse transformation so the floater text ends up at the right coords
		-Fix: floater placement on external sym ref: tune mirror flags using parent symbol's
		-FIx: disbale bbox-offseting of external ref'd symbols - just use true coord placement

	[io_lihata]
		-Add: publish lihata string print (with quoting and escaping)
		-Add: test parse: recognize li:sch-rnd-attbl-v* root as CSCH_IOTYP_ATTBL
		-Add: save group to "/dev/stderr" special handling

	[io_tinycad]
		-Fix: memory leak

	[lib]
		-Fix: don't print abstract port parent's name without checking parent existence (sheet ports won't have a parent component)
		-Fix: compile: don't crash when symbol name attribute is an array, just make up the usual anon name
		-Add: API and implementation for extenteded objects
		-Add: API for attribute table import/export

	[lib_alien]
		-Add: csch_alien_mkcircle - helper for filled/unfilled circles (returns polygon)

	[lib_nanojson]
		-Add: wrapper plugin so multiple other plugins can use libnanojson (io_easyeda and attbl_json for now)

	[lib_tedax]
		-Move: generic escaped field print from export_tedax to the lib_tedax plugin so it can be reused in other plugins using the format

	[libucsv]
		-Import: csv parser from fawkml into a src_3rd as a reusable microlib

	[propedit]
		-Add: prepare low level for regex based attrib del
		-Add: propdel() action

	[sch_dialogs]
		-Fix: don't attempt to create a floater text for a group ref (to a local lib symbol) from the abstract side floater button; this wouldn't work because adding a floater would require modification to the group ref; throw an error (instead of an assert)
		-Fix: don't let the attribute dialog fill in NULL or empty string value in any attribute; NULL string value would be interpreted as an array attribute
		-Fix: attribute dialog, abstract side: throw an error (instead of a crash) when the abstract floater button is pressed with no attribute selected

	[symbol]
		-Add: common_sym: terminal graphics bidirectinal "trinalge" with bidirtri, both on inner and outer side

1.0.7 (r10848)
~~~~~~~~~~~~~~
	[build]
		-Update: bump librnd dependency to 4.2 (for svg export colorspace support)
		-Fix: don't assume libs/ldl exists in scconfig templates (it won't on win32)
		-Fix: base config.h's selection between static and runtime prefix not on win32 but RND_WANT_FLOATING_FHS
		-Fix: pass on $(CC) when building minuid recursively so that the target compiler is used
		-Fix: compile tests/std_forge_cond with target CC
		-Fix: make install in src_3rd: copy minuid util's executbale with the optional $(EXE) suffix so win32 installation doesn't fail
		-Add: static librnd link option for the win32 port
		-Add: link socket lib (for win32 executable)

	[doc]
		-Fix: hierarchic 20_led example: res_led needs to be a ./ local network to avoid the two channels shorted
		-Fix: hierarchic example 52_path: res_led needs to be a local net
		-Add: hierarchic: 20_led: also explain local net naming
		-Add: include example config names and a practical example in attrib_export_name doc

	[export_bom]
		-Add: --part-rnd option (bool) that expoprts in part-rnd tEDAx

	[export_svg]
		-Add: color space export option (color/grayscale/b&w)

	[export_tedax]
		-Fix: don't write nettags for a net that does not have any connection

	[io_altium]
		-Fix: ascii test parse: refuse if first line fails to read
		-Fix: ignore netlabels with no text (sample found by Scott while loading old Protel sheets)
		-Fix: don't stop parsing net labels after finding the first "invisible" (no text) net label - the rest may be valid net labels
		-Fix: don't free the content before printing it in an error message

	[io_easyeda]
		-Fix: pro: don't crash when Symbol attribute's value is nul
		-Fix: pro: accept null as 0 degree rotation
		-Fix: std: test parse uses a custom getline so it doesn't depend on newlines in json
		-Fix: std: don't crash on bundle free when there's no gdom
		-Add: pro: support for BUS and BUSENTRY (translated into purely graphical buses for now)
		-Add: pro: parse TABLE and TABEL_CELL (sic!), remember tables in a hash table by table id
		-Add: pro: preliminary device map support: load the Symbol attribute for each device from project.json and use it in component->symbol lookups if there's no local symbol attribute but there is a device attribute
		-Add: std: accept unknown keys in the BOM subtree - these look like custom (user assigned?) keys
		-Add: return GDOM_CUSTOM_NAME for BOM entries
		-Add: std: low level support for "components" subtree with custom keys

	[io_geda]
		-Add: fallback mechanism for attr based connection: if no terminal is found by pin number, fall back assuming connection to implicit terminal (common for power pin connections in geda)
		-Add: read multiple attribute vals into an array
		-Add: postproc: if attribute "net" from geda is an array, make a connection for each element

	[io_ngrp_fawk]
		-Fix: bail out with error if reading the first line of the sheet fails

	[lib]
		-Fix: over-allocation of local temporary array while breaking up a wirenet
		-Add: replace win32 #error at minuid initialization with the same code that worked in pcb-rnd: salting with the PID of the process (minuid will automatically use the current time on win32 and time+pid is unique enough for now)

	[lib_target]
		-Fix: attribute blacklisting mechanism broke due to typos

	[sch-rnd]
		-Fix: conf dir is runtime built in floating fhs mode
		-Fix: partial screen redraw with lr-box: make sure crosshair and attahced objects are redrawn properly: start a crosshair change before the partial redraw (so crosshair is removed) and finalize it after the draw so crosshair is displayed again
		-Fix: remove-selected: when a group is removed and all its members are removed, do not remove the members individually becuase they are already removed and double remove in libcschem will lead to an assert or crash; typical example: wirenet group and its floater name text; removing the group removes the floater and then an attempt to remove the floater would be a problem
		-Fix: GUI for creating new sheet: refuse path separator in sheet name

	[sch_dialogs]
		-Add: ViewPortDialog() - extra view port with its own zoom/pan state

	[sim_ngspice]
		-Fix: use port[0] for char * (instead of char **) when printing %s for noise analysis

	[std_forge]
		-Fix: don't execute conditional forge scripts immediately but collect them on a temporary list because the genht iterator may be confused due to attr modifications

	[symlib_fs]
		-Fix: handle fread() error return on loading parametric

	[target_spice]
		-Fix: test parse for spice model also accepts .subckt (or .SUBCKT), not only .model: more complex models are coming as a subcircuit and the model name extractor already handles .subckt for that


1.0.6 (r10735)
~~~~~~~~~~~~~~
	[doc]
		-Add: user doc, hierarchic: anchor to hlibrary section so it can be linked
		-Add: packaging: missing /usr/share/sch-rnd/hlibrary from the core package
		-Add: datasheet (similar to pcb-rnd's)
		-Add: mention official distro packages and link repology
		-Add: state: mention release versions from which a major feature is available
		-Update: state: hierarchic design got implemented already, in 1.0.5, and this completes the original 2023/2024 nlnet plan
		-Update: action reference and key list

	[font]
		-Fix: font uninit: don't attempt to free the key or non-allocated content of the embedded font

	[io_easyeda]
		-Add: load EasyEDA std and pro projects, sheets and symbols

	[io_geda]
		-Fix: be more tolerant on attribute line without '=' (broken file?)
		-Fix: ignore the \r character while reading strings
		-Fix: don't postproc sheet while loading symbols for it; postproc the buffer sheet when loading a symbol into the buffer
		-Add: emulate gschem buses by graphical lines
		-Add: place non-empty symbol for lib symbols not found or not loaded with text objects explaining the problem (a weak emulation of gschem's behavior)
		-Add: bad symbol dummy group: message differentiates between symbol not found and sombyol unable to load

	[io_lihata]
		-Fix: missing casts for minuid (that prefers to operate on unsigned char)

	[lib]
		-Fix: hierarchic: qsort() on hierarchic level should use ->aid as secondary key for reproducible output across different libc implementations when objects are on the same hierarchic level
		-Fix: typo in error message
		-Fix: when reporting port attrib merge errors, also report the name of the component, that's how the suer would find it
		-Add: expose util_wirenet's csch_find_wire_at() for easy wire lookup in io_ plugins that need to support location based "netlabels"
		-Add: add a 3rd error string to the attribute merge function for more detailed error reporting without having to allocate strings

	[sch-rnd]
		-Fix: font lookup: don't crash when pen is NULL
		-Fix: wrong description for the BufferLoad() action
		-Fix: BufferLoad() doesn't ignore the fmt argument

	[std_devmap]
		-Fix: compiler: don't crash if parent is NULL (happens in some cases when exporting a symbol)

1.0.5 (r10409)
~~~~~~~~~~~~~~
	[build]
		-Fix: central makefile typo made src_3rd and font linstall/uninstall do a normal install instead

	[core]
		-Fix: add gtk4_gl in the preferred GUI list
		-Fix: wrong syntax description for buffer internal actions
		-Fix: wrong description for buffer internal actions

	[doc]
		-Fix: 06_hierarchy: reference is by uuid, not uid (ambiguity)
		-Fix: excess </table> in desing doc chapter 4
		-Update: {des6:7}: not only root sheets are listed in the project file
		-Add: top sheet is a root sheet in {imp6:6}
		-Add: hierarchic design examples and doc
		-Add: export_spice unslotting section anchor so it can be directly linked
		-Add: {des6:28} specifies that the same hierarchic prefixes are used for components that are used for networks.
		-Add: hierarchic: {des6:8} specifies the fallback behavior of ^/ addressing: if nothing is found, no global net is created but error is thrown
		-Add: desgind doc {des6:15} defines the term "sheet reference symbol" explicitly to make it easier to link back from other docs
		-Add: list more features on the main page

	[export_abst]
		-Fix: don't crash on invalid (NULL) components and ports
		-Add: hierarchic: when listing ports, prefix them with their referer name
		-Add: indicate if a port or component or net is marked omit

	[export_tedax_footprint]
		-Add: new plugin for exporting sheet graphics as a tEDAx footprint

	[hlibrary_fs]
		-Add: new plugin for hlibrary (hierarchic sheets library from the local file system)

	[io_geda]
		-Fix: don't crash if pinnum is NULL in postprocess
		-Fix: potential crash when loading symbols with attributes before the first object

	[lib]
		-Fix: memory leak: sheet free should remove config state as well
		-Fix: memory leak: attrib compile always frees src
		-Fix: memory leak: attrib copy all func
		-Fix: memory leak: lib_add_all() path handling
		-Fix: memory leak: free project's p4 vector on project uninit
		-Fix: memory leak: free project p4 internal config list at the very end
		-Fix: memory leak: free plug_io list at the end
		-Fix: memory leak: in plug library path handling
		-Fix: memory leak: caused by a typo
		-Fix: memory leak: netname while dealing with hierarchic sheet ref syms
		-Fix: memory leak: pen free should free pen font name and style
		-Fix: memory leak: sheet_uninit() shall free fullpath as well
		-Fix: memory leak: around symbol name translation
		-Fix: memory leak: abstract "sheet ports" shall be freed with the abstract model
		-Fix: don't crash on no project file available
		-Fix: if a wirenet has only junctions, it's also considered an empty wirenet
		-Fix: library refresh: need to replace old root with new root in every existing sheet, as roots are shared
		-Fix: don't crash on saving in plug_io when realpath() fails (happens for write permission problems as well)
		-Fix: wirenet split/merge: don't crash when line object's parent is NULL
		-Fix: make sure if wires are split off to a new wirenet in some operation (e.g. line move) the new wirenet seg is checked for wirenet merges
		-Fix: compiler should not attempt to directly compile hierarchic external sheets, they are like aux sheets, they are compiled only through hierarchic references
		-Split: anet_get() and anet_new(); the former should be read-only and later work from short name
		-Add: support for hierarchic design
		-Add: compiler looks up net names with scope
		-Add: enable the sheet local scope on net lookup
		-Add: attribute copy function that changes the key of the attribute during the copy
		-Add: sheet type "external" for sheets loaded for hierarchic
		-Add: when an object from a wirenet is removed also remove all floaters if there are only floaters left in the wirenet
		-Add: integrity check internal API: ASSERT1() that can print an argument
		-Add: integrity check: floater-only wirenet error message include wirenet ID so it's easier to find

	[lib_anymap]
		-Fix: memleak: free <local> root hash

	[lib_netlist_exp]
		-Fix: export netlist with the fallback name attribute only on hierarchy level 0; else use the global name (that has hierarchic path in it) to avoid collisions
		-Fix: hierarchic: export components with full hierarchic namem on hlev > 0 if there's no display name
		-Fix: hierarchic: if there's no name attrib but there's refdes attribu, use that (instead of full hierarchic name)
		-Fix: hierarchic: if display/name or refdes is available, prefer that over more fancy solutions

	[lib_ngrp]
		-Add: hierarchic: disable descend: we are not supporting non-graphical sheet hierarchies for now

	[lib_target]
		-Fix: memhandling: avoid double free on whitelist/blakclist by settign back isused to 0 after a free

	[library]
		-Add: shterm "symbols" (really terminal groups) for hierarchic design: subsheet terminal (in, out, inout)
		-Add: hierarchic: create empty hlibrary/ so that the standard search doesn't fail and the user knows where to put files

	[menu]
		-Import: cursor keys, enter and {k r} from pcb-rnd

	[query]
		-Add: search dialog: print current scope sheet or project name
		-Add: dlg_search: "scope follow"

	[sch-rnd]
		-Fix: memory leak: on font load
		-Fix: memory leak: free all projects on exit
		-Fix: memory leak: log messages after export
		-Fix: memory leak: on rnd font (&loadme key)
		-Fix: memory leak: in rnd font key
		-Fix: set hidlib crosshair to crosshair coords on move-to so actions implemented in the hidlib can track the crosshair
		-Fix: prompt for quit-confirmation if any open sheet has changed, not only the sheet currently active
		-Fix: when creating a new unlisted sheet in a project, make sure it ends up within the project in the layer selector, even tho it is not listed
		-Fix: recalculate sheet bbox before sheet export to make exports reproducible
		-Split: lib reload all into a separate function so it can be reused for hlibrary
		-Add: move csch cfg registration into a macro so it's easier to register more config nodes
		-Add: config subtree for the compile's hierarchic corner cases (mismatched netname handling)
		-Add: HlibraryRehash() action with hlibrary search path for reusable hierarchic sheets

	[sch_dialogs]
		-Add: abstract dialog: remark column so that objects that are omitted can be indicated
		-Add: abstract dialog: checkbox to hide omitted items
		-Add: when listing abstract net's ports indicate subsheet portand omited ports
		-Add: hierarchic: when listing ports, prefix them with their referer name
		-Add: project properites dialog has a section for external sheets (hierarchic refernces to the hlibrary) and the toggle button converts them to aux

	[sch_rnd]
		-Fix: memory leak on freeing all designs on exit (config state)

	[sim]
		-Fix: memleak in sch_sim_hook_eng_call(): when removing a fungw function, free it

	[sim_ngspice]
		-Fix: memleak: unload should call over to target_spice

	[std_cschem]
		-Fix: hierarchic: always prepend hierarcic prefix to component name
		-Add: hierarchic: implement engine binding for wirenet_name_to_net_name to prefix net names with hierarchic path
		-Add: hierarchic: implement attrib-net-name-to-net-name translator engine hook so that connect attribute's net names are properly prefixed with the hierarchy

	[std_forge]
		-Fix: memleak: attrib source

	[tagret_spice]
		-Cleanup: make new bridge net creation simpler (always alloc)

	[target_pcb]
		-Fix: uninitialized fields in target context struct
		-Fix: memleak on whitelist/blacklist system

	[target_spice]
		-Fix: memory leak on script_data
		-Fix: generate both global and local component name to not break hierarchy
		-Add: hierarchic: when generating full component name for a slotted device, prepend hierarchic prefix
		-Add: hierarchic: prepend first character of the original component name before adding hierarchic path - first chaacter determines device type in the ancient spice format
		-Add: include hierarchic prefix in display name - that's what gets exported

	[tests]
		-Fix: export_spice should return false on failure
		-Fix: std_forge_cond: use detected librnd extra ldflags for -L's when linking
		-Add: test cases for hierarchic features


1.0.4 (r10002)
~~~~~~~~~~~~~~
	[boxsym-rnd]
		-Add: optional shape_fill command: when argument is true, use sym-decor-fill on the shape polygon
		-Add: use sch-rnd to figure true text dimensions before laying out labels

	[build]
		-Update: bump dependency to librnd 4.1.0
		-Change: switch over to using librnd 4.1.0's font2 engine

	[doc]
		-Del: recommendation of using svn head of librnd - since sch-rnd is stable for a long time already, stable librnd should always work from release tarballs
		-Fix: typo in funcmap example: attiny has PA6 and PA7, not PB6 and PB7
		-Fix: empty groups and broken connections in the slot example sheet
		-Change: switch over irc from kiwi to mibbit
		-Add: {des3:37}: allow &name; entities in text, in-line with Ringdove font2 customs
		-Add: mention shape_fill in boxsym-rnd examples
		-Import: Zoom() action details from pcb-rnd

	[export_bom]
		-Add: list_sep in default config to serve as an example

	[font2]
		-Add: render invisible horizontal tabs properly - matters a lot for non-graphical sheet

	[gui]
		-Add: implement ZoomTo(selected) by wrapping the standard librnd Zoom() action

	[io_altium]
		-Fix: when slotted symbol inactive pins are not created, do not throw error on attributes for those pins not being added to the non-existing pins
		-Fix: net label not on wire: it's not a fatal error
		-Fix: rectangle x1;y1;x2;y2 default value is 0 when omitted from the file
		-Fix: pin x1;y1 default value is 0 when omitted from the file
		-Fix: note x1;y1 defautl value is 0
		-Fix: arc missing start/end angle defaults to 0
		-Fix: sheet ports with style==3 should have ports on both ends
		-Fix: net labels can be placed on terminals - add a short 45 degree stub wire so the wirenet name floater can be placed
		-Change: don't print error message on attribute with no name - this seems to be a normal case there

	[io_geda]
		-Fix: got external symbol rotation angle the wrong dir
		-Tune: external symbol placement: don't shift in x directionby bbox
		-Add: library symbol mapping: resolve paths so that $() substitution works

	[io_orcad]
		-Add: first stable version

	[lib]
		-Fix: lib mapping error messages shouldn't hardwire 'Symbol' but use the given library master's name
		-Fix: make sure saving backups does not change sheet file name to the file nameof the backup being saved (fixes the bug "sym edit mode backup save renames file")

	[lib_anympap]
		-Fix: don't crash if entry is not found (due to missing local lib root for example)

	[lib_plot]
		-Cleanup: remove local y flip, using preview's y flip exposed in librnd 4.1.0
		-Add: adaptive text rendering on labels, depending on zoom level
		-Add: draw arrow on the x axis

	[libcschem]
		-Fix: integrity check false positive: in symbol edit mode the sheet is dummy and will not have an uuid, don't throw an error on that

	[librnd4]
		-Del: remove csch_basename() in favor of the rnd_ variant in librnd 4.1.0
		-Del: remove csch_parent_dir_name() in favor of the rnd_ variant in librnd 4.1.0
		-Del: remove csch_relative_path_files() in favor of the rnd_ variant in librnd 4.1.0
		-Del: remove libcschem util_path.[ch] -> functionality moved to librnd 4.1.0

	[sch-rnd]
		-Fix: uninitialized local var in the initial sheet/project loader logic
		-Fix: xmirrored font rendering misalignment when string has leading spaces (happens with fontv2)
		-Fix: don't initialize new sheet's filename too late (caused lib paths depending on $(rc.path.design) to disfunction)
		-Change: enable human readable coords in 'k' format by default now that we depend on librnd >=4.1.0
		-Add: standard librnd Export() action
		-Add: FontInfo() action for scripting (for example for boxsym-rnd to figure real text dimensions)
		-Add: API to calculate selection bbox

	[sch_dialogs]
		-Del: remove local timed change implementation, use librnd 4.1's

	[sim]
		-Del: remove local implementation of mk/rm temp dir, use librnd4.1's

	[sim_ngspice]
		-Cleanup: use rnd_hid_export_using() instead of locally implemented code for looking up the exporter

	[std_forge]
		-Change: switch over to librnd 4.1's timed change implementation

	[tests]
		-Update: slot ref for the recent fixes in the example (source of the test)

1.0.3 (r9600)
~~~~~~~~~~~~~
	[act_read]
		-Fix: memory leak on idpath free
		-Add: action: RtreeList (search the whole rtree or a region of it)

	[backann]
		-Fix: dialog: don't crash on 'details' button if referred object is not found
		-Fix: allow creating new attributes (don't require existing attributes to be edited) on an attr change input on bap
		-Fix: when processing conn removal: if a piece of wire line connects more than one terminal, mark it a tricky case, the line can not be removed without side effects
		-Add: support tEDAx back annotation packs; auto-detect file format
		-Add: handle objects lists for mutliple object delete in autofix
		-Add: component add instruction with autofix
		-Add: component del instruction with autofix (can remove multiple symbols)
		-Add: pin_attr instroction
		-Add: grconn removal: if a complicated wire line intersects the terminal at the end of the wire line, remember it can be fixed by truncating the line
		-Add: conn removal corner case: when the last conn is removed from a wirenet and it was a graphical connection, remove the whole wirenet group

	[boxsym-rnd]
		-Add: pin "funcmap" property

	[core]
		-Add: integrity check includes sheet load name in the report because of multi-sheet support
		-Add: config node for orthogonal rubber banding

	[doc]
		-Add: developer doc about symedit
		-Add: funcmap example (using attiny24)
		-Add: attrib_exort_name: add a full example of workflow prefixing

	[export_abst]
		-Fix: API function proto mismatch: export_abst should get an options arg, even if it is ignored

	[export_spice]
		-Fix: API function proto mismatch: export_abst should get an options arg, even if it is ignored

	[export_tedax]
		-Fix: API function proto mismatch: export_abst should get an options arg, even if it is ignored

	[funcmap]
		-Add: funcmap plugin

	[gui]
		-Add: popup menu calls for clicking on empty area on the sheet (different menu name for sheet and symbol-as-sheet)
		-Add: indicate rubber band mode in the bottom status line
		-Add: indicate orthogonal rubber band mode in the bottom status line

	[io_altium]
		-Cleanup: remove gschem and gEDA references from comments (copy&paste error)

	[io_lihata]
		-Add: special case loading a cschem-group-v1 (symbol-as-sheet for symbol editing)
		-Add: load symbol-as-sheet as the direct group, not as a (sym) group under the direct group; this way it's less of a special case for the rest of the editor
		-Add: copy symbol related pens from default sheet when loading symbol-as-a-sheet
		-Add: corner case handling: when saving a group, skip saving pens marked ->copied_from_default; in sheet-as-symbol editing these are the pens created at sheet_init

	[io_ngrp_fawk]
		-Fix: fgw_eng_unreg() needs the name of the engine to be passed

	[lib]
		-Fix: do not merge parallel diagonal lines if they do not intersect
		-Fix: line merge on overlap: on full overlap just remove the line instead of truncating it
		-Fix: generate the "port xy has a non-graphical connection to net foo, but no graphical connection" error message only when the terminal explicitly requests it (would be a drc check later)
		-Fix: when polygon ->has_fill changes remove or insert in the fill rtree so the change is visible in render
		-Fix: library rehash: make sure old, already free'd roots are not added to the list again
		-Fix: reset sheet aids even when the sheet is then not compiled to make sure there are no dangling references to a previous compilation
		-Fix: never attempt to remove sheet->direct or sheet->indirect when they become empty for a group removal
		-Fix: when a pen property changes make sure all bboxes of all objects that use this pen for stroke are recalculated
		-Add: util_sheet for standard sheet initialization usable in any loader
		-Add: special case sheet save: if sheet's ->is_symbol is true, save direct group as a group only to be used as a symbol
		-Add: implement loose_sym
		-Add: object endpoint hash table
		-Add: util_endpoint - various helpers for dealing with object endpoints
		-Add: implement csch_endpoint_list_connected()
		-Add: publish low level "wire line within wirenet" create function
		-Add: publish low level wire line merge call
		-Add: line merge option for removing stub on full overlap
		-Add: connected endpoint mapper: optional filter function so the caller can decide which objects and endpoints are included
		-Add: htepu offers an x;y-only variant of the keyeq/hash functions for the case when only unique coords of endpoints are interesting but not the cause of them (object and index)
		-Add: poly contour object (and corner) lookup by coords
		-Add: integrity check looks for ghost objects (objects removed from the data tree but not from the rtree)
		-Add: p4 API (per project per plugin storage)
		-Add: more details on the library mapping error message when all plugin realpaths failed: path may not exist
		-Add: DiscardAbstract() action to free the abstract model - useful for hunting down memory leaks
		-Add: drc event and central infrastructure: basics (drc context, violation struct)
		-Add: drc not ran error message tips: the typical DRC will also need the project compiled
		-Add: drc references to the abstract model
		-Add: DRC(print): print violations to stdout
		-Add: DRC(log)
		-Add: utility call that decides if any endpoint of a polygon contour object falls on an x;y coord

	[lib_alien]
		-Fix: missing header watchdogs

	[lib_anymap]
		-Add: new plugin for hosting the common code of map-like engine plugins (devmap, funcmap)
		-Fix: don't insert multiple map objects with the same name from the sssym cache

	[lib_ngrp]
		-Cleanup: warnings on passing the wrong type of object (need to pass generic hdrs)

	[lib_tedax]
		-Add: new plugin (in core) for handling tEDAx files: multiple plugins need to read or write tEDAx independently
		-Move: tEDAx getline from io_ngrp_tedax to lib_tedax for reuse

	[lib_ucdf]
		-Add: split out ucdf.o into a wrapper lib plugin so multiple plugins can use it through pup dependencies (io_altium and io_orcad are going to need it)

	[menu]
		-Add: popup menu for sheet and symbol-as-sheet: propedit, attr edit, pen dialog
		-Add: copy rubber band mode menu item from pcb-rnd
		-Add: menu item for orthogonal rubber band mode
		-Add: poyledit in the toolbar
		-Add: menu for unselecting all on all sheets of the current project
		-Add: funcmap menus
		-Add: loose sym submenu in Mode
		-Del: remove realign grid - we don't have that feature in sch-rnd

	[propedit]
		-Add: implement setting or toggling loose_sym on sheet
		-Add: special case in symedit: include direct group's non-geo properties (uuid)
		-Add: symedit corner case: propset on sheet uuid should work (and set direct group's uuid)

	[renumber]
		-Add: action args for running on all sheets of the current project
		-Add: dialog box support for running on all sheets of the current project
		-Add: help text for the Renumber and RenumberDialog actions

	[sch-rnd]
		-Fix: sheet init: don't overwrite existing pens when copying default pens; this lets sheet-as-symbol editing's loader preserve custom pens defined in the symbol
		-Fix: sheet load: make sure engines are initialized before sheet post-load events are called so event handlers find engines set up
		-Fix: corner case: when a new root sheet or aux sheet is created with no project and the user refuses project file creation, turn the new sheet into unlisted - no project file means it can not be listed
		-Fix: don't mess up an existing project file's lht doc when creating a new page, that would invalidate other existing sheets already in that project
		-Fix: better env vars on System(): save crosshair coords in cschem coords instead of mm (but keep the old ones as well for compatibility)
		-Fix: screen search for gui: always ignore junctions; junctions shouldn't be moved or resized
		-Fix: draw code shouldn't crash if abstract object is not available (when deciding about DNP and omit graphics)
		-Move: sheet setup utility function from lib_alien to sch_rnd: will be needed in non-alien IO and potentially other parts of the code
		-Add: sheet init: optionally set new pen's ->copied_from_default to 1
		-Add: change tool stroke pen names from the detault to sym- prefixed ones in symbol editor mode (on design role)
		-Add: Unselect(AllProject) to unselect all objects in all sheets of the current project
		-Add: include funcmap in standard views

	[sch_dialogs]
		-Fix: tree view: invoke propedit or attr edit using the target object's sheet (hidlib) instead of the dialog's own - this fixes the bug that in a multi-sheet setup the dialog always edited the objects for the sheet it was invoked for
		-Add: attr edit works on sheet scope (sheet attributes can be edited)
		-Add: attribute dialog: button for creating floaters from abstract attributes
		-Add: tooltips to explain the difference between the two floater buttons
		-Add: refine the error message thrown when an engine could not be added to a view (hints on typo and missing plugin)

	[sim]
		-Fix: missing success return val on sim temperature set
		-Fix: invalid memory write (argv[] too small)

	[sim_ngspice]
		-Add: handle the case of explicitly invalid analysis type or presentation type (throw error)

	[std_devmap]
		-Cleanup: split anymap from devmap
		-Cleanup: rewrite context management: use p4 instead of per sheet engine data
		-Fix: when cleaning sheet local cache, also clean the indirect group so the cache doesn't re-appear on save

	[std_tools]
		-Add: don't let wirenet drawn in symbol edit mode
		-Add: when rubber band is enabled, map endpoints to grab and draw them while moving
		-Add: rubber band mode for wire move, optional ortho rubber band mode
		-Add: poly edit tool: grab and move polygon corners (use ctrl for ortho move)
		-Add: recognize when the arrow tool is used on a poly corner and go to the poly edit mode

	[symbol]
		-Fix: common_sym: mirx and miry fields are integers, shouldn't include pen name
		-Add: mark rail-type symbols's terminals with the drc/require_graphical_conn=1 attribute to generate an error message when they are not connected anywhere
		-Add: common_sym: if pin label2 starts with a %, enable dyntext on it; typical for funcmap labels

	[target_spice]
		-Fix: missing return on component0 hook

1.0.2 (r8963)
~~~~~~~~~~~~~
	[build]
		-Add: support for byaccic and ureglex
		-Fix: building deps require -I. because of byaccic generated code

	[doc]
		-Add: include the new view. and stance. substitutions in the design doc
		-Add: design doc on forge: explain it happens during compilation
		-Add: design doc on forge: document conditional forge expression syntax
		-Add: design doc on forge: make it explicit that conditional forge performs operations only if condition is true
		-Add: design doc on forge: specify stances
		-Add: design doc on forge: implementation notes on stance based build options, with a practical example on model
		-Add: design doc on forge: example on the sub_major stance
		-Add: design doc on forge: list all standard id.id substitutions in conditional forge expressions
		-Add: design doc on forge: link stance section from dyntext (03_drawing)
		-Add: omit and dnp examples
		-Add: attribute export naming
		-Add: document target_pcb
		-Add: document target_spice
		-Add: export_tedax: document omit and dnp
		-Add: export_spice: document attributes, omit and dnp
		-Add: export_spice and export_tedax are of type netlist
		-Add: document export_bom
		-Add: document export_abst
		-Add: export_bom: refer to pcb-rnd's export_bom doc and describe the differences

	[export_bom]
		-Add: BoM export based on pcb-rnd's templating bom code

	[export_spice]
		-Add: respect component and network omits

	[export_tedax]
		-Fix: wrong command on exporting pinname
		-Fix: don't print pinname command if port's name is not available
		-Add: export extra component and network attributes that have export_name
		-Add: respect component and network omits

	[io_altium]
		-Fix: don't require RECORD=10 (rect) cornerxradius and corneryradius in non-rounded case

	[io_lihata]
		-Fix: write: quote attribute key when needed, it may contain ':'

	[io_ngrp_fawk]
		-Fix: typo in test_parse (potentially missed truncated file)

	[lib]
		-Fix: csch_attrib_copy_all_undoable(): create dst attribute before adding array items in it
		-Fix: csch_attrib_copy_all_undoable(): preserve order of array items when array needs to be copied over from src to dst
		-Fix: csch_attrib_copy_all_undoable(): allocate attr history source for the array copy operation
		-Fix: also merge attributes when abstract nets are merged - fixes forge and omit on nets connected to vcc/gnd/rail
		-Fix: undoable attr array val change memory management bug: do not attempt to free special value not allocated (deletion marker)
		-Fix: arc mirror low level corner case: when updating delta angle, if start and endpoint are the same, that's either 0 or 360 degree; remember if the original arc had 360 deg and use that value withut calculating atan2() for the endpoint (common case: full circle)
		-Fix: when propagating bboxes up, if child obj is a group, use it's bbox_flt instead of bbx when calculating parent's bbox_flt; fixes the bug that direct groups' bbox_flt did not include floaters embedded in symbols
		-Fix: wire merge vs. conn ordering bug
		-Fix: group rotation operation: no need to invert angle depending on mirror
		-Fix: lib backend's realpath: const correctness to patch up memory leaks
		-Fix: memory leaks around csch_lib_add() path handling
		-Move: projet file flush from sch-rnd to libcschem, as the stance code is going to depend on it
		-Add: remember view id in the abstract model during/after the compilation
		-Add: remember project in abstract model during compilation - some plugins may need it
		-Add: generic version of the stance value resolver (moved from std_forge, more parts of the code will need this)
		-Add: generic version of the view property resolver (that returns the view name string for view.name, moved from std_forge)
		-Add: dyntext support for view.name and substitute %stance.%
		-Add: stance helpers: set stance value, add value to the list of available stance values
		-Add: flush project file after stance changes on project role
		-Add: support for attribute export name
		-Add: postprocessing step in compile to cache omit and dnp attributes for quick rendering
		-Add: make the "undoable" part optional in csch_attrib_copy_all_undoable()
		-Add: split attribute val compare from attrib compare: attribe merge will need to compare the values only
		-Add: csch_attrib_copy_all_undoable(): skip copy or merging if array type attributes have the same value
		-Add: csch_attrib_copy_all_undoable(): copy over arrays when src has them but dst doesn't
		-Add: csch_attrib_copy_all_undoable(): separate the API from the concrete model; when not undoable, don't require a cobj
		-Add: csch_attrib_copy_all_undoable(): require sheet != NULL for the undoable case (assert)
		-Add: engine transient storage infra in compiler
		-Add: API variant of merge-into that remembers all new object pointers for postprocessing
		-Add: csch_lib_add_all() gets an argument for force a re-scan of existing roots (so that a re-scan is really a deep re-scan), with a mechanism that guarantees that each root is mapped only once
		-Add: introduce compile component0 call to bypass side effects
		-Add: API doc: explain the purpose of engine hooks COMPONENT0..COMPONENT2
		-Add: publish the API of updating object hdr caches (dnp and omit)
		-Add: automatically update object hdr cache after COMPONENT0 and COMPONENT1 steps
		-Add: project abst export API: send through options[]

	[lib_plot]
		-Add: generic plot widget

	[lib_target]
		-Add: new support plugin for delivering attributes on export

	[menu]
		-Add: test bench dialog menus for selected object and in symbol context popup
		-Add: circuit simulation in the project menu
		-Add: make StanceDialog() accessible from the menu
		-Add: symbol context menu for the conditionals
		-Add: conditional dialog submenu for 'omit' in wirenet context menu

	[query]
		-Add: project scope for script run API
		-Add: query() action view subcommand accepts scope as last argument
		-Add: advanced search dialog: add a combo box for search scope (sheet or project)

	[sch-rnd]
		-Fix: switch to initial sheet before export so that project config is applied before the export
		-Fix: project file creation prompt: check if the file already exists and return 0 (like as we have created it) it so; this makes the function usable for assuring the project file exists, without further checks on the caller's side
		-Fix: shift-click unselect: unselect parent objects as well; fixes corner case when a wirenet is selected and wire lines are unselected one by one; as long as the wirenet is selected, the wire unselection is not visible
		-Fix: BufferSave() should use file selector window title corresponding to the scope of the save
		-Add: stance config: a few static fields and provision for optional extra fields
		-Add: default-sheet: print main stances and view name in the titlebox
		-Add: conf lists for the possible stance values
		-Add: render a big red X over components that are omitted
		-Add: render 'DNP' over symbols marked DNP in the abstract model
		-Add: draw small red X signs on wirenet lines when wirenet is omitted
		-Add: call srand() with current time on startup so random numbers differ from run to run
		-Add: expose lower level font draw API with (floating point) scale, rotation and miror-y options

	[sch_dialogs]
		-Add: stance dialog (action: StanceDialog())
		-Add: ConditionalDialog() for conditional omit/dnp
		-Add: test bench editor dialog

	[sim]
		-Add: high level circuit sim support

	[sim_ngspice]
		-Add: ngspice support for high level circuit sim

	[std_cschem]
		-Add: do not apply connect attribute if component is marked to omit

	[std_devmap]
		-Cleanup: move devmap lib related action from sch-rnd to std_devmap for config access
		-Fix: devmap lib refresh action uses devmap lib search path (and not sym lib search path)
		-Add: when a devmap is not found in the lib, the error message contains a hint on devmap rescan
		-Add: device attributes, according to coralEDA std002

	[std_forge]
		-Fix: run in engine hook component0 instead of component1 so omit is prepared before connect is evaluated
		-Add: accept conditional attributes with prefix forge-if/
		-Add: apply forge on nets
		-Add: TestBenchDialog: GUI for easy access to test benching (test bench affiliation edit on a group of symbols using a table)

	[symbol]
		-Add: add spice/omit attribute to connector(), switch() and testpoint: these are mechanical or PCB symbols, not part of any simulation
		-Add: set low prio device attribute default value on passives (capacitors, coils, resistors), in accordance with coraleda std 002

	[target_pcb]
		-Add: compile display/dnp from pcb/dnp
		-Add: plugin configuration for export attributes
		-Add: use lib_target to mark attribute exports; generate attribute export names for network attributes at the end of compilation
		-Add: create the display/omit attribute (components and nets)
		-Add: whitelist exporting the color attribute (coraleda std 002)

	[target_spice]
		-Fix: set display/omit from component0 so std_cschem connect processing is inhibited
		-Add: create the display/omit attribute on nets and components
		-Add: init global_spicelib_ctx only once; this is relevant since some other plugins, like sim_ngspice will wrap target_spice

	[tests]
		-Update: export abst refs: wirenet group attrib always exported
		-Update: get std_forge_cond to compile again
		-Cleanup: std_forge_cond: do not hardwire gcc-specific flags for compiling the test
		-Fix: std_forge_cond: if only one string is given for resolution, it's name1, not name2
		-Fix: std_forge_cond: use librnd's LDFLAGS for compiling the test executable
		-Fix: std_forge_cond: work around GNU make so it doesn't try to run yacc on the byaccic grammar
		-Add: std_forge_cond: print section headres for easier interpretation fot he log
		-Add: std_forge_cond: better test variable names
		-Add: std_forge_cond: regression tests
		-Add: std_forge_cond: implement 'make test', get it to run from the central make test
		-Add: std_forge_cond: need to include librnd's config.h for RND_INLINE
		-Add: std_forge_cond: fallback RND_INLINE macro in case librnd didn't declare it (old version?)
		-Add: announce when all test passed
		-Add: empty string regression test for forgecond
		-Add: forge cond tester offers a const called "empty" that returns an empty string
		-Add: manual test case for the fix of r8878 (copy of Erich's bugreport)

	[util_wirenet]
		-Fix: corner case: when two wirenets are merged hunt for new overlapping lines and merge them on line level

1.0.1 (r8055)
~~~~~~~~~~~~~
	[act_read]
		-Add: SearchObjAt(), SearchObjAtUnsel() and SearchObjAtGuiInspect() actions for scripting, with crosshair option
		-Add: SchGetXY() action

	[doc]
		-Update: design doc for how root groups within indirect are used (following code best practices)
		-Add: spice tutorial for raw_spice (for ngspice and gnucap)
		-Add: install resources/ when installing doc
		-Add: non-graphical sheet examples work now
		-Add: non-graphical sheet doc details for the final implementation
		-Add: formally specify tEDAx blocks for non-graphical sheets
		-Add: non-graphical sheet: specify the details of vararg fawk functions
		-Add: document the raw spice workflow
		-Add: missing links to chapters of user doc
		-Add: design doc: attrib implementation convention: usr/ attribute key prefix
		-Add: spice tutorial

	[examples]
		-Add: make slot.rs compatible with raw spice simulation

	[export_spice]
		-Add: export self-contained spice netlist (and commands and models, as configured via export options)

	[font]
		-Update: import aussiefont v2 files from Edakrill: cleanups, fixes and control chars for \t, \r and \n

	[gui]
		-Add: load dialog: build file formats and filters from all registered io plugins that can load a sheet so that geda, tinycad and altium would be on the list

	[io_altium]
		-Add: loader for binary and ascii SchDoc sheets

	[io_geda]
		-Fix: symbol placement origin bug from external libs

	[io_ngrp_fawk]
		-Add: non-graphical sheet support: fawk

	[io_ngrp_tedax]
		-Add: non-graphical sheet support: tEDAx

	[io_tinycad]
		-Fix: avoid no-name power symbol's rail attribute accidentally turning into an empty array by naming it unknown
		-Fix: attribute rename: Ref to name
		-Fix: attribute rename: Value to value
		-Fix: symbol rot values revised in x-mirror cases (sym_power2.dsn)
		-Fix: make sure to close "full-circle" ellipse
		-Fix: pin style: when triangle is drawn, move name text by 2 units to avoid overlap
		-Fix: pin length and text placement for type 5 and 6
		-Fix: create symdefs in the symbol master group under indirect to comply with the cschem model and let the library pick up symdefs
		-Fix: set alien coord mult factor only before sheet load, when the config is already available
		-Fix: don't try to modify text objects of group refs, it's enough to modify them on the groups in indirect
		-Add: implement (the graphical part of) <NOCONNECT>
		-Add: calculate connections in postproc
		-Add: support bundled (multisheet) files
		-Add: fill in sheet's loadname from the <Name> tag and invent a fullpath as well
		-Add: read symdef pin's elec property and draw an 'x' if it's 6

	[lib]
		-Fix: avoid addressing out of bounds in conn auto recalc
		-Fix: grp_ref: when removing objects to re-generate a group ref, convert affected conns back from ptr to oidpath
		-Fix: grp ref modify typo caused uninitialized memory in xformed->removed field
		-Fix: in a group ref regen mark conns dirty that are converted back to oidpath format; after finishing an all-ref-update, update all dirty conns
		-Fix: don't crash on wirenet creation failure (happens on non-graphical sheets)
		-Fix: don't try to destroy NULL sheet lib
		-Fix: undoable object move should generate sheet changed event
		-Fix: preserve attribute history of the concrete object's attribute when compiling an abstract object
		-Fix: make "components created during component iteration in compilation postprocess" safe by loop restart
		-Fix: don't crash if io plugin doesn't offer sheet load (it may offer bundled sheet load or none)
		-Fix: don't crash if an io plugin doesn't have a group (sym) loader
		-Fix: print net name in error message instead of net ptr as string
		-Fix: compile: don't free src before use in attribute merge
		-Fix: don't crash when name is an array
		-Fix: do not throw error but ignore component that has name==NULL (e.g. name is an array)
		-Fix: when splitting wirenets for junction recalc, do not lose floaters
		-Fix: when splitting a wirenet creating new wirenets, copy all attributes
		-Fix: text dup inst2spec: counter-act special text mirror effect on rotation angle
		-Fix: corner cases on wirenet splitting vs. floater and attribute copying
		-Fix: junction recalc: do not move objects into a new wirenet group if the map says the whole thign is a single segment
		-Fix: util wirenet line edit merge: when finding other wire lines to merge to, ignore the line being edited
		-Fix: text dup: don't leave ghost objects behind in the rtree when the dup'd text object is on a different display layer than the source text object
		-Fix: optional inverse transformation in line modify call; fixes the wrong line endpoint move in within transformed groups (e.g. rotated/mirrored wirenets)
		-Fix: when undoing line gometry change, update conn geometry to avoid conn smear (on the undo list connection add/del is done before the line geometry is really modified)
		-Fix: csch_text_update(): do not ruin inst vectors with non-parent-transformed spec vectors when do_xform == 0
		-Fix: compiler: resistor terminal connected directly to a vcc terminal and a wire also connected in the same point: shouldn't throw a multiport_net_merge error; the term-term connection is invisible/implicit, so it should merge silently
		-Cleanup: use RND_INLINE instead of csch_inline for simplicity; remove csch_inline from config.h
		-Cleanup: remove non-existing cgrp calls from the API
		-Split: compile single attribute from compile all attributes of a concrete object, so that the single-attribute compiler can be called from plugins
		-Split: compiler: code that compiles a single component and its ports into a separate functionso it can be reused later with delayed component creation
		-Add: expose the vector of all io's so plugins can search it
		-Add: when converting from objects into a symbol or term, rename fill pen as well
		-Add: print connection object ID that triggered the error in the error message for easier debugging
		-Add: non-graphical sheet implementation
		-Add: comment to explain allocation of oidpath API
		-Add: csch_conn_ptr2text() to convert object pointer list back to oid list; useful for avoiding dnalging pointers when objects are re-created
		-Add: introduce a new group bbox that contains all objects, including floaters; get normal hdr.bbox contain only non-floaters (naked bbox)
		-Add: attrib API for appending arrays to existing attributes
		-Add: attribute compilation: append array attribs when requested
		-Add: csch_compile_attribute() can return destination attribute (from the abstract model)
		-Add: separate rtree per layer for tracking poly fulls (for proper fill ordering for rendering overlapping objects)
		-Add: cache polygon area (for fill ordering)
		-Add: plug_io API for loading bundled files (multi-sheet in single file for io_tinycad for now)
		-Add: extend sheet load API so it can optionally take a FILE * already open for the file
		-Add: loclib master group search/alloc by group name (instead of master ptr, so group can be created even if the given master is not available)
		-Add: compile engine hooks for before/after sheet conn compilation and for after project compilation
		-Add: compiler hook for project-before (pair of project-after)
		-Add: compile helper API to disconnect an abstract object (e.g. port) from an abstract net
		-Add: undoable attribute priority change API

	[lib_alien]
		-Fix: do the standard coord conversion in arc-in-poly helper
		-Fix: don't throw error on missing postproc action (optional user script per alien format postproc)
		-Fix: have to post-process indirect objects in a first pass and re-render all direct objects later, if any indirect changed, so that changes are applied on sheet
		-Split: read postproc out to a separate .c and .h because of its size
		-Add: helper function to update connection on all terminals
		-Add: csch_alien_postproc_rename_redundant_terms() to handle redundantly named pins coming from io_altium
		-Add: recursive centerline bbox calculator helper function
		-Add: support for emulating ellpitical arc by creating a polygon and line approx

	[lib_netlist_exp]
		-Move: generalize and move get refdes/pinnum/netname and alternative attribute getter from export_tedax into lib_netlist_exp

	[lib_ngrp]
		-Add: non-graphical sheet handlers to a lib plugin

	[library]
		-Fix: default devmap for opamp-1 is lm358, which is an opamp, and not lm393, which si a comparator
		-Add: hand crafted bc817 spice model
		-Add: spice model for lm358, macromodel, copied from the datasheet of ST ts321
		-Add: spice models for adc and dac bridges for ttl
		-Add: install spice models
		-Add: spice pinnums with low prio to source symbols
		-Add: spice/prefix with low priority in stock symbols where applicable

	[menu]
		-Add: devmap library rehash in maintenance menu
		-Add: tooltip on the symbol lib rehash (maintenance) menu

	[plugins]
		-Cleanup: use RND_INLINE instead of csch_inline for simplicity

	[propedit]
		-Fix: typo (missing else) ruined objbin

	[query]
		-Fix: advanced search dialog: remove double quote from right side stored string when editing again
		-Fix: advanced search dialog: preserve quotes in strings in decompile
		-Add: new scope: sheet-indirect

	[sch-rnd]
		-Fix: text rendering: use fmod to clamp text rotation to -360..+360 to avoid numerical problems
		-Fix: do not complain about implicit project file in quiet mode
		-Fix: emergency save shouldn't crash if sheet fullpath is not available (rather skip saving)
		-Cleanup: use RND_INLINE instead of csch_inline for simplicity
		-Cleanup: free all sheets after -x, to easy valgrinding
		-Cleanup: simplify layer draw internal API: set up context only once per sheet draw, reuse caches
		-Split: move out poly draw code from draw.c, it's getting large
		-Add: default sheet: sheet-decor-fill and sym-decor-fill pens for light background color; default config: use sheet-decor-fill pen for default rect fill pen
		-Add: DevmaplibRehash() action to re-scan the devmap library
		-Add: draw non-graphical sheets (until we get to display them in a text edit widget much later); configureable non-graphical sheet colors
		-Add: spice_raw target in default conf
		-Add: action and menu for cleaning the local devmap lib for a sheet
		-Add: SymlibReloadAllLocal() for reloading all symlib local libs from ext libs (with menu)
		-Add: separate pass for drawing all fills then drawing all strokes, so strokes are always above fills; draw fills in order of their area, bigger first (for proper object overlap)
		-Add: try loading sheet file as bundled sheet first (e.g. tinycad)
		-Add: when drawing symbol meta, render a tiny x for marking symbol origin (matters in transformations)

	[sch_dialogs]
		-Fix: don't crash on library refresh if cursor can not be obtained after the refresh
		-Fix: assisted edit action name calculation: replace non-alnum and non-underscore chars with double underscore, so spice/model becomes spice__model
		-Fix: dlg_attrib: when chaging attribute prio, do not mess with the value - fixes overwriting array to empty
		-Add: more elaborate tooltip on tree refresh button, including you have to select a tree and only that tree is refreshed plus a reference to re-scan in maintenance
		-Add: multiline text edit option for string attributes - useful for spice/command

	[std_cschem]
		-Fix: don't crash on array name

	[std_tools]
		-Fix: throw error instead of crashing when failed to create an object (line, circle, rect and text tool); happens on non-graphical sheets

	[symlib_fs]
		-Fix: don't crash if params is NULL for a parametric footprint, just omit printing it

	[target_spice]
		-Add: SPICE target plugin (SPICE views)

	[tests]
		-Fix: execute sch-rnd in quiet mode when exporting to avoid unnecessary warnings
		-Add: auto-test raw spice export


1.0.0 (r7144)
~~~~~~~~~~~~~
	[act_read]
		-Fix: passing the wrong pointer type (group instead of object)
		-Cleanup: GetObjType() const correctness: non-dynamic string is returned for const char *

	[gui]
		-Fix: mark the project implicit if number of aux sheets and number of root sheets are both 0; that means there's no sheet list, even if the project file exists
		-Fix: SaveAs() returns the return value of SaveTo() instead faking success
		-Cleanup: replace dead code with live code and make sure the "file changed on disk" infobar is closed when the sheet is loaded or saved
		-Cleanup: use generic parent dir function instead of calculating it locally so that dynbtext %project.name% subst would do the same

	[io_tinycad]
		-Fix: avoid reading uninitialized memory when facing unknown power dir/which

	[lib]
		-Fix: sheet free: if sheet is part of a project, remove it from the project
		-Fix: memleak when figuring if a sheet is on a project list
		-Fix: namepspace pollution: sheet_on_list should be private
		-Fix: when deciding the type of a sheet (root/aux/unlisted) prefix project file list items with the project file's directory
		-Fix: pass generic concrete object instead of group object as the API requires
		-Fix: text object: update() removes object from rtree before any bbox recalculation else removal may fail due to mismatching bbox
		-Fix: calculate project name for dyntext (%project.name%) the same way as the sheetsel calculates the project name
		-Fix: arc in rotated+mirrored parent group got delta modified twice
		-Fix: inst2spec dupping of text object should respect new parent group rotation and mirroring
		-Add: path util function to return parent dir pointer from a full path
		-Add: partially implement inst2spec for text objects (for translation only)

	[sch-rnd]
		-Fix: when saving project file, pass full path of the sheet file just in case project file name needs to be calculated
		-Fix: pass on project file path name when saving project file so it does not need to be guessed from the sheet's full path
		-Fix: handle explicit invalid halign in font rendering: do the same as for 'start'
		-Fix: final fallback sheet creation should pass parent project so the sheet is allocated under the right project
		-Fix: don't crash when the user attempts to change sheet type for unsaved new sheet with no file name, rather throw an error and suggest a save
		-Fix: freeze redraw during select and unselect operations to speed things up on sw render
		-Fix: freeze redraw while cutting many objects to buffer and while pasting buffer
		-Fix: allow creating new sheet for an existing project with no saved sheet (new sheet in a new project with unsaved initial sheet should take the directory from the project file's path)
		-Fix: if name of the sheet changes on save, invalidate all dyntext objects so they get recalculated (so that %project.name% and friends are recalculated)
		-Fix: after sheet load map libraries only after config node rc.path.design is already set so that "project local" library is found
		-Add: project file creation call can return the newly created project struct
		-Add: mutli: API for creating a new anon sheet within a project, without having a file name
		-Add: when creating a new project, also create an unsaved empty new sheet, else the project can't be managed from the GUI
		-Add: maintain/cache the number of aux sheets in the project struct

	[sch_dialogs]
		-Fix: library refresh button shouldn't crash with empty filter text

	[std_tools]
		-Fix: move-copy: freeze draw formass-move objects
		-Fix: move-copy: freeze redraw for mass-copy objects

	[symbol]
		-Change: pin names ("in", "gnd" and "out") of ldo.ry should not be floaters

	[tutorial]
		-Add: explicit project file tutorial published
		-Add: multipin portmap done
		-Add: publish preferences dialog, part 1


0.9.5 beta-test (r7021)
~~~~~~~~~~~~~~~~~~~~~~~
	[backann]
		-Fix: off-by-one memory allocation on stack

	[build]
		-Del: no need to detect libs/sul/librnd-hid from ./configure, Makefile.conf has the prefix

	[doc]
		-Fix: copy&paste error: sch-rnd has symbols, not footprints, and no direct edakrill support yet
		-Update: mailing list subscription: gmail is not a "may not work" but a "does not work"
		-Import: packaging.txt from pcb-rnd, adapted to sch-rnd
		-Update: finalize INSTALL: remove don't-package warning, reference packaging doc
		-Add: document io_alien postproc config/scripting
		-Add: specify io_tedax pinnumber format
		-Add: link in route-rnd
		-Add: generate key tree

	[export_tedax]
		-Fix: emit pinname lines properly, using display/name -> name, splitting up multi-number pins
		-Cleanup: remove pcb dependency from export attribute names; export by current view
		-Cleanup: remove footprint, value, device attribute dependency on pcb/

	[gui]
		-Fix: Save(): if there's no file name of current sheet (it's <none>), always invoke SaveAs() and append .rs
		-Fix: don't crash on revert when file is missing
		-Fix: sheetsel should be updated on file name change event
		-Fix: denfensive programming: broken project with no name shouldn't cause a segfault in the sheetsel, but should throw an error message
		-Add: indicate sheet changed state in sheetsel by a * mark after the file name
		-Add: sheetsel mark projects [e] when explicit project.lht exists and [i] when project is implied
		-Add: sheetsel mark sheets depending on how they are listed in their project file
		-Add: sheetsel indicates partially loaded projects
		-Add: sheetsel: tooltip explaining all the marks

	[io_geda]
		-Add: set alien fmt prefix
		-Add: call alien postproc
		-Add: default postproc configuration renames the refdes attribute to name
		-Add: postprocessor pattern+action config to replace refdes attribtue dyntext with name attribute dyntext
		-Add: configurable auto-normalzie for removing gschem's arbtirary, large coord offset
		-Add: recalc symbol connections so direct terminal-terminal connections work
		-Add: attempt to convert symbol net= attrib to connect= in postproc
		-Add: postproc attribute conversion: terminal pinnumber to name for connect attribute to work
		-Add: postproc rewrite of terminal name display
		-Add: append default lib search path for lepton
		-Add: postproc config: convert netname to name

	[io_tinycad]
		-Del: hardwired C code for attribute postprocessing
		-Fix: expect rectangle fill to be an integer, not a bool
		-Fix: symbol label placement in normal case: should always be 0;0 in loclib and moved during placement
		-Fix: tune symbol label placement when parent symbol is rotated
		-Fix: sort out sym label placement vs. all combinations of symbol direction
		-Fix: do not create text object for tinycad's hidden pin numbers (show=0)
		-Fix: in sheet postproc remove sym text objects that are not referenced from symbol instanced with show=1; this fixes dyntext objects introduced by one instance in symdef accidentally shown in all other instances (without show=1)
		-Fix: rectangle parser did not realize when it was parsing a symdef rectangle (and did not add symdef offsets)
		-Fix: symbol label placement in mirx=1 case
		-Fix: pin show is really a bitfield for showing the number and name; whether the pin is a power pin really depneds on which==4
		-Cleanup: centralize text object mirx/rot calcualtion, it's the same for all three text object sources
		-Cleanup: the function for creating text in a parent object returns the text object (or NULL) so that it can be manipulated on the caller side
		-Add: set alien fmt prefix
		-Add: run sheet postproc after load
		-Add: create_net_label() respects the direction parameter and makes the necessary rotation when style != 0
		-Add: support for parsing sheet rectangles
		-Add: create different sheet-decor pens as needed, for different pen thickness while drawing rectangles
		-Add: note_text is adjusted to be placed within the note box
		-Add: mark multiline note text TODO with a unique label so it's easier to search in the doc
		-Add: start documenting limitations and bugs
		-Add: create pin's in-body label
		-Add: place pin number dyntext
		-Add: remember if a pin is a power pin or is in a slot using a attributes on ther term group
		-Add: generalize sym_attr_hide() to sym_child_hide() - would be used to hide pins for slotting and power pins
		-Add: postprocessing step for removing excess pins from symbol instances
		-Add: support for slotting and power pins using pin removal
		-Add: remember offset to power-pin-visible dx;dy for symdef
		-Add: compensate for different sym reference point when power pins are visible
		-Add: support for the ellipse object, using line approximation
		-Add: plugin conf
		-Add: make coordinate factor (multiplier) configurable
		-Add: preparations for the configurable text autorot
		-Add: render all group refs and normalize the sheet if needed
		-Add: enable the code for optional text auto-rotation
		-Add: mark the naked-bbox bug in the code
		-Add: support for power 'which' field (all known values)
		-Add: compensate text placement for mirrored power
		-Add: heuristics for power text placement for all rotations
		-Add: support for pin 'shape' (decoration)

	[lib]
		-Fix: undoable attribute swap: when removing an attribute, use the key that's always available to avoid null pointer deref
		-Fix: don't undoable-del an attribute if it doesn't exist (avoids adding a no-op on the undo list)
		-Fix: when a whole group is moved and the group is a wirenet group, recalculate junctions (child lines are not going to be moved separately which may result in broken net)
		-Fix: freeze object redraw during compile postproc invalidate - the whole sheet would be rdrawn once, at the end
		-Fix: util_export default export file name generation: don't crash if there's no file name for the sheet
		-Fix: util_export default export file name generation: append "*" if replacing an existing knonw "extension" is not possible
		-Fix: util_export default export file name generation: make sure there's enough room to append the '*'
		-Fix: util_export default export file name generation: if no new "extension" can be appended, append at least a _ so we are not overwriting the input file
		-Fix: wire merging: when a wire is moved from one wirenet group to another, manage connection merging properly so no multiple connections between the destination wirenet group and the same terminal are created
		-Fix: util_wirenet left undo serial inc locked when bailing out for not drawing fully overlapping wires
		-Fix: compilation: don't stop adding conn's objects to an abstract net after the first object (fixes missing connections when more than one non-wirenet object is connected)
		-Fix: wirenet: don't create junction between overlapping same-direction lines, they should be merged
		-Fix: when merging a group into another, copy/merge attributes as well
		-Fix: recalc conn after group geometry change undo swap to avoid leaving stale conn graphics after a group move is undone
		-Fix: junction calculations shall be done in sheet coord system, not in (potentially transformed) wirenet coord system because bboxes are in the sheet coord system too
		-Fix: wirenet draw: disable wirenet split calculation when new line is added - drawing a new line will never split existing wirenets (fixes aron's merge bug by making sure line ptr is not modified)
		-Fix: auto attr placement should inverse-xform target coords because text placement coords are in the parent group's coord system (spec coords, not inst coords)
		-Fix: compile infinite loop: do not merge a network with itself
		-Fix: move emitting the sheet saved event from sch-rnd to lib to guarantee it always runs
		-Fix: update sheet full path after save, before the events are sent out for updating the file-change-notification system
		-Fix: when a sheet is saved under a different name, also update loadname (not only fullpath)
		-Fix: group-reverse transform second line endpoint as well when drawing a wire - fixes the bug of the second clicked wire endpoint going off randomly when wirenet it extends is transformed
		-Fix: csch_conn_recalc_coords() needs to remove and readd conn in the rtree because its bbox is changing
		-Fix: floater placement: when calculating floater coords, remain in group relative (spec coords); convert sheet coords to spect coords only where needed, on the hint coord input
		-Fix: project file not found is not a warning, just an info for implicit projects
		-Fix: when creating new wirenet groups while splitting wirenets copy the selected flag of the source wirenet to the newly created on; fixes the bug of losing selection when moving wirenets
		-Fix: recalc conn coords when objects are added or removed from a conn from undo/redo
		-Fix: when rotating text, invert rotation direction on single-mirror cases
		-Fix: don't crash on NULL fullpath at save-as
		-Fix: do not add indirect objects to the rtree - fixes io_tinycad bug of rendering local lib symbols as ghost symbols around 0;0
		-Fix: don't crash when project-exporting implicit project (no project file): just use implicit-project for file name base
		-Fix: child xform: don't assert() when bumping into deleted transformation entries during apply, just skip
		-Add: undoable attribute rename call
		-Add: extra sheet field for making a bridge between query() and propset() for alien io configured attr edits
		-Add: extend attribute apply API so it can change the priority of the newly created attributes (will be needed by plugins when copying attribs)
		-Add: implement per sheet invalidation box mechanism for redraw freeze to minimize batched object redraws on sw rendering
		-Add: enable connection between two terminals directly (will always result in an anon net)
		-Add: implement array type attribute single string append/prepend API
		-Add: TODOs and error message on unhandled attr merge
		-Add: integrity check: make sure sheet's direct group is not transformed
		-Add: group helper function: inverse transformation of coords by parent group xform
		-Add: vararg based group coord inverse transformation API
		-Add: extend sheet type from aux/root to handle unlisted and unknown as well
		-Add: project util API to decide if a sheet is root ro aux or unlisted for a project
		-Add: project util function to figure if a project is partially loaded (not all root sheets are loaded)
		-Add: throw bold error message before compilation for partial projects
		-Add: mark sheet that's being saved so GUI indication can be inhibited
		-Add: util_path with API for calculating relative path from one file to another
		-Add: basename() utility call
		-Add: compiler: if there's a project file with explicit list of root sheets, do not compile unlisted sheets
		-Add: parser util for replacing the engine list in an existing view lihata conf node
		-Add: expose view engine renum function in public API
		-Add: csch_cobj_rtree_del() returns 0 on succesful object removal so the caller can figure in a cheap way whether the object was in the rtree
		-Add: argument to suppress error message on sheet fails to load
		-Add: dup2() API for pens: same as dup() but creates the new pen using a new name (useful when duplicating a pen within the same parent)
		-Add: temp fields in the text object for the app to use (needed while reading io_tinycad for marking text objects shown)
		-Add: apply the 'remove' child xform in group_refs

	[lib_alien]
		-Add: generic postprocessor API with a new format prefix field in the context struct
		-Add: generic sheet load postproc using optional user actions
		-Add: use query to execute configured actions in sheet postproc (for attribute translation)
		-Move: generalize sheet coord normalization function from io_geda so it can be reused with other alien formats
		-Move: generalize text rotate adjustment for 180 and 270 degree, io_tinycad will need it as well

	[propedit]
		-Fix: recurse into groups on collecting selected objects
		-Add: pressing enter in the value input of the "new attribute" dialog should be the same as clicking on ok
		-Add: propset(rename/a/key, new) will rename the key to new, keeping value and priority
		-Add: @ scope for propset() to be used in alien io attribute transformations

	[query]
		-Fix: text's string is really called "text" in the code and in propedit
		-Add: helper function to map and append all indirect objects to the query scope

	[sch-rnd]
		-Del: zoom-to-found menu (there's no concept of "found" in sch-rnd)
		-Del: the "beta testing" experimental warning - the code is getting stable
		-Fix: freeze junction recalculation while cutting multiple objects to buffer to avoid modifiation-while-copy
		-Fix: freeze junction recalculation on the buffer while copying multiple objects to buffer
		-Fix: move loadname overwrite from the GUI to the SaveTo action so it is always executed (even with CLI triggered save) and happens before the filename changed event is emitted
		-Fix: reload projet file on 'save as'; a change in the file name may cause a change in the project file
		-Fix: when save-as changes project file for a sheet, announce it in the message log and do all the project administration so that the sheet gets moved also in sheetsel
		-Fix: realpath project file name before hashing/comparing to avoid stray project.lht entries
		-Fix: exit if no sheet could be loaded for a project
		-Fix: default zoom menu constants for cschem coords
		-Fix: after saving to a different directory if a new project (implicit or explicit) had to be created, call project postproc so that views are loaded from the conf
		-Fix: do not throw an error when default sheet can not be loaded while going through a search path (it's normal that only a subsequent item is available)
		-Fix: don't update text pen on text edit operation if text is indirect (the indirect tree is never rendered)
		-Fix: don't make emergency backups of sheet <none> (force the user to name the sheet)
		-Fix: set sheet fullpath to <none> after reverting an unsaved sheet
		-Add: initialize new conf node rc.path.dotdir so users can refer to their own config easier
		-Add: project submenu in the file menu for managing current project
		-Add: action New() to create a new sheet (only in current project for now)
		-Add: project file creation API+impl
		-Add: ProjectNew() can create the project file and pair it up with an existing/open implicit project
		-Add: detect sheet type within the project when a sheet is loaded directly (not via the project file)
		-Add: set expected number of root sheets
		-Add: when a new aux sheet is created, set sheet type aux
		-Add: append relative path of new sheet to project file when root or aux sheet is created
		-Add: menu for creating aux and unlisted sheets
		-Add: New(): create new project file if it does not exist and a root or aux sheet is created
		-Add: ProjectSheetType() action to change the type of a sheet and update the project file accordingly
		-Add: ProjectSheetType(): unload target that first makes the sheet unlisted then unloads it
		-Add: action for loading rest of the sheets for a partial project (plus menu)
		-Add: SaveAll() action (for currprj, current project only for now) (plus menu)
		-Add: utility call for regenerating the engine list of a view in the project conf lihata (useful after an edit of project views)
		-Add: wrapper for sheet-removal-from-project so the case of project becoming empty can be handled
		-Add: remove project (from internal project hash) when last child sheet is unloaded
		-Add: throw an error when sheet gets too large

	[sch_dialogs]
		-Fix: take the coord field when setting pen size (and convert it from librnd coords to cschem coords); fixes pen dialog tip size set
		-Fix: when a new pen is created, select that pen and let the user edit it without needing to select it again
		-Fix: when a new pen is created, set sane initial values for its fields
		-Fix: abstract dialog restores cursor after recompile
		-Fix: force-update text bbox once text string is changed from the gui
		-Fix: make sure the drawing area is updated after a text string change from the GUI
		-Fix: library refresh button shouldn't crash with empty filter text
		-Change: use the lib's undoable attribute rename call instead of local implementation
		-Add: sort abstract dialog tree so it's easier to manually search
		-Add: abstract dialog: case insensitive regex filter
		-Add: abstract dialog: checkbox to filter out anon_ items
		-Add: project properties dialog frame (project dialog)
		-Add: view dialog: make engine list editable
		-Add: view dialog: make it clear that changes are saved in project file immediately

	[std_devmap]
		-Fix: use plugin's prio when setting symbol attributes from devmap, instead of using user prio 250
		-Fix: typos in quick_att_portmap() action syntax description
		-Fix: devmap should accept only full slot/portname matches (was accidental prefix-match)

	[std_tools]
		-Fix: mirror tool respects lock_floaters

	[symbol]
		-Fix: stock led should default to led5 for devmap and should have D?? for refdes


0.9.4 beta-test (r6370)
~~~~~~~~~~~~~~~~~~~~~~~
	[build]
		-Cleanup: missing #includes (exposed by hid.h not always included)
		-Fix: make clean should remove objects in src_3rd/
		-Fix: load_cache make clean shouldn't fail when there's nothign to clean
		-Fix: build minuid (the executable) because it is going to be installed (for boxsym)
		-Add: central make clean recurses into src_3rd as well

	[doc]
		-Fix: wrong path to the menu file for keys.html generation
		-Del: temporary multi-design support doc - read librnd's instead
		-Add: generate file format list
		-Add: explain the meaning of per-design and per-app events

	[export_abst]
		-Cleanup: don't depend on global csch_hidlib (design is passed as arg)
		-Add: calculate default export file name
		-Add: indicate the project's abstract model is exported (not the sheet's)

	[export_eps]
		-Fix: set expsoe context ->design before calling main expose

	[export_png]
		-Fix: set expsoe context ->design before calling main expose
		-Del: don't define set_crosshair, use hid_nogui fallback
		-Cleanup: don't depend on global csch_hidlib, design is passed on
		-Split: sheet export from do_export() in preparation of multi-sheet export
		-Add: calculate default export file name
		-Add: prepare for multi-file project export

	[export_ps]
		-Fix: set expsoe context ->design before calling main expose
		-Fix: don't crash on NULL xform when called from lpr
		-Del: no need to keep a separate "doing project" global when we have this info in appspec
		-Add: calculate default export file name
		-Add: support for project-export in ps and eps
		-Add: get multi-file exporter option to work in project export

	[export_svg]
		-Fix: set expose context ->design before calling main expose
		-Cleanup: don't depend on global csch_hidlib (design is passed as arg)
		-Add: calculate default export file name
		-Add: support for project-export

	[export_tedax]
		-Cleanup: don't depend on global csch_hidlib (design is passed as arg)
		-Add: calculate default export file name
		-Add: indicate the project's netlist is exported (not the sheet's)

	[gui]
		-Fix: pass on sheet to autocomp bar update so it doesn't have to query gui-current
		-Fix: don't crash if there's no view configured (when generating status bar)
		-Cleanup: use rnd_printf() with %rc for printing 'k' coords in status line (instead of local conversion macro)
		-Cleanup: get rid of csch_hidlib references
		-Add: update sheet hidlib dwg bbox when sheet bbox changes
		-Add: bind layer vis changed event to update layer visibility (in case the change happens outside of this module)

	[io_geda]
		-Fix: option to emulate no-upside-down-text of gschem

	[lib]
		-Fix: csch_printf: don't increment fmt, it's pointing at the last format char already
		-Fix: reset project's design list after freeing all sheets so that librnd won't iterate through already free'd sheets
		-Fix: don't crash when sheet can not be loaded (e.g. wrong file format)
		-Fix: csch_lib_load() should lock redraw: the backend may trigger multiple object updates and if the buffer tool is active (e.g. when placing from the lib), it leads to excess redraws
		-Fix: don't crash on revert if file name or load name is NULL
		-Fix: add missing "extern" keyword to cschem-unit bits global variables
		-Fix: wirenet junction recalculation lock (inhibit) should not be stuck after a paste-wirenet-from-buffer operation
		-Fix: don't crash when junction is copied to buffer
		-Fix: corner cases that could lead to a crash when copying a large wirenet into buffer
		-Fix: integrity: never start wirenet disjoint-test from a floater but do detect if a wirenet is consists only of floaters
		-Cleanup: remove CSCH_EVENT_LAYERS_CHANGED: layers are hardwired, they are not going to change
		-Cleanup: remove unused csch_project_export_sheets(), project export is done using appspec
		-Cleanup: merge export.[ch] content into util_export.[ch] to remove redundancy
		-Cleanup: don't include TODO.h where it's not needed
		-Change: csch_derive_default_filename() gets an int arg for generating project file name, instead of void *appspec: the lib has no idea what's in appspec
		-Add: update parent group's bbox when child object's bbox changes
		-Add: update sheet bbox when ->direct subtree bbox change
		-Add: bit in sheet struct to notify the GUI on sheet bbox change
		-Add: app-specific rnd_printf format plugin for rendering the 'k' suffix values as %rc
		-Add: introduce a "cschem" unit suffix and make that the default fallback unit for get_value
		-Add: publish cschem unit family and 'k' allow
		-Add: register empty-suffixed cschem base coord unit and publish k and base units
		-Add: %rr to local printf, to conert rnd_coord_t to csch_coord_t and print it with the 'k' suffix
		-Add: export helper: function that updates hid attrib file name (to be used in get_export_options())
		-Add: emit RND_EVENT_SAVE_* and RND_EVENT_LOAD_* events
		-Add: cschem_export_filename() takes optional base file name prefix/suffix arguments to ease file name generation in mutli-sheet project exports
		-Add: when exporting multiple files as a project, use project file name for the generating the default export name
		-Add: event to communicate selection change

	[lib_alien]
		-Add: warn for coords too large

	[librnd4]
		-Update: follow librnd4 API changes

	[menu]
		-Add: property editor on {e p}, same as in pcb-rnd (edits selection)

	[multi]
		-Fix: don't rename sheet to project file name after fialed load from project file
		-Fix: make "view last conf rev" per project, in a multiple project setup there can be different views perproject
		-Fix: don't create views multiple times per project
		-Fix: when creating new empty sheet with filename specified, put new sheets in the right project (loading the project if needed)
		-Fix: run project postproc after creating new project for new sheet on startup
		-Fix: memory leak: free design role config when unloading sheet
		-Fix: infobar remembers last file change date per sheet so it can warn for sheets that changed in the background
		-Fix: don't remember file name when attempted to load a directory
		-Add: explain the usage of sheet "loadname" when loading all sheets for a project
		-Add: API convenience on NULL pointers
		-Add: get-current call
		-Change: pass file name to new_sheet() call so it will have a chance to enter the files in the right project

	[propedit]
		-Fix: terminology: board -> sheet
		-Add: print coord values with the 'k' prefix when possible
		-Add: use coord spinboxes instead of integer spins for coord input
		-Add: auto-refresh the dialog on selection change

	[query]
		-Del: remove $dwg_area_x and $dwg_area_y: compile-time constants are incompatible with multi-sheet support
		-Add: use cschem coord spin boxes for the advanded search dialog
		-Add: accept the 'k' unit as *1000

	[sch-rnd]
		-Fix: CP2 and P2C should cast the result to csch_coord_t or rnd_coord_t; when used directly in printf that's how the right type is passed
		-Fix: System()'s env var name uses SHEET instead of BOARD for communicating current filename
		-Fix: backup/emergency-save all sheets really operates on all sheets, not only on current
		-Fix: load system config file from the configured CONFDIR, not from SHAREDIR
		-Fix: multi: create multiple new empty sheets if multiple file CLI names are not found on interactive invocation
		-Fix: when creating new sheets on startup delay sheet postproc until the config is merged so all library paths are known
		-Fix: don't initialize the crosshair before all the configs are merged at least once, for the initial design, else the GUI may try to draw the crosshair with unknown color during startup
		-Add: publish sheet_attr_crd() for the GUI
		-Add: DAD helper: csch_coord_t spin box
		-Add: appspec struct for exporting projects
		-Add: project export dialog with menu binding
		-Add: safe fallback on appspec with default values
		-Add: helper function to decide if an appspec is for project export
		-Add: when exporting from the command line with -x, if a project file is passed, do a project-export
		-Add: when called from CLI with -x and multiple files, do a project export
		-Add: extend --help invocation to indicate project-export on multiple sheets or project.lht
		-Add: generate selection change events
		-Change: switch over from pcb-rnd's inclib font engine to librnd4's font engine

	[sch_dialogs]
		-Cleanup: don't free const char * even if locally allocated
		-Cleanup: get rid of csch_hidlib references in infobar and in sheet preferences
		-Cleanup: rename pcb_dlg_pref_ to sch_dlg_pref_ to keep namespace clean
		-Fix: use the right config node path for setting CLI history size in preferences general tab
		-Fix: uninitialized cell terminator for DAD tree-table
		-Fix: tree window: invalid memory handling in some corner cases of updating the DAD tree - always have all columns strdup'd even if it's to empty string
		-Fix: pen dialog: when pen name is changed on the right side, update it on the left side
		-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: preferences color: don't crash on empty color list
		-Del: preferences dialog, library tab: no need to free tree-table cells, librnd4 will do that
		-Add: use cschem coord spinbox in the pen dialog for font height and pen size

	[symbol]
		-Fix: switch: style=relay: move the coil a bit up so it doesn't overlap with the switch(es) and terminal falls on the 4k grid
		-Fix: switch: style=relay: prefix coil terminal names with "coil" to avoid conflict with switch terminals
		-Fix: switch: style=relay: don't draw cap, only coil

	[util]
		-Del: deblist script (switched over to packager's doc)
		-Del: local implementation of awk_on_formats - use librnd's
		-Add: import sign/ from librnd, for release verification
		-Tune: boxsym-rnd text scale for aussiefont wide chars

0.9.3 beta-test (r6000)
~~~~~~~~~~~~~~~~~~~~~~~
	[build]
		-Fix: install plugin files
		-Fix: every Makefile should recurse using $(MAKE) instead of make, so that the caller's preferred make flavor is used (instead of switching make implementation in the middle of the build)
		-Fix: append c89flags to CFLAGS for -Dinline when -ansi -pedantic is also added
		-Fix: use -L and -I to librnd when installed to non-standard path
		-Add: calculate man5dir in Makefile.conf
		-Add: LIBADIR for libarch based lib dir path for sorting out the lib64 problem later

	[devmap]
		-Fix: rename footprint from sot23 to SOT23 for compatibility with pcb-rnd stock lib
		-Fix: rename footprint from "led5" to "LED5" for compatibility with pcb-rnd stock lib

	[doc]
		-Fix: install (5) man to man5dir
		-Add: user manual index page
		-Add: sch-rnd(1) manual page
		-Add: comment on BSD make in INSTALL

	[export_ps]
		-Fix: don't export excess showpage on top of the file

	[gui]
		-Fix: update the status line when "board is changed" (switched to another sheet)
		-Add: Load() GUI file selection dialog filters for loading sheet or project

	[io_lihata]
		-Fix: read: throw an error on missing root subtrees instead of crashing
		-Fix: read: don't crash on missing attribute subtree, accept that as "no attributes"
		-Fix: read: don't crash on missing oid

	[io_tinycad]
		-Fix: poly bits and proper filling
		-Fix: poly fill implies closed
		-Split: label create to a separate function to make room for style code
		-Add: implement net label styles (arrows)
		-Add: implement net label rotations
		-Add: mirx and rot for plain text objects using "direction"
		-Add: Package -> footprint translation

	[lib]
		-Fix: don't hardwire lib path to puplug, use librnd's LIBARCHDIR so that lib64 doesn't break
		-Fix: util_wirenet: when extending a line (merge a newly drawn line in an existing line, making it longer), transform edit coords into wirenet's own coord system so the line doesn't jump away
		-Fix: compiler: when compiling a project, do not reset abstract model counters per sheet, only once per project; this fixes redundant anon-naming components and nets
		-Fix: don't mess up the abstract model after gui export when the same view is exported that we compiled for in the GUI
		-Fix: don't segfault on cnc object uninit when it's has no parent in the object hierarchy
		-Fix: util_wirenet: csch_wirenet_recalc_unfreeze() first unfreezes, then recalculates so that new wirenets created during the recalculation are not added the the unfreeze TODO list
		-Fix: undable management of connection adds/dels when merging wirenets - fixes a special case of wirenet merge undo
		-Fix: when figuring if a newly drawn or geo-edited line causes an endpoint-intersection, do check point-on-line using g2d - with diagonal lines matching up boxes is not enough
		-Add: implement CSCH_REM_DEL_EMPTY_PARENT for the remove operation
		-Add: remove-sheet-from-project function
		-Add: csch_cgrp_replace() for replace symbol low level
		-Add: expose attrib del call for alien IO

	[lib_alien]
		-Fix: fill in sheet uuid in sheet setup
		-Fix: remove tmp sheet (created for reading defaults) from the project after loading alien sheet setup - fixes the bug that a <none> sheet was created on alien load

	[menu]
		-Cleanup: unify tool menu with the toolbar and make sure the same F-keys are assigned to the same tools as in pcb-rnd
		-Fix: ambiguous wording in menu about object mirroring

	[propedit]
		-Fix: use the action API to invoke the pen dialog instead of direct call, to avoid propedit module dependency on sch_dialogs module (which is bad for packaging)
		-Fix: use the action API for quickattr editing instead of direct dependency on sch_dialogs
		-Fix: integer constant overflow on 32 bit in coord entry min/max
		-Update: plugin does not depend on sch_dialogs anymore

	[sch-rnd]
		-Fix: sheet files listed in project files are loaded from relative path to the project file, not to sch-rnd CWD so that project files are portable
		-Fix: don't hardwire $(PREFIX)/lib for conf_core generation, use arch specific libdir so it works on /lib64 as well
		-Add: ReplaceSymbol() action - for replacing a single symbol for now

	[sch_dialogs]
		-Add: extend PenDialog() so it can be called to select a new pen; give control over flags like recursive, be able to return a pen name as string and accept optional input pen name for initial selection
		-Add: action api for querying if quick attr editor is accessible for an object/attrkey combo

	[std_devmap]
		-Fix: don't throw an error when parsing a dir as devmap for a lib refresh

	[symbol]
		-Fix: mosfet-p-1 S and D terminals were mixed up

	[tests]
		-Add: minimal automatic smoke tester comparing the abstract export of examples to saved refs
		-Fix: make sure to exit with error status if any test failed


0.9.2 beta-test (5816)
~~~~~~~~~~~~~~~~~~~~~~
	[act_draw]
		-Add: accept object:oidpath scope for naming parent group

	[act_read]
		-Import: from pcb-rnd

	[boxsym-rnd]
		-Fix: use our standard file name ending, .ry, instead of .sym

	[doc]
		-Update: index page for beta and plans for the stable
		-Update: regroup and reorder state for the beta testing phase
		-Import: autostyle from pcb-rnd doc/; use unified headers on the page
		-Change: switch over to the unified Ringdove index.html layout on the main page
		-Cleanup: cschem vs. sch-rnd: keep cschem only on data model side
		-Cleanup: archive the nlnet roadmap: it's pretty much completed
		-Cleanup: move some of the old doc used for the design process to archive
		-Del: archive use cases - these were relevant for making the initial design
		-Del: obsolete style guide - we ended up with a slightly different one in practice
		-Del: plans/
		-Move: libcschem doc in developer/, sch-rnd users won't need it
		-Import: packaging script from pcb-rnd
		-Import: rosetta html generator from pcb-rnd, for scripting examples
		-Add: irc page, mirrors page, help wanted page
		-Add: link (video) tutorial from the main page
		-Add: scripting: cross-link pcb-rnd's doc on generic scripting and different languages
		-Add: scripting example: working quick attr editor
		-Add: scripting example: voltage divider
		-Add: scripting example: text autorotate: object listing and careless rotation to tes tht new API
		-Add: scripting example: autolabel: figure wich groups need label, place labels at 0;0 for now
		-Add: scripting example: zillion (array copy)
		-Add: query: document .anylocked and .level
		-Add: lihata format doc links to the project file syntax tutorial

	[gui]
		-Fix: status: don't print uninitialized string on grid unit
		-Fix: edit act idpath arg converter: free idpath only if it was allocated by the conversion
		-Add: edit act: rotate90 accepts idpath specified object (for scripting)

	[io_geda]
		-Fix: read_path_xy() accepts comma as separator as well
		-Fix: instead of creating a custom group for path, create a polygon (so it can have a fill)
		-Add: minimal text alignment: halign should work, vertical align is approximated by move

	[io_tinycad]
		-Fix: error message is printed with file name, line and newline
		-Add: create symbol groups in indirect for symdef; parse symdefs
		-Add: place symbols from the local lib
		-Add: parse and place labels (wirenet name floater or sheet decoration text)
		-Add: support for <TEXT> objects (sheet decor text)
		-Add: support for <NOTE_TEXT> with a custom group
		-Add: parse DETAILS subtree and extract and set administrative sheet attributes like author or page
		-Add: parse sheet size, set min height/width attributes
		-Add: flip y coords and translate by sheet height to get the same orientation
		-Add: parse and create symdef rectangles
		-Add: support <POWER> by creating custom symbols; forge on rail symbols generated for <POWER>
		-Add: parse sheet polygons
		-Add: capacitor pin: 'hidden' pin style: draw a 0-length terminal

	[lib]
		-Fix: csch_search_all_selected() always recurses to non-atomic groups; this fixes "selected wire can not be deleted using {s r}"
		-Fix: when creating a new abstract port (auto-alloc), set parent
		-Fix: missing graphical connection is not always an error, e.g. attribute conn of a non-graphical terminal in a symbol
		-Fix: sort out how to handle missing graphical connection with drc later on
		-Fix: typo caused wrong abstract id2name
		-Fix: util_wirenet: do not leave stray empty wirenet groups around after a new line merging existing groups
		-Fix: util_wirenet: when drawing a new wire segment attaching to an existing wirenet group, apply the group's transformations on the new line so it is placed properly
		-Fix: dup_into() should be able to transform source obj to match the reverse-transformations of destination group so that the final installed coords are not changed; implemented for lines only at the moment
		-Fix: more robust merge_into(): expect that source objects are deleted ahead
		-Fix: text vs. box intersection calculated properly for rotated text - not for the unrotated gross bbox but for the rotated net text meta rectangle
		-Fix: not only wirenet objects may be in a conn, when a line is removed, always remove it from its conn
		-Fix: disable wirenet side effects while merging a wirenet group into another wirenet group; this fixes the bug where the merge would remove a middle-object from the source wirenet breaking the source wirenet into new groups that are then not moved
		-Fix: when recalculating connections after an object move, if a connection is to keep, still update its coords because the parent object may have moved slightly
		-Fix: remove cgrp_inst2spec optimization: it's not enough to look at the group's own transformations, parent's matter too, it's safer to do all this once, with reverse xform
		-Fix: when a connection is recalculated, remove objects that are no longer connected
		-Fix: if a junction is "drawn" (e.g. in buffer copy), the line objet being drawn may be removed in the process, in wirenet optimization
		-Fix: do not update junctions in wirenet recalc freeze, proper recalc of junction after wirenet recalc unfreeze
		-Fix: don't crash if there's no objects in wirenet being recalculated
		-Fix: don't calculate crossing between wire line and wire non-line in wirenet merges (non-line is typically a label text)
		-Fix: when removing a whole wirenet group, remove connection of child objects
		-Fix: don't attempt to make a conenction that connects an object to itself
		-Fix: don't make connection between child objects of the same group
		-Fix: preserve connections in network merge
		-Fix: preserve original connections only in "group move into"
		-Fix: when finding conns for a terminal look for wires, when finding conns for a wire, look for terminals
		-Fix: insert idpath custom fungw type converter on init
		-Fix: revert should create a new sheet when reverting to the original sheet is not possible (file does not exist)
		-Fix: wirenet: when merging a wirenet into another, remove the leftover empty wirenet group
		-Add: refine invalid conn error message with type
		-Add: code for caclculating whether a point is within a triangle
		-Add: efficient code for calculating whether any of multiple points is in a triangle
		-Add: a pointer mark field in object header for temporary storage in sync code
		-Add: direct user to the config setting for merging multiple connections per port
		-Add: array attribute set API from C const string arrays
		-Add: publish attrib side effect function (some io plugins need it)
		-Add: all-attribute copy helper

	[lib_alien]
		-Cleanup: separate X and Y and non-axis-aligned coord transformations so the per axis offset and mirroring can be introduced later
		-Add: expose coord conversion for convenince
		-Add: helper functions for creating polygons and line based polygon contours
		-Add: option for flipping x and/or y coordinates
		-Add: optional x and y translation on coords
		-Add: arc-in-poly-contour helper
		-Add: helper function to approximate a bezier in a polygon contour

	[menu]
		-Add: ctrl+s saves

	[propedit]
		-Fix: return coords in long, not in rnd coord (makes no sense to convert to mm)
		-Add: propget() also accepts objbin as first arg (like propset); useful for scripting
		-Add: when geo is enabled, include bbox coords (also bbox center)
		-Add: accessor for reading inst rot, inst mirx and inst miry of text objects

	[query]
		-Fix: do not return pointer free'd
		-Fix: idpath requires clear memory for idpath target because of vectors
		-Fix: .selected returns any-parent-selection as well to be consistent with GUI behavior
		-Fix: scope name is "sheet", not "board" in sch-rnd context
		-Add: .anylocked: returns true if an object is locked in any way (e.g. group lock)
		-Add: .level is evaluated to the object's depth in the tree; 1 means directly on the sheet

	[scconfig]
		-Fix: reset all sphash config fields between compiling modules
		-Add: print which app required librnd to avoid possible confusion

	[sch-rnd]
		-Fix: when buffer-pasting wirenet groups, schedule merge-recalc so they get merged/connected properly
		-Fix: don't crash while cutting to buffer if selected object is already removed
		-Fix: select wirenet on second selection click on wire
		-Fix: when copying a wire into the buffer create the "same" wirenet parent as it had on the sheet (minus metadata) so that it behaves like a wire, not a plain decoration line on paste
		-Fix: {s r} (selected remove) deleting junctions won't cause an assert
		-Fix: partial wirenet {s r} bug: freeze wirenet recalcs while the remove loop is running so that existing wirenets are not split up
		-Fix: normalize wirenet line using inst2spec when put into a buffer-wirenet-group so it remains in position
		-Fix: when any dyntext of a wirenet is copied, also copy all attributes of the wirenet
		-Fix: buffer clean: use a low level object remove that doesn't have side effects: don't attempt to maintain undo or wirenet merges in buffer when everything is going to be removed anyway
		-Fix: do not try copy or paste conn objects, recalculate them instead
		-Cleanup: remove obsolete font related config nodes
		-Cleanup: move Revert() implementation from lib to sch-rnd: it depends on creating a new sheet which is app-specific
		-Add: place wirenet labels on the longest line
		-Add: BufferCopy(): optional x and y arguments to override crosshair (for scripting)
		-Add: BufferPaste() action for scripting
		-Add: API for creating new sheet in-place, in an existing (csch_sheet_t *)

	[sch_dialogs]
		-Fix: tree dialog: disable auto-expand because group nodes are of interest in themselves
		-Fix: abstract model dialog: do not crash if port's parent is NULL
		-Fix: missing has_coords attr from quick_attr to attrib dialog obj converter helper function
		-Fix: dlg_attrib #includes its own .h to avoid desync'd function proto
		-Fix: tree dialog should refresh preview after compilation finished
		-Fix: refresh preview when local lib entry is updated/refreshed
		-Fix: don't let the parametric library window open for non-parametric symbol
		-Cleanup: const correctness
		-Cleanup: remove unused var
		-Cleanup: incompatible pointers
		-Add: attr editor button in tree view

	[tutorial]
		-Add: getting started video
		-Add: devmap video
		-Add: heavy symbol video
		-Add: portmap video
		-Add: text video
		-Add: dyntext video

	[util]
		-Import: awk format helper from pcb-rnd (needed by packages.sh)



0.9.1 beta-test (r5277+bugfix)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	[export_png]
		-Fix: librnd 3.2.0 does not yet have pixmap export API, disable pixmap exporting

0.9.0 beta-test (r5277)
~~~~~~~~~~~~~~~~~~~~~~~
	[boxsym-rnd]
		-Cleanup: use http url for contact instead of email address (due to spam)

	[devmap library]
		-Add: 2n3904 - a real common NPN for the getting started tutorial
		-Add: led5 for the getting started tutorial
		-Add: polarized rcy, for the getting started video

	[diag]
		-Add: UndoSplit() to make undo of batched operations possible step-by-step for debug

	[doc]
		-Fix: design: halign values left and right replaced with start and end for clarity (mirroring affects this)
		-Fix: lihata native file format spec: wrong root types for sheet and devmap
		-Update: direct traffic to pcb-rnd@ instead of cschem@ (mailing list merger)
		-Rename: all examples from *.lht to *.rs (and *.rp)
		-Add: text mirx and miry in design doc: we had to deal with text mirrors because of inherited transformations anyway, adding an explicit field makes it easier to manage alignments
		-Add: lihata format doc: text object mirx and miry
		-Add: refine {des3:36} on the single line text case when halign is considered
		-Add: document what happens if forge tries to append/prepend array to scalar
		-Add: scripting example: quick attribute for tolerance

	[export_abst]
		-Add: plugin for exporting the abstract model to text

	[export_png]
		-Fix: uninitialized memory on xform
		-Fix: when exporting in monochrome, fill polygons with grey above a certain threshold of light colors
		-Fix: set fill-gray-threshold bounds to 0..100 (fixes the GUI entry)
		-Add: export pixmap objects

	[export_ps]
		-Fix: uninitialized memory on xform
		-Fix: when exporting in black-and-white, fill polygons with gray above a certain threshold of light colors
		-Fix: when exporting in monochrome, fill polygons with gray above a certain threshold of light colors
		-Fix: make it clear that gray threshold is considered only in monochrome mode export (both in ps and eps)
		-Fix: greyscale poly fill: more accurate approximation of the rgb color using an average of components
		-Fix: set fill-gray-threshold bounds to 0..100 (fixes the GUI entry)
		-Cleanup: remove some pcb reference leftovers
		-Change: make --fill-page default on
		-Add: automatic toc; hint on toc being automatically decided

	[export_svg]
		-Fix: help uses .rs instead of .sch for example
		-Fix: uninitialized xform

	[export_tedax]
		-Fix: help uses .rs instead of .sch for example

	[font]
		-Change: replace ttf font with pcb-rnd's font engine
		-Import: aussiefont from edakrill

	[gui]
		-Fix: update top window title only if currently shown sheet's data changes (but not if buffer changes)
		-Fix: trigger autocompile on the sheet that had the change (but do not start autocompile timer on buffers)
		-Fix: right click context menu respects only_floaters and lock_floaters
		-Change: switch over default file name endings to .rs and .ry

	[io_lihata]
		-Add: save and load text object mirx and miry
		-Change: switch over default file name endings to .rs and .ry

	[lib]
		-Fix: wrong sign when applying child xform rot on text
		-Fix: text mirror function sets mirror flags instead of rotating
		-Fix: text: invert child xform rotation angle on odd mirrors
		-Fix: halign enum values renamed from LEFT/RIGHT to START/END to match the spec
		-Fix: text mirror: if text is not bbox-specified, do not change spec2 coords (they should be calculated)
		-Fix: don't mirror spec2 of text objects - spec2 is really a width+height from spec1
		-Fix: inst2spec on group: don't invert rotation direction
		-Fix: cgrp_inst2spec(): do not do inverse transformation, but replicate normal parent transformation, that's how we get the same coords as during render
		-Fix: get text rotation vs. mirror right (both for unrotated bbox and precalculated for rendering): rotate first, then mirror
		-Fix: remove rotation tweak in text mirror operation: it turned out to be a workaround for a rendering bug
		-Fix: rewrite floater_origin() to use raw matrix transformations so that it considers mirroring too
		-Fix: text_inst2spec() calculates new x2 and y2 using width and height to preserve orientation of bbox-specified text
		-Fix: text_inst2spec() preserves mirror bits
		-Fix: cgrp_inst2spec(): rotation angle should be inverted even if parent is not mirrored but target group is
		-Fix: integrity test shouldn't segfault (but report error) if connection parent is NULL
		-Fix: conn update shouldn't add deleted objects to connecions (but should still run the update to remove it from existing conns)
		-Fix: when calculating conn object coords ignore pairs of objects that have the same parent
		-Fix: conn object: when a referee is removed, check if remaining referees are from at least 2 different groups; if not, remove the connection
		-Fix: don't crash when attrib string val modified to NULL
		-Fix: terminology: when creating a new terminal, use "TERMNAME" for initial value instead of PINNAME
		-Fix: connection object graphics: don't draw connection mark between same-group objects
		-Fix: batch all remove side effects into a single undo slot
		-Fix: cnc_conn undo print: print full path of the object being added/removed in a conn
		-Fix: conn auto-add: do not (undoably) add an object to a connection if the object is already in the connection (adding it the second time would have no effect but then adding it to the undo list would confuse the system after undo)
		-Change: "place terminal" shouldn't mark the terminal name dyntext with the floater flag; the user should modify a name attribute
		-Add: remember raw inst_rot and inst_mir* when updating text to make text render's job easier
		-Add: text spec mirx and miry
		-Add: text_modify() can modify mirx and miry
		-Add: apply text mirx/miry when calculating bbox corners
		-Add: new layer for hosting text object meta (bbox and orientation)
		-Add: symbol-to-component name engine hook
		-Add: optimization: do not draw a new wire if it fully overlaps with an existing one
		-Add: search: first_gui object with an user specified filter callback
		-Add: csch_search_first_gui_inspect_filter() for user filetering on floaters
		-Add: comment that allows using the mark field for any sync plugin
		-Add: implement csch_attrib_setptr() - saves an strdup()/free()
		-Add: undo helper macro for placing marks on the undo list
		-Add: better floater placement: if hint coords available, place wire-net floater there

	[menu]
		-Add: {a v} changes the value attribute, {a f} changes the footprint attribute

	[place]
		-Fix: place terminal and place attrib: mark the sheet changed

	[propedit]
		-Add: expose text object mirx and miry

	[query]
		-Add: support for text mirx and miry
		-Fix: missing halign enum name "center"
		-Fix: advanced search tabs: we don't have refdes but name
		-Cleanup: pcb-rnd reference leftover in window title

	[renumber]
		-Add: plugin for automatically renumbering symbols (filling in the name attribute)

	[sch-rnd]
		-Fix: text alignment in mirrored bbox specified case
		-Fix: default file naming in buffer save is .sy for symbol
		-Fix: buffer: when picking up floater for copy, do a reverse transformation of parent transformations so that the coords in buffer are in the absolute coord system
		-Fix: don't hardwire .sch-rnd for dot path in menu paths,use config.h variant so it can be overridden
		-Fix: when clicking for selecting an object and there are overlapping objects, ignore the one already selected (lets you cycle through objects)
		-Cleanup: pcb references left over in config help
		-Change: when saving buffer to symbol, offer sym.rs as default file name, where sym is easy to replace (already selected)
		-Move: lock_floaters and only_floaters are handled in central gui search so that things like {a v} don't need to reimplement them
		-Add: implement start/end/center text alignment
		-Add: implement word and glyph justified rendering
		-Add: draw textbbox and origin controlled by text meta layer visibility
		-Add: sch_rnd_search_first_gui_inspect() that applies only_floaters and lock_floaters
		-Add: menu for listing unnamed symbols (hotkey: {s l u}); rename {s k} to {s l k} for consistency

	[sch_dialogs]
		-Fix: allow attribute dialog object search to pickup terminals (use the _inspect() search), e.g. in {a a}
		-Add: tree dialog: print connections oid-paths for a conn object
		-Add: tree dialog: preview for a conn object should zoom to the bbox of all calculated intersections ("green stuff") and hilight all objects participating in the connection
		-Add: apply hint coords for floater placement when attribute dialog invoked for object

	[std_cschem]
		-Add: rename components ending with ?? to oid based unique naming (to avoid collisions) and warn the user
		-Add: plugin configuration with fix_unnamed_syms (enabled by default)

	[std_forge]
		-Add: plugin for cschem standard attribute forging
		-Add: put the plugin on default views; run forge before std_cschem for the connect list to work from forge output

	[std_tools]
		-Fix: drag&drop move selected: don't ignore selected object when clicked
		-Cleanup: remove pcb_ prefix leftover
		-Cleanup: remove tool: no need to mark sheet changed, low level code does that
		-Add: double click while drawing lines or wires stops drawing

	[symbol]
		-Cleanup: rename symbols from *.sym to *.rs
		-Fix: opamp, comparator: V- transformation to keep text readable
		-Fix: use bbox-defined text for rail symbols with center alignment
		-Fix: common awk: terminals are created with all labels properly mirrored so they grow away from terminal origin in all four orientaitons terminals can be placed
		-Fix: ldo symbol term label directions
		-Change: term label shouldn't be floater but dyntext and the user should modify a name attribute
		-Change: common sym awk: term label shouldn't be floater but dyntext and the user should modify a name attribute


0.8.4 alpha5 (r4889)
~~~~~~~~~~~~~~~~~~~~
	[act_draw]
		-Add: DrawLine(), DrawRelease(), DrawGroup action(), DrawCircle(), DrawArc(), DrawWire(), DrawText()

	[backann]
		-Add: back annotation plugin with bap import and GUI

	[boxsym-rnd]
		-Fix: strip whitepsace from pin field args
		-Fix: pin alignment corner case with only top and bottom pins
		-Add: generate group uuids
		-Add: don't overwrite input with monolith on file name match, print an error instead
		-Add: throw error on multiple definitions (terminal name non-uniq)
		-Add: pin label option
		-Add: let the user tweak text size estimation factor

	[build]
		-Fix: remove redundant broken map_plugins rule
		-Add: generate Makefile.conf to help install scripts later
		-Add: make install
		-Add: install minuid CLI tool into libdir - boxsymrnd depends on it

	[construct]
		-Fix: don't even start converting to poly below 3 objects

	[doc]
		-Fix: design: specify source format only for the case the data is saved - don't care how it is stored in-memory; clarify when the UID based source format needs to be used
		-Fix: pcb-rnd terminology change from element to subcircuit
		-Fix: design: components and nets are primarily identified by their name
		-Cleanup: unnecessary full path in example
		-Cleanup: rename cschem to sch-rnd in svn url
		-Change: design doc: uuid (and src_uuid) are not attributes but non-mandatory properties of groups
		-Import: action doc scripts from pcb-rnd
		-Add: uuid and src_uuid in lihata format doc
		-Add: backann example: name nets because anon net name is not stable
		-Add: design: project file terminology with the root sheets
		-Add: design: {6:29} explains the relation between hierarchy and the optional project file

	[examples]
		-Fix: use a.name instead of A.name in dyntext
		-Fix: use a.devmap instead of A.devmap
		-Add: (instance) uuid in all groups
		-Add: full back annotation example

	[export_png]
		-Add: screen-colors export option that keeps selection and hilight colors
		-Add: --view parameter

	[export_ps]
		-Fix: restore view on error
		-Add: screen-colors export option that keeps selection and hilight colors
		-Add: --view parameter for ps and eps

	[export_svg]
		-Add: screen-colors export option that keeps selection and hilight colors
		-Add: --view parameter

	[gui]
		-Add: autocompile: GUI and implementation
		-Add: sheetsel: mark non-root sheets with parenthesis

	[io_lihata]
		-Fix: test parse accepts file only if it is of the requested type
		-Add: load and preserve project file lihata doc in memory, in the project structure
		-Add: save/load grp/grp_ref uuid and src_uuid

	[lib]
		-Fix: text update: optimization gone bad: can't skip detailed angle transformation if text is mirrored in any direction, even if input rotation is zero
		-Fix: don't crash if group ref target is NULL in csch_cgrp_ref_get_attr()
		-Fix: csch_grp_ref_get_top() shouldn't crash when sheet->direct or sheet->indirect is queried
		-Fix: sheet revert should also trigger sheet post-load event at the end, it's really a load
		-Fix: sheet uninit frees the undo list; sheet init resets/initializes the undo list
		-Fix: wrong order of local lib uninit when sheet is uninited may cause broken hash table in symlib_local
		-Fix: when converting a group ref to group, copy any attribute of the referee that's not set in the group
		-Fix: grp_ref embed to grp changes the sheet so should call sheet_changed
		-Fix: compile net merge should copy sources into the new net
		-Fix: compile net merge: remove sources from the source group which shall be empty by now
		-Fix: don't crash in "find sheet by load name" in case load name of a sheet is NULL - it just shouldn't match
		-Fix: integrity check: don't complain about object disjoint from a wirenet if object is a floater (typically it's the netname)
		-Fix: attr undo list free: don't crash on swapped attr being NULL (normal case)
		-Fix: wirenet draw: group all operations in a single undo slot when a new wire segment merges existing wires
		-Fix: default export file name for unknown page is unknown.EXT, not sch-rnd..EXT
		-Change: make plug io types a bitfield so multiple types can be probed
		-Add: upgrade project struct for remembering the lihata document (for now) and mark that it will be an extension of the librnd project struct at librnd 4.0.0
		-Add: bit to mark if a sheet is not a root in a project
		-Add: when compiling a project, start compilation only from root sheets, aux sheets should be reached through root sheets
		-Add: generate new (instance) UUID for groups as they are allocated
		-Add: copy group source uuid on alloc and dup
		-Add: undoable group uuid modify calls
		-Add: assert() on group ref being NULL in csch_cgrp_ref_get_attr(): it's usually indication of a bug, reveal it ASAP in debug mode
		-Add: extend the object hash API with a more flexible, bitfield ignore
		-Add: object hash can ignore floater geo and grp placement (useful for loclib symbols)
		-Add: integrity check: every group object shall have an instance uuid
		-Add: loclib edit callback in backend API
		-Add: utility call that figures if a concrete group is a source of an abstract object
		-Add: mark wirenet merge source as ghost so it can be omitted from output
		-Add: wirenet util: count junctions on a line object
		-Add: wirenet util: function to determine if a new wire line would hit the endpoint of an existing wireline with its middle
		-Add: publish attr source append API so that failed writes can be logged
		-Add: compile: log failed attribute writes
		-Add: attribute source parse: also parse type bits
		-Add: publish csch_conn_text2ptr()
		-Add: integrity checks on connection objects so strange/invalid cases are caught earlier
		-Add: export util: helper functions to compile and restore abstract model around export to handle --view

	[library]
		-Fix: use a.devmap instead of A.devmap so that compilation can change the printout
		-Fix: excess group in coil-var-3
		-Change: use a.value instead of A.value for display value so it can be calculated during compilation
		-Cleanup: use <n/a> for initial value for all stock librayr symbol - it's dangerous to use a valid-looking value, the user may forget to modify that after placement

	[propedit]
		-Add: handle UUIDs
		-Add: help text for the most common fields

	[query]
		-Fix: remove PCB from query help
		-Fix: remove ctx from linked list when dialog is closed
		-Add: support for grp .uuid and .src_uuid
		-Add: close all the sheet's search dialogs when sheet is unloaded
		-Add: close all search dialogs when plugin is unloaded

	[sch-rnd]
		-Fix: poly arc fill for negative delta shoudl result in positive steps
		-Fix: poly fill approximation assumes 600 DPI on exporters that don't set coord-per-px
		-Fix: font rendering compensation for x-mirrored text (180 deg rotation before render)
		-Fix: menu: use 'k' for grid units now that librnd supports it
		-Fix: don't list 32k and 64k for default grid units, they are out of range
		-Fix: wrong uninit sequence: free paths only after hidlib uninit, else saving config to user file (e.g. saving window geometry on exit) will break
		-Fix: menu: connection attr quick change is really about symbols not a generic groups, move it in the right submenu
		-Change: rename conf node prj.sheets to prj.root_sheets to prepare for hierarchic designs
		-Change: crosshair color in default config to make wires more visible
		-Change: enable autocompile by default
		-Add: draw: xform bits to disable rendering selection and hilight colors
		-Add: also list aux sheets in project file for hierarchic designs to be fully specified
		-Add: multi: load all sheets of a project file when the project file is loaded directly
		-Add: mark non-root (aux) sheets when loading all sheets of a project file
		-Add: UUIDs in the default sheet
		-Add: when creating a new sheet, make new UUIDs for sheet->direct
		-Add: lock floaters, only floaters config & menu
		-Add: menu: {a s} for slot change shorthand

	[sch_dialogs]
		-Fix: tree preview renders the sheet of the object, not the currently gui-visible sheet
		-Fix: library dialog refresh: get the name of the root lib entry and use that to decide if it's the <local> subtree and to log what got refreshed
		-Fix: refresh preferences dialog general and lib tabs on board change
		-Fix: close open library window when sheet is closed
		-Fix: undo dialog shall be global and shall always display data for the current sheet
		-Fix: tree dialog has one root per sheet (matters when showing a multi-sheet project)
		-Change: disable showing hidlib-name of the sheet - this concept should be moved from librnd to pcb-rnd as legacy
		-Change: tree dialog is really per project local, not per sheet local
		-Add: need to refresh any open library window in sheet postproc: revert may remove local lib
		-Add: library dialog: optional button for loclib edit
		-Add: do not display ghost abstract objects
		-Add: update tree (but with a shorter timeout) when sheets in a project change

	[std_tools]
		-Add: arrow tool repsects only-floater and lock-floater config

	[symbol]
		-Change: switch over common_sym awk to rely on externally supplied minuid seed to guarantee unique UUIDs
		-Add: license banner for common awk
		-Add: uuids in all lib symbols
		-Add: common_sym awk: generate uuid field for each group if minuid is initialized
		-Add: common sym awk: sym_term() has a label option that overrides the terminal name printout with whatever user requested label

	[symlib_local]
		-Fix: print string attribute for name in error log instead of binary garbage
		-Fix: symlib_local_free() gets a lib ptr but sh and shna contain groups; look up the group
		-Fix: loc_replace(): need to remove from hash/lib first, only then can the group be free'd, else hash removal would fail
		-Fix: parsed the wrong string in "object:oidpath" addressing
		-Fix: grp -> grp_ref loclib conversion: always keep the role attribute explicitly - it's too important to lose trying to rely on lib refs
		-Fix: set board changed after converting grp to loclib grp_ref
		-Add: loclib edit callback, invokes attribute editor
		-Add: preserve attributes that differ from the loclib version when converting a group to group-ref

	[util]
		-Import: deblist and keylist from pcb-rnd for doc to generate
		-Import: list_dialogs (devhelper) from pcb-rnd, adapt to sch-rnd


0.8.3 alpha4 (r4400)
~~~~~~~~~~~~~~~~~~~~
	[boxsym-rnd]
		-Fix: monolithic symbol: avoid overlapping terminals if multiple slots use the same side
		-Fix: remember multi-slot coords and insert separator only when side got incremented
		-Fix: when generating monolith, prefix slotted pin names with slot number to make them unique

	[build]
		-Add: generate, compile, link and use embedded version of default config instead of depending on ./
		-Add: embedded default sheet fallback
		-Add: embedded version of the menu file

	[construct]
		-Change: allow arc in poly while converting objects to poly

	[doc]
		-Add: developer doc on how local symlib copy&paste works (especially in multi-sheet setup)
		-Add: lihata file format versions
		-Add: lihata format doc

	[export_tedax]
		-Add: --view argument for selecting which view to export

	[gui]
		-Fix: sheetsel: use the basename of the parent directory of the project file for project name
		-Fix: off-by-one bug in sheetsel project basename calculation when there's no '/' in project path
		-Del: redundant Unselect() implementation
		-Cleanup: get rid of infobar's global sheet dependency where easily possible

	[io_lihata]
		-Fix: do not save or load conf subtree in buffer save/load
		-Fix: do not save editor/mode in sheet conf subtree (to reduce noise)
		-Add: buffer load/save hooks and test-parse

	[lib]
		-Fix: remember template name for new sheets so revert-sheet can load the template even tho loadname and hidlib name are NULL (for enforcing save-as)
		-Fix: const correctness: csch_cfg_multiport_net_merge is not modified by the lib
		-Fix: group dup shouldn't crash if dst allocation (with enforced ID) fails but return NULL
		-Fix: project export name: when deduced from sheet, truncate "extension" of the sheet load name and append both view name and a *
		-Fix: split up disjoint wirenets after a delayed/inhibited wirenet update
		-Cleanup: rename export_netlist to export_project because the real difference is operating on the abstract model exporting the whole project, what the exporter does with it is its own business
		-Del: project->symlibs (was in use before project switched to coraleda-standard config approach)
		-Add: sheet post unload event
		-Add: Unload() action (works for sheets for now)
		-Add: event for copy-to-buffer so that local lib can take over
		-Add: API for buffer load/save
		-Add: csch_cgrp_ref_ptr2text()
		-Add: integrity check: grp_ref object must have a referee and if it's a pointer, it must be within the same sheet
		-Add: pass on the sheet that triggered project export to figure output name, just in case project does not have a name
		-Add: project compilation gets a viewid arg so it doesn't necessarily rely on project's default view (allows reentrant export on a different view)
		-Add: get-view-idx-by-name API
		-Add: CompileProject() has an optional arrgument for naming a view to use
		-Add: "deleted" concept in group ref's child_xform; do not export deleted items
		-Add: function to clear the cache portion of child_xforms of a grp ref
		-Add: assert() on trying to use removed child xform
		-Add: throw an error for "grp-ref with child xform within grp-ref" for now
		-Add: integrity check: detect disjoint wirenet groups
		-Add: helper macro that converts object[=oidpath] into a keyword (F_Object) and an object pointer resolving the oidpath

	[propedit]
		-Fix: don't use int for enum: unsafe when passed as pointer
		-Fix: passing incompatible pointer to modify() on polygons
		-Fix: remove pcb-rnd-specific scope hints from help
		-Add: implement toggle for polygon has_fill and has_stroke
		-Add: Propset()
		-Add: Proptoggle()
		-Add: Propget() action
		-Add: Propprint() action

	[scconfig]
		-Add: detect system font dir (testing dir existence from a list) and include it in generated config.h
		-Add: --fontdir to override autodetection

	[sch-rnd]
		-Fix: multi: calculating the wrong project file name (dir, not file)
		-Fix: move generating sheet post-load event from lib to sch-rnd's multi so that project config is already loaded by the time the event is emitted
		-Fix: multi: properly restore config state after a failed load
		-Fix: run group update on pasted object only if it's really a group
		-Fix: do not accept rc/font_dirs on project or design role (that's too late for the font engine)
		-Fix: print all GUI plugins available (not only the ones loaded)
		-Fix: refuse to copy grp_ref objects to buffer - they would break on paste later if the sheet changes or if pasted on another sheet
		-Fix: do not export each sheet of a project from project export
		-Fix: select the arrow tool after loading a new sheet so that a sheet saved 'mode' wouldn't cause problems
		-Fix: typo in the menu file: saving buffer group should work on any group, not just symbols
		-Cleanup: remove global project dependency from -x exporting
		-Cleanup: remove dumping the abstract model from project netlist export call - there are better ways looking at the abstract model by now
		-Change: SaveBuffer() and LoadBuffer() argument for saving whole buffer is "All", not "Sheet" as the save format has a different header
		-Add: make font mapping code substitute $() in font dirs so scconfig detected font dirs can be fed in and use scconfig detected font dir by default
		-Add: multi: support for sheet unload
		-Add: multi: helper for finding next/prev sheet from a given sheet (for fallback after an unload)
		-Add: sheet unload menu
		-Add: be more explicit about which operations are on sheets in the file menu
		-Add: fill in rc.path.design using the sheet's file name
		-Add: --show-paths prints library search paths and font dirs
		-Add: emit event BUFFER_COPY_CUSTOM and perform the copy only if no plugin did it
		-Add: BufferSave() and BufferLoad() works on whole buffers (op is "All")
		-Add: fail with an error message when pasting a group-ref (must be handled by plugins, e.g. symlib_local)
		-Add: generic project export call gets optional explicit name from the export plugin
		-Add: implement RemoveSelected() for {s r}
		-Add: UnSelect(All) action with a menu binding
		-Add: Select(All) action with menu binding
		-Add: Select(Invert) inverts selection
		-Add: draw code for arc-in-poly
		-Add: remember file name when sch-rnd was started with a file name pointing to a non-existent file and a new sheet had to be created so save won't ask for the file name

	[sch_dialogs]
		-Fix: quick attr: accept non-native-action fungw functions for quick_attr callback so that scripts can implement quick_attr as well
		-Fix: update (global) undo dialog content after switching sheets
		-Add: about box
		-Add: attribute dialog: when creating a new attribute, also ask for the value for quicker edit
		-Add: attribute dialog: set value on existing attribute in 'new' if both key and value are specified
		-Add: EditText() first arg object=oidpath works
		-Add: PenDialog() accepts object=oidpath as first arg

	[std_devmap]
		-Fix: compiler error message prints devmap name string (not the devmap attribute struct)

	[std_tools]
		-Fix: batch undo operations of line endpoing move: in case of wire lines this may be a series of operations to break wirenets
		-Fix: reset movecopy endpoint when a new move starts so it doesn't accidentally inherit previous endpoint state

	[symlib_local]
		-Fix: copy loclib ref to buffer should create a "purpose=symbol" grp within buffer's indirect where the local symlib is grown
		-Fix: don't require keeping the original OID when creating indirect symbol loclib entry - pasting from buffer will oftne have collisions in OIDs
		-Add: when loclib grp_ref is copied to buffer, also copy the referee into the indirect subtree of the buffer
		-Add: when copying to buffer, rebind ref so it doesn't point to the sheet's indirect
		-Add: sanity checks for loclib grp_ref paste
		-Add: paste grp_ref with also pasting inderect referee and fixing up the reference


0.8.2 alpha3 (r4136)
~~~~~~~~~~~~~~~~~~~~
	[boxsym-rnd]
		-Update: use attribute -symbol-generator instead of symbol_generator to avoid collisoin (and dash for consistency)

	[build]
		-Fix: explicit rule for building load_cache object
		-Fix: explicit rule for building src_3rd ttf_bbox's mapper

	[doc]
		-Fix: do not hardwire UID as means of reference from abstract to concrete model, leave the decision to the implementor
		-Change: rewrite attribute source syntax to make the GUI be able to trace back sources
		-Add: release procedure imported from pcb-rnd, tuned for sch-rnd alpha state
		-Add: explain that the indirect subtree hosts different group types, including devmap
		-Add: explain the first level of groups within the indirect subtree
		-Add: document how --layers works
		-Add: computer readable tables of query fields for concrete objects; generated html version
		-Add: query: copy relevant parts for functions from pcb-rnd doc
		-Add: portmap & devmap & display name document
		-Add: document loclib_name field for groups
		-Add: attribute key prefix '-' and '+' to control merging
		-Add: devmap file format
		-Add: document child_xform
	[examples]
		-Del: old project file example - we've switched to config-tree-based project files
		-Fix: portmap example slot2.lht: specify the portmap only once
		-Fix: remove redundant copies of the titlebox
		-Update: switch over from slot to -slot attrib avoiding attrib collision
		-Add: include devmap loclib in devmap example (devmap loclib is mandatory)

	[export_lpr]
		-Add: print (using generic lpr implementation from librnd)

	[export_png]
		-Change: switch over from local copy of draw_png to using librnd 3.2.0's pixmap draw plugin
		-Add: --layers

	[export_ps]
		-Change: switch over from local copy of ps/eps draw code to librnd's lib_exp_text
		-Add: depend on lib_exp_text
		-Add: --layers for ps and eps

	[export_svg]
		-Change: switch over from local copy of ps/eps draw code to librnd's lib_exp_text
		-Add: depend on lib_exp_text
		-Add: --layers

	[gui]
		-Fix: potential NULL pointer deref on load
		-Fix: overwrite sheet's loadname on save as to keep it in sync (not on plain save)
		-Fix: invalidate_all() after compile - a lot of dyntext has changed
		-Fix: compile button invokes the action not with the project that was active at setting up GUI but the project that's active at the moment (the user may have switched in multi-sheet setup)
		-Import: title.c from pcb-rnd to set app top window title
		-Add: action for relative-switching sheets
		-Add: adapt title.c for sch-rnd
		-Add: sheet selector (multi-sheet support)

	[io_geda]
		-Fix: more detailed error messages in path parsing
		-Fix: separator in H path xy coords is not comma but space

	[io_lihata]
		-Fix: project file header to match pcb-rnd's
		-Del: remove old project file loading - switched to librnd
		-Cleanup: switch over from csch_message() to rnd_message()
		-Add: save/load conf subtree to/from sheet file
		-Add: load and save group ->loclib_name
		-Add: accept coraleda project in test-parse

	[lib]
		-Fix: export util: determine default export file name using loadname of the sheet, not realname (makes a difference if sheet is a symlink)
		-Fix: when creating dummy project file, make sure the the proper dummy lihata doc is created for it
		-Fix: reverse prio levels of plugins - order should be from lower prio (larger integer) to higher prio (smaller integer) according to the spec
		-Fix: attrib source type is not a single char but a string (to match the spec)
		-Fix: uninitialized stack var caused wrong net name for comparison/log in wirenet merge
		-Fix: segf when compiling on unsaved page
		-Fix: compile: when a group ref overwrites an attribute of the referee with the same prio, that's not a compilation error, simple skip the write
		-Del: local implementation of project file name calculation (csch_project_name_by_sheet_name()) -> use librnd's
		-Del: get rid of local message.[ch] implementation in favor of librnd's
		-Change: high level attrib code always gets source as pointer, so that allocation can be simplified in a subsequent commit
		-Change: make struct csch_source_arg_s opaque, making the allocation scheme an internal business of the attrib code
		-Change: make connections layer visible by default
		-Optimize: simplify temp attrib source allocation, save two malloc()s
		-Move: local lib support, remember loclib_name, centrally allocate loclibs
		-Add: library changed event
		-Add: layer visibility table for default exports
		-Add: temporary workaround until librnd4.0.0: LoadFrom() uses multi.h API to load multiple sheets instead of replacing current sheet
		-Add: csch_lib_clear_sheet_lib() - will be useful for cleaning the library before a global rehash
		-Add: preview_text hook for library backends, so non-symlib implementations can get something displayed in the library window
		-Add: unset dummy bit on project file when it's written out by librnd
		-Add: compiler: implement attribute collision rules, introducing the '-' prefix for omitting attribute promotion
		-Add: run standard attribute compilation on ports
		-Add: API for attribute source decompile
		-Add: utility function for embedding a group_ref (converting it into a group) - floater transformation not yet done
		-Add: function to remove a lib entry from the tree
		-Add: new drawing layer for symbol meta (bbox & status)

	[library]
		-Update: prefix all the misc attributes with the a minus sign so they are not promoted to the component

	[propedit]
		-Fix: don't let group ref child objects changed

	[query]
		-Fix: clean up user functions before compilation instead of expecting the previous compilation succeeded
		-Fix: throw error message if there's user function in expression
		-Fix: report compilation errors using rnd_message() instead of --debug-only trace
		-Fix: reset lex buffer before parsing a new script (matters after a compilation error)
		-Add: include last seen line number in compilation error report

	[scconfig]
		-Fix: use configure .sch-rnd dot dir (under $HOME) instead of hardwired string
		-Cleanup: switch over to use /local/csch instead of /local/pcb in the db tree

	[sch-rnd]
		-Fix: uninit gui support plugin before unloading all plugins so that it won't hold its deps back with refco and every plugin is properly uninited and unloaded
		-Fix: typo in buffer code: when buffer place event took over creating the target object, take the right object for result
		-Fix: set rnd_render in expose_main() so that gui exporting works
		-Fix: buffer paste at 0;0 should call group update with xform (there's no move that would do that)
		-Fix: arrow tool shift-click on selected object should unselect it
		-Cleanup: remove code dups with pcb-rnd, using librnd's new exec prefix helper
		-Cleanup: move export helper function from sch-rnd.c to export.c
		-Change: use our own app's config prefix in the default conf for clarity
		-Add: explicit rule for compiling src_3rd/libuundo objects
		-Add: print runtime librnd version as well
		-Add: make it possible to render (draw) using local layer visibility instead of the current GUI's (required for reliable exports)
		-Add: export helper: interpret a layer visibility description string and set xform visibility accordingly
		-Add: export menu
		-Add: print menu
		-Add: multisheet: temporary code for switching sheets by saving/loading config states (before librnd 4.0.0)
		-Add: SymlibRehash() action
		-Add: prj/ conf subtree with list of sheets, allowed to load only from the project file
		-Add: refuse to load view conf from the sheet file or cli, scope should be at least project
		-Add: emit LOAD_POST event after loading a sheet
		-Add: object right click context menu for symbol vs. local library handling (embed/unembed)
		-Add: draw dashed bbox on the symbol meta layer
		-Add: symbol meta layer: draw an L or E in the top left corner depending on whether the symbol is loclib grp-ref or embedded grp

	[sch_dialogs]
		-Fix: missing return value on library dialog error exits
		-Fix: library: remember the full path of cursor so it can be restored after extending the local lib
		-Fix: don't let {e t} edit group ref child objects
		-Fix: tree dialog: track of what object was last shown in preview and do not change zoom/pan, only redraw on status changes as long as object selection did not change
		-Fix: generate file name change event on changing sheet name to get the titlebar updated
		-Fix: attr dialog: prefix group ref referee keys with a space so they are not found for most context (and cursor is not set to them when a target key is requested)
		-Fix: attribute dialog: disable the floater button for group refs (grp refs can't host new objects)
		-Fix: attribute dialog: allow limited edit of referenced group attributes
		-Fix: attribute dialog: don't let the user change priority value on referenced group's attributes
		-Fix: don't crash on library selection if nothing is selected when "use selected" is clicked, take it as a cancel
		-Add: update all library GUIs open for the related sheet upon a library changed event
		-Add: attribute dialog displays referenced grp's attributes as well
		-Add: dyntext edit: when invoked on a grp_ref direct dyntext child refering to the group_ref's attribute, invoke the attribute editor, that's the only way to change the text
		-Add: dyntext edit: throw error if grp_ref child was a dyntext but could not be edited
		-Add: dyntext edit: widgets to directly access/edit attribute value in the simplest and most common cases
		-Add: print error messages when the attr edit button can't figure which attribute to edit
		-Add: create the PrintGUI() action using librnd's implementation
		-Add: attribute dialog: set the name of the left-right pane for testing save/restore
		-Add: tree dialog preview: show original sheet, not current GUI sheet (it is a local dialog)
		-Add: if lib backend preview_text() is available, use that for generating the preview instead of trying to draw a symbol (useful for non-symbol libs)
		-Add: button for following attribute history row
		-Add: AbstractDialog() takes optional abst_id and attr_name to navigate cursors to an existing attribute
		-Add: cross-call from abstract attribute history to attr source abstract object (opening the right attribute dialog)
		-Add: abstract attribute source traceback button: when concrete object attribute is clicked, open the attribute editor with the object's oidpath and attr name to get the cursor right
		-Add: abstract attribute side: when presenting attribute history, auto-select highest prio line, that's the one that determined the final value
		-Add: include libmaster's name and sheet name because multiple instances may be open
		-Add: special buttons for local lib handling

	[std_devmap]
		-Fix: do not modify portmap attribute values while parsing for assisted edit
		-Fix: assisted portmap edit: return 'changed' state after modification
		-Fix: port map quick edit: memory management bug on initial pcb/pinnum fillin
		-Update: prefer -slot over slot for the slot attribute
		-Add: more detailed error messages on invalid devmap attributes
		-Add: figure which symbol(s) contributed the devmap attribute
		-Add: local lib support - automatically save any devmap used on the sheet in the local lib
		-Add: implement loclib refresh-from-external-lib
		-Add: count/list devmap usage from local lib

	[symlib_fs]
		-Fix: when loading a parametric symbol from the rendered temp file, replace group file name with the original parametric symbol file name - nobody is interested in the temp file name

	[symlib_local]
		-Add: when enabled, create local lib reference for buffer pasted symbol groups

	[target_pcb]
		-Del: no need to manually derive port attributes, they are all compiled centrally
		-Fix: when display name is set, description should include where it was copied from
		-Fix: typo in attrib source plugin name

	[util]
		-Update: example boxsym has "-slot" attr so it doesn't propagate

0.8.1 alpha2 (r3606)
~~~~~~~~~~~~~~~~~~~~
	[boxsym-rnd]
		-Fix: do not emit excess, zero sized box
		-Fix: swap order of pins from bottom->top to top->bottom on the left and right side to match the order in the file

	[build]
		-Fix: replace "fp" plugin class with "symlib" class as sch-rnd has symbol libraries, not footprints
		-Fix: classification of std_* plugins (they are feature, not io)
		-Add: ./configure: --enable-bison and --enable-byaccic
		-Add: define sphash so that plugins can use it
		-Add: new plugin class "engine" to separate them from more generic features

	[doc]
		-Add: generated doc on stock parametric symbols
		-Add: devmap: specify how non-slotted portmap entries look like
		-Add: describe how does the display/name attribute work, explain heavy symbols
		-Add: explain portmap and devmap

	[examples]
		-Add: a real LDO example circuit (using the stock lib and portmap)
		-Add: a working devmap example with 2 of the same n mosfet symbols with different pinouts
		-Add: devmap example conn1 gnd and vcc connections
		-Add: slotting example with devmap
		-Add: inhomogeneous slotting example (clocked SR latch built of 4 NAND gates)
		-Del: project file special subtree for symlibs (project file becoming config based)

	[export_png]
		-Add: disabled-by-default until draw_png is moved to librnd

	[export_ps]
		-Add: export ps (ps and eps)

	[export_svg]
		-Add: standard svg export; low level draw copied from pcb-rnd

	[export_tedax]
		-Add: register an export HID as well so the standard librnd export mechamism works
		-Add: call the generic exporter from the export plugin
		-Add: more details in error messages on pin number/refdes
		-Fix: use abstract net's ->netname for the final fallback if there's no better attribute based name
		-Fix: do not export components with no name; such component is meant to be graphical by definition
		-Fix: no parent refdes is not an error, it only means parent component (and all pins) should be omitted from the netlist
		-Fix: prefer display/* attributes over pcb/* attributes (do not hardwire workflow)

	[gui]
		-Fix: use gui_inspect search for right click so that terminals are picked up over symbols, wirenets and floaters
		-Add: compile box in the top status bar
		-Add: view button invokes ViewDialog()

	[io_geda]
		-Add: plugin main to read gschem sheets and symbols

	[io_lihata]
		-Fix: reverse ordering of negative OIDs to preserve object order on a load-save round trip (new negative OIDs are assigned in decreasing order)
		-Del: don't load symlib dirs from a special subtree from project file, it'll be part of the normal config tree
		-Add: test parse callback
		-Add: support for group ref child xform load and save

	[lib]
		-Fix: avoid excess object redraws in text update
		-Fix: wrong ordering of io plugins by priority: higher value is better
		-Fix: if test parse returned okay, rewind() f once again because the real parser may also depend on it; also rewind after test parse when loading group
		-Fix: inhibit redraws during load, just in case the loader triggers some
		-Fix: wirenet util: don't print warning on ignored text object in wirenet mapping; such text object is typically the netname
		-Fix: search all selected: recurse into non-selected groups so that partial selection is found
		-Fix: if a new wirenet group is created during recalc freeze, add it to the recalc list (to be recalced after unfreeze)
		-Fix: wirenet unfreeze merge: recalc connections as well; calculate final net name on unfreeze merge, communicate renames using error messages so that the user gets notified
		-Fix: batch undo ops for drawing a wirenet segment as it often breaks down to multiple junction and conn operations
		-Fix: recalc connections on wirenet line move
		-Fix: do not add the same library root twice even if it got two map requests
		-Fix: reverting before save should get back to the default sheet
		-Fix: invalid free(): on sheet uninit remove comm_str only after removing all pens because pen hash depends on comm_str
		-Add: fully working net/component compilation that considers engines and views
		-Add: API: csch_oidpath_list_clear(), csch_text_invalid_chars()
		-Add: API: abstract type name resolver
		-Add: pointer domain for object arrays (vtp0 of csch_chdr_t *)
		-Add: recursive wirenet recalc freeze/unfreeze with a single recalc at the end
		-Add: wirenet: group merges after recalc unfreeze
		-Add: i/o API: call for backup sheet save (no side effects like resetting the changed flag)
		-Add: remember if a project is dummy (not loaded or saved, just created from scratch)
		-Add: abstract objects shall remember their abstract model parent for easier callbacks
		-Add: throw an error on port trying to connect to two different nets (except when it is being merged)
		-Add: project should remember last compilation abstract model so it can be displayed
		-Add: new search flavor, gui_inspect() that allows some of the non-movable/non-selectable objects to be picked up too (symbol lock bypass on terminals)
		-Add: project view accessors: return current view or view by name
		-Add: helper function to get the abstract object for a concrete object
		-Add: dyntext resolves abstract model's attributes using a.key references
		-Add: API: introduce an extra argument in project loading to tell if all sheets need to be loaded recursively as well
		-Add: API: project util: clear view list
		-Add: API: helper function to decide if any parent of an object is selected
		-Add: API: object hash functions
		-Add: API: group bit for preferring local lib
		-Add: group ref child transformations (experimental)
		-Change: use \001 instead of <empty> for dyntext rendering: should render as an empty box and it takes much less space and likely fits where the non-empty printout would
		-Change: auto terminal placement creates a floater for display/pinnum instead of concrete model's name to let filter plugins decide what to print
		-Del: lib_find API: always use cached lib
		-Move: realpath resolved from symlib_fs to core lib - will be needed by any fs based library
		-Move: fs lib mapping call from symlib_fs to core lib - will be used by any lib implementation
		-Cleanup: rename library.[ch] to util_lib_fs.[ch] for naming consistency and code repurpose
		-Cleanup: remove ->netname of abstract net, keep ->name only (consistent field naming)
		-Cleanup: in the concrete model only groups have attributes, remove attr hash from chdr
		-Cleanup: unreg actions on unload; related memory leaks

	[lib_alien]
		-Split: move read_helper out from io_geda to a reusable lib (multiple io plugins are going to depend on it)

	[library]
		-Fix: remove excess, zero sized box from the LDO sym
		-Fix: common awk: do not move name2 (pin name) by str length, it's good in its left aligned state
		-Fix: gnd symbol connects to net called GND not gnd, more widespread
		-Add: common awk: generate pin number with display/pinnum
		-Add: devmap for IRF510 in TO220 - perfect for example as the pinout differs from 2n7002
		-Add: switch() --help: make style a proper enum and explain each possible value
		-Add: style=rotary support in switch()
		-Add: default titlebox symbol
		-Change: symbol lib terminal floaters: switch over from concrete model's pin name to display/pinnum

	[propedit]
		-Fix: integer overflow on coord entry maximums

	[query]
		-Add: concrete model query(), code based on pcb-rnd's quert()

	[sch-rnd]
		-Fix: font rendering: font rotation was determined too early, before a potential text_update that would calculate hte final transformed rotation angle
		-Fix: timed backup save uses the backup save i/o API so that the changed flag of the sheet is not lost
		-Fix: don't redraw while exporting
		-Fix: don't postproc sheet twice
		-Fix: draw code sets layer group to 1 to comply with HID API requirements
		-Fix: do not render sheet if set_layer returns 0 (respect the HID API)
		-Fix: invalid memory handling on exit: reset current sheet and project to NULL after freeing them so that emergency save is not done
		-Fix: overlapping strncpy() in librnd due to wrong handling of conf file name
		-Fix: use librnd's pixmap free instead of a plain free() so all internal fields of the pixmap are free'd too
		-Fix: do not call csch_init() twice, it leads to memory leaks
		-Fix: don't postprocess the sheet twice after loading from command line
		-Cleanup: rename default sheet file for naming consistency (with default project file)
		-Cleanup: unregister central resources (events, actions) on exit; memory leak cleanup
		-Add: advanced search menu (same as in pcb-rnd)
		-Add: menu for listing locked objects using query()
		-Add: menu for portmap quick attr
		-Add: menu: devmap library browser in window menu
		-Add: make multi-port net merge configurable from the conf system
		-Add: default views read from the config when creating a dummy project
		-Add: project file helpers: create new view, save project file; when creating a new project file, create the first overwrite subtree so it becomes a valid project file
		-Add: API: project util function for deleting the nth view
		-Add: API: buffer paste: generate event for hooking in and replace direct object dup
		-Add: conf node editor/paste_to_local_lib to control whether paste should be using the local lib

	[sch_dialogs]
		-Add: upgrade TreeDialog() to handle object arrays for pcb-rnd "view list" equivalent for now
		-Add: view dialog
		-Add: attr edit: fill in right side abstract attributes
		-Add: abstract model browser
		-Add: library dialog: optional modal version that returns the full path of the selected row
		-Add: parametric lib dialog (using rnd_inclib's)
		-Add: extend tree dialog to handle a whole project (multiple sheets)
		-Fix: quick attr connect: always enable the 'del' button, because del can be done by text input as well; instead of disabling, when clicked: check if key exists, throw error if not
		-Fix: attr dialog: if a new str attr is created, e.g. after {a a}, select the attr row for quicker floater button access
		-Fix: attr dialog floater creation: use the wire pen for wirenet name attr with {a a}
		-Fix: handle cancel on dyntext attribute picker
		-Fix: tree dialog: refresh preview after select/unselect/del on object
		-Cleanup: tree dialog: do not depend on ctx->sheet where object is available (switching over to project based operation)
		-Cleanup: use frame instead of separator in attribute dialog common buttons now that the related expfill bug is fixed in librnd

	[std_cschem]
		-Add: new plugin for handling standard cschem attribute mechanisms (such as component "connect" attrib)
		-Move: quick attr edit for symbol connect attribute moved to std_cschem, because that's the plugin processing this attribute by default

	[std_devmap]
		-Add: portmap engine
		-Add: devmap engine using cached fs lib

	[std_tools]
		-Add: copy/move all selected objects if there's selection

	[symlib_fs]
		-Add: set the sym_prefer_loclib bit in newly loaded groups
		-Add: test-parse files for group-type before adding them in the library (add symbols only)

	[symlib_local]
		-Add: prepare for one more layer of groups in indirect so that different backends can easily sotre their data without interference
		-Add: create a with-attributes and a no-attributes hash of the local lib while mapping
		-Add: event handler for buffer paste symbols, decides if ref needs to be created
		-Split: code that finds the local symlib into a reusable function (buffer place will need it as well)
		-Add: sort out what to do on symbol paste, fetch local lib root when needed
		-Add: look up the root dir and hash table for paste ref placement

	[target_none]
		-Add: dummy target that displays original names

	[target_pcb]
		-Add: target plugin for the PCB workflow; sets port display/pinnumber


0.8.0 alpha1 (r2889)
~~~~~~~~~~~~~~~~~~~~

Initial release.
