0. old, still waiting for ack

1. For the upcoming release ===============================================================================

2. For later releases ===============================================================================
- BUG: segfault in drc dialog: bug_files/drc1.txt [report: aron]
- BUG: bug_files/TODO/PCB.1349.save will segfault with :fontsave(). Was created in v2 font pcb-rnd, then loaded in v1 font pcb-rnd and saved, then loaded in v2 font pcb-rnd  [report: Erich]
- BUG: start new layout when in font v2 enabled pcb-rnd running font edit mode. Use {w f} to load a font, select font, enter font edit mode, Subsequent fontsave() saves in v1 format [report: Erich]
- BUG: bbox used for subc boundary shouldn't include subc-aux vectors (maybe also should be the naked bbox) - this starts to matter below 0805, where the vectors are larger than the fp [report: aron]
	-> stock 0201 (and 0402)
	-> fix was r38447
- FEATURE: font2 editor: preview dialog kerning table: [report: Erich]
	- sort entries  (maybe on save too?)
	- add a filter like in the library window
	- some glyphs need the same kerning, being able to input a list like "N-}, M-}, I-}" and "-2mil" would be time saving in the font editor preview GUI
	- & hex bug on kerning table: preview.c, search for &%d, should be &%x, should be line 159 and 164
- FEATURE: attribute propagation from sch-rnd via tEDAx
	- device attribute in subcricuits
	- make a new bom template that includes that
- FEATURE: hierarhic: subc-in-subc syntax: refdes-refdes-term? probably a bad idea
	- search for '-' and centralize parsing refdes-term id 
- librnd4.1:
	- FEATURE: lihata board v9:
		- ANNOUNCE: netlist dialog: add conn and del conn button
		- ANNOUNCE: back annotation upgrade: subc add and remove
	- remove PCB_WANT_FONT2, it's the default
	- remove --enable-font2 and want_font2 from scconfig and config.h, it's the default
	- maybe remove path_to_design_relative() in favor of librnd core/compat_fs.h
	- rebind Export(): use rnd_act_Export(), remove pcb_act_Export()
	- DRC test in make test: the invchar test bbox changes because of a bugfix
