0. old, still waiting for ack

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

2. For later releases ===============================================================================
- revise release/packaging:
	- remove suggesting geda-gnetlist from the debian package
	- add suggesting sch-rnd and camv-rnd and route-rnd
	- consider a ringdove metapackage?
- FEATURE: hierarhic: subc-in-subc syntax: refdes-refdes-term? probably a bad idea
	- search for '-' and centralize parsing refdes-term id
- FEATURE: svg colorspaces: bug_files/TODO/SVG.patch (requires librnd 4.2)
- BUG: bug_files/TODO/drc1/*: {w d} false positive [report: John Wehle]
	- the main problem is: square cap bloat-line corner:
		- at B.rp 175;187 the bottom right corner cuts into the horizontal edge of the bottom poly
	- replace the current code with three checks per edge:
		- two thin-line check at edge +- offset
		- a curcle check in each corner
- DOC: pool node on how to use pixmap for breadboading
- 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?: 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
- 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
- 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: using image2footprint parametric footprint, choose 0.25mm pixel size, white silk, black soldermask, yes to dithering and yes to FR4, choose either of the vader .pngs from bug files as the image and place on layout, then change .png to other png, place on layout, and continue alternating. segfault will typically ensue after a period. backtrace included as big-subc-bt.txt [report: erich]
- 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 later:
	- FEATURE: librnd API: library window: allow long tags and long location text to split: rich text widget in librnd [report: Igor2]

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