- FEATURE: bom export: template variable for the list separator (e.g. refdes output); it's space now but sometimes comma is needed [report: Majenko]
- BUG: bug_files/TODO/ppc_full.*: poly-clear-poly should respect full-poly flag and apply all islands only if full-poly is set
- BUG: start pcb-rnd, { w l }, select tssop(), place on layout, shift click to replace tssop() on layout with tssop() in buffer, then { u u }, note "pcb_search_obj_by_id(): internal error, search for ID XXXX failed" [report: Erich] 
- BUG?: enforce style clearance doesn't work with middle-line rubber band move, see bug_files/TODO/drag.rs [report: Majenko]
	-> may be a non-bug, if we take this as a line move operation (doesn't enforce)
- DEL: remove c-pcb support in favor of the more generic external autorouter plugin
- DOC: pool node on how to use pixmap for breadboading
- CLEANUP: rewrite query's parent_net_len_found_cb() to collect objects in a tree (from->to objects, at most 2 'to' objects from a single 'from'); use slab allocation for tree elems; see bug_files/revp.lht: {n l o} on the long horizontal line causes zig-zagging map that a single segment reverse won't fix; also revise pads ascii write with this [report: cuvoodoo]
- CLEANUP: TODO27: undo's removed list shouldn't depend on object IDs but probably remove list index because IDs are not unique if we want our operations to retrain IDs. Repro: shift-click subc replace twice, then undo; or drag&drop move selected object and undo [report: Igor2]
- CLEANUP/BUG: undo operation while drawing a multiple segment line doesn't change segment attached to the crosshair [report:wojciechk8]
	- tool_line.c depends on pcb_undo()'s return value; can be fixed only when the old undo system is removed
- CLEANUP: think over how to handle subc selection: selecting all parts automatically is bad for propedit; bug_files/subcsel.bug [report: Wojciech]
	- BUG: propedit adding/deleting attributes inconsistency; search depth problem (see TODO#28)  bug_files/subcsel.bug [report: Ade]
	- BUG: select a subc, propedit selection: padstacks are counted twice (e.g. for lid/thermal) [report: gpaubert]
- CLEANUP: layer order from data
	- build a list of layers rendered, in the order of rendering while drawing layer groups; maybe use gdl and move the group to the end and use a terminator item;  get pcb_search_obj_by_location_() to use this list for ordering
	- BUG?: Far-side silk text can be selected and moved when the mouse is over front-side subcircuit. (but this is what we had with elements too! -> rewrite search.c to be a 'script' config) bug_files/farsilk.lht [report: Ade]
- CLEANUP: revise dialog boxes for string/integer input box character length
- FEATURE: librnd API: library window: allow long tags and long location text to split: rich text widget in librnd [report: Igor2]
- BUG: Lihata persistent save:
	- flag compatibility: save unknown, string-flags as loaded by io_pcb
	- ind: FONTS: second font indents incorrectly
	- ind: indentation bug in inline struct therm: closing } is preceded by indentation whitespace for some reason
	- keep numeric format: test all
	- keep unknown subtrees
	- BUG: lhtpers indentation: bug_files/lhtpers_ins/; breakpoint in pers_table.c:34 and debug why the newline is getting in [report: Igor2]
- BUG: I/O bugs:
	- eagle:
		- BUG: xml: eagle XML import fails on polygon import reported by miloh, test file pcb-rnd-aux poly_selfi/eagle_polygon_crash.brd [report: erich], due to input file containing an invalid polygon: a self intersecting poly in line 156 - consider handling "width"?
		- bin: eagle binary format v3 and libraries do not have a DRC block specifying restring or minimum feature widths. Binary loader should add a DRC block in these cases to the tree with the minimum settings needed for padstacks and features to load sensibly. [erich].
		- bin: padstack clearances for element pins will rely on connectivity to other polygons layer by layer defined in the netlist; test case: alien_fmt_test/io_eagle_bin/net_poly_conn
- rubber stretch routing:
	- IGNORE: BUG: Rubberband move line endpoints ignores connected arc endpoints. [Fixing:Ade]
	- remove auto_via from the conf and code
- librnd 4.2.x
	- BUG: start pcb-rnd. save empty layout as unkown.rp then export layout to unknown.scad then revert file { f r}, Viewing unknown.scad in openscad shows green soldermask. Now export again to unknown.scad, reload in openscad, soldermask is now yellow. Example pre and post {f r} exports are bug_files/TODO/unknown*.scad [report: Erich]
		-> happens only if the export dialog is left open for the whole time
		-> happens because the dialog remembers the old hidlib (design) ptr via hid_ctx within the HID
		-> maybe export dialog should be closed on design change?
		-> need to move CSCH_EVENT_SHEET_PREUNLOAD (or post unload? or just a new event?) to librnd to inform the GUI implemented in librnd

3. Long term ===============================================================================
- multi: merge sch-rnd r4718 for proper multiboard support later
- FEATURE: copy sch-rnd's RtreeList action in act_read
- CLEANUP: footprint lib rework
	- BUG: bug_files/TODO/TO247.rp, { w l }, select TO247, shift click onto subc in TO247.rp layout: 90 degree error [report: Erich]
		-> wrong subx-aux x and y lines (names mixed up)
		-> apply patch in bug_files/fp_rework to fix that, check with the script in the same dir
	- revise sil graphics for at least smd
	- add assy drawing
	- add keepout
	- revise pad sizes and hole sizes, maybe starting from bedrock
	- revise 3d (openscad) models if they still line up
- BUG: start new layout: pcb-rnd foo.rp, export scad model, will export to foo.scad by default; then start new layout, save layout as bar.rp. When using export dialogue, dialogue defaults to previous filename foo.XXX for any of the export options. [report: Erich]
- poly lib rewrite:
	- BUG: bug_files/TODO/out-extract*.rf, on which is not autocropped, triggers assert with scrolling, but the autocropped version does not. Polygon vertex coords are well under size limit for 32 bit coords in both cases. out-minimal.rf is a more minimal polygon version of the subc which triggers assert in footprint edit mode with {ze} and scroll bar use. [Report: Erich]
	- BUG: thermal tool allows invalid polygon assert. might be a non bug. load bug_files/TODO/thermal-assert.rp and use thermal tool and shift click to start cycling through thermal types on padstack. Assert eventually occurs. [report: Erich]
	- BUG: bug_files/Poly_rewrite/polyclpoly.lht: excess clearing into the corner of the outer poly; move the line a bit and it tends to disappear ml=3493 [report: gpaubert]
	- BUG: bug_files/Poly_rewrite/phatch.lht: maybe {m d t} and PolyHatch(0, c) -> poly offseting bug on sharp corners ml=4159 [report: Majenko]
	- BUG: bug_files/Poly_rewrite/intersect.* (thin hair gerber bug) [report: cuvoodoo]
	- BUG: bug_files/line-arc-del-assert.rp load layout, delete right most vertical, line, poly validity assert ensues [report: Erich]
	- BUG: bug_files/line-arc-del-assert.rp load layout, delete bottom most horizontal line, note strange clipping that shorts across adjacent arc [report: Erich]
	- BUG: bug_files/line-arc-del-assert.rp load layout, delete bottom most arc, note strange clipping that across where arc used to be [report: Erich]
	- BUG: bug_files/TODO/derive.rp, edit pstk proto, add mask shape, derive -> derived polygon is broken (invalid coords) [report: Scott]
		-> happens because of colinear neighbor edges becoming redundant points in a subsequent iteration
		-> simpler test file: bug_files/Poly_rewrite/offs1.rp, line 211, two vetices on the bottom side of the triangle
		-> simpler reprodtion: just grow the coper shape by 10 mil
		-> fix: in rnd_polo_offs() remove all redudnant vertices and subsequent vertices with the same norm in a loop before the main loop
		-> this in turn needs rnd_polo_offs() to modify num_pts, which should be a pointer maybe
	- at the end of the full rewrite, remove /local/pcb/want_polybool and PCB_WANT_POLYBOOL (from scconfig and config.h too!)
- FEATURE: "thermal recipe" so a padstack thermal can be put in a padstack or subc and it is changed with the layer binding [report: jg]
- FEATURE: netlist2: bug_files/ratside.txt optional rats constraints [report: Vuokko]
- FEATURE: openems mesher: do not ignore padstack copper [report: Evan]
- FEATURE: netlist import's ElementList(): [report: aron]
	- postpone actions, present a list of changes only to the user (GUI)
	- each item of the list should contain the corresponding actions to make the change
	- the user can execute these items one by one
- CLEANUP: move pcb_pixmaps into the board struct, board free should free it, and it should call rnd_render->pixmap_free()
- CLEANUP: padstack bbox:
	- per layer: keep a bbox per transformed shape per prototype, then getting the bbox of a padstack ref on a specific layer is looking up the shape, then 4 integer additions [report: Wojciech]
	- when calculating overall padstack bbox, ignore layers that are not present? but then a layer change would require a recalc (but this is true for subcs too!) [report: Wojciech]
- FEATURE: depth controlled mech layers (routed) for internal cavities: http://www.saturnelectronics.com/products_capabilities/internal-cavity_boards.html -> user script, similar to on_every_layer: convert lines into bbvia slot padstacks; only when we already export bbvia in excellon; alternative: layer attribute on mech layers
- XOR rendering upgrade:
		- experiment with 'emboss' kind of drawing instead of xor so rendering can stay 'direct'
		- if worked: allow padstack xor draw to draw all shapes on all layers
- CLEANUP: layer group rewrite: remove PCB_MAX_LAYERGRP and PCB_MAX_LAYER and make them dynamic - use libualloc stack with reasonable page size and local var first page
	- make pcb_layervis_save_stack() reentrant by letting the caller allocate the save buffer
- CLEANUP: reduce: get rid of autorouter/vector.[ch]

4. Low prio ===============================================================================
- BUG: elliptic: gtk2_gl: RTT/arc_sizes.lht - elliptical arc corner case render bug [report: Wed]
- BUG: elliptic: RTT/arc_sizes.lht - unable to move arcs which have different width and height [report: Ade] - rewrite pcb_is_point_on_arc() elliptical case at the bottom
- BUG: if foo() v0 exists in ~/.pcb-rnd/footprint and foo() v1 exists in ~/pcblib the tree view in the left paane of {w l} will load foo() v0 in ~/.pcb-rnd even if foo() v1 under ~/pcblib is being selected in the GUI with a mouse click. GUI selection fail.  [report: Erich] 
- FEATURE: DRC should warn for thin poly hair
- FEATURE: scconfig: menuconfig and a config file for scconfig: requires a more declarative dependency handling system -> being done in scconfig2
