pcb-rnd 3.1.1 (r37572) ~~~~~~~~~~~~~~~~~~~~~~ [asm] -Fix: ignore subcircuits of extended objects [cam] -Fix: doc_png exports bottom side with flip_y enabled for proper layer ordering -Add: doc_eps job to export colored top and bottom in eps for documentation purposes -Add: doc_ps job, similar to doc_png and doc_eps -Add: doc_ps draws copper faded and silk solid for readability -Add: cam job for Advanced Circuits, as reported by Bdale [ch_endpoint] -Fix: remove endpoint indications (on first subsequent redraw) when tool is switched to a non-indicating one [core] -Fix: pixmap transformation: avoid sign swap in rotation -Fix: scale pixmaps before rotation to keep their aspect if it's not 1.000 -Fix: find.c vs. disjoint padstacks: set all-copper-conn'd for multi-copper padstacks only if the hole that connects them are plated -Fix: find.c vs. disjoint padstacks: don't require plated hole for the single-copper (smd) case -Fix: find.c: skip checking bloated up pstk against polygon for isc if clearance is larger than bloat and there's no thermal connecting them (works around line approximation false positive isc) -Fix: find.c: switch over from geometric rat-end connection find to (more precise) anchor based when rat anchors are avaliable; this means the rat line is connected only to the two objects it was mapped for; fixes the bug when two nointconn lines touch at endpoint from where a rat also starts and by geometry the rat shorts to two nointconn lines making an internal connection against the user's will -Fix: typo: check if rat rtree exists (not padstack rtree) before looking into the rat rtree -Fix: when removing a layer, all layers are renumbered; shift the thermal bits (indexed by layer index) in each padstack so thermals remain on the same layer after the re-indexing -Fix: allow idpath data address of buffer#n to end in / -Fix: idpath data address lookup: boundary check on the buffer array -Fix: pcb_idpath2obj_in() should be able to return object from buffer if the path refers to a buffer; provide an _only() variant that excludes the buffer -Fix: draw code used the wrong field for applying gui xform, causing conditional jump on uninitialized value -Fix: when converting string to thermal bits, accept NULL as empty string -Add: initialize new conf node rc.path.dotdir so users can refer to their own config easier -Add: hid_cam: support for global opt flip_x and flip_y so that bottom side layer order can be rendered correctly -Add: low level cam support for force_nonepty (creates output file even if layer group is empty, overriding the export plugins normal decision, in case the plugin cooperates) [dialogs] -Fix: reapply filter after a refresh to avoid gui inconsistency between the filter entry and the tree displayed -Fix: library window: refresh button shouldn't crash when filter entry is empty -Fix: library window on parametric edit: when the parametric footprint fails to produce a valid help text, don't override the filter with NULL string (causes segf) -Fix: typo in load file name filter name (should be rp, not rs) -Fix: Save() syntax should mention the extra, optional path argument where it is available -Add: library window: refine filter text tooltip: mention regex and case-insensitive -Add: padstack dialog instance tab displays logical layer id (for reference and to ease debugging) -Add: open dialog: file name filtering widget when opening a board [doc] -Add: gtk4 and sch-rnd formats in datasheet -Add: document new openscad export features -Add: mention gmail is not supported -Add: link in route-rnd -Add: FAQ item about high DPI screen icon_scale -Add: document cam's global option flip_x and flip_y and force_nonempty option -Add: sch-rnd on the bridges drawing and Ringdove listing -Add: install resources/ when installing doc -Update: conf tree docs generated with the centralzied tool (removing excess pcb-rnd from titles) -Update: dotdir node in conf tree doc -Update: user manual: prefer sch-rnd over gschem -Update: use nlnet logo for the link [export_bom] -Fix: ignore subcircuits of extended objects [export_fidocadj] -Fix: ignore subcircuits of extended objects [export_gerber] -Add: let cam override "layer group is empty" decision [export_ipdcd356] -Fix: ignore subcircuits of extended objects [export_oldconn] -Fix: ignore subcircuits of extended objects [export_openscad] -Fix: don't hardwire pcb_ prefix in generated scad script, read it from a global var so later it can be changed -Add: export option 'prefix' to change module names to allow multiple exports to be used in a single large project -Add: do not hardwire board thickness 1.6mm but use the standard thickness query between top and bottom copper -Add: support for openscad-origin (object attribute) to set 0;0 of the board on the x;y plane [export_ps] -Fix: restore config after the export so that forced conf sets (like flips) are reverted -Add: set librnd's ps_faded before rendering a layer, depending on xform->layer_faded -Add: let cam override "layer group is empty" decision in both ps end eps -Add: --enable-flip in eps to respect flip_x and flip_y [export_stl] -Fix: ignore subcircuits of extended objects -Fix: initialize triangulation pool large enough to host cutout coords as well -Fix: use rtree search for cutout objects so that ones from subcircuits are picked up as well -Fix: remove temporary cutout polygons before uninitializing the cutout poly vector -Fix: separate export options into per format arrays so file names and other settings are remembered separately when exporting from the GUI [export_xy] -Fix: ignore subcircuits of extended objects -Fix: get the format enum initialized when called from the export() action -Add: make enum values (format template names) available for --help [exprot_png] -Fix: don't override onsolder-rendering in cam mode, let the cam rule decide [footprint] -Add: openscad: 1008, 1210, 1806, 1825, 2706 SMD model -Add: openscad: SOT143, SOT223, SOT25, SOT26, SOT323, SOT232D SMD model -Add: openscad: SOT325, SOT325, SOT23, SOT89, SC90, SOD110, SOD80, SOD87 SMD model -Add: openscad: SC70_3 uses SOT323 package model -Add: openscad: SC70-4 3D model -Add: openscad: SOD80 3D model compatible with minimelf -Add: openscad: SOD106A, MPAK 3D model -Add: openscad: 3 and 5 mm LEDs, TO92, TO39(-3), TO18, OSC14_8 -Add: openscad: HC49*, HC51, TO220*, TO126, TO251, TO247, TO264 -Add: openscad: MULTIWATT*, HEPTAWATT, PENTAWATT -Add: openscad: 3D model for 6x6 mm tactile switch -Add: openscad: BNC, DC power jack, DSUB connectors [menu] -Add: hotkey {f f s} for import (fetch) schematics [oldactions] -Fix: ignore subcircuits of extended objects when listing rotations [propedit] -Fix: relative set on geo fields is not mistaken for absolute set -Add: pressing enter in the value input of the "new attribute" dialog should be the same as clicking on ok -Add: propset(rename/a/oldname, newname) renames the attribute (in an undoable way) keeping its value [query] -Fix: query() action syntax includes the optional scope argument [renumber] -Fix: ignore subcircuits of extended objects [tests] -Fix: filter out pup soft uninit warning to reduce noise -Fix: strflags: wront printf format for unsigned long int in hex -Fix: uniq_name: wrong array index integer width for printf %d -Fix: cam refs: 0 is written as 0.000 in current code -Add: test board for different disjoint padstack-padstack touches for find.c [tool_std] -Fix: arrow tool timer drops current click timing if the board got unloaded (or switched) meanwhile, to avoid operating on invalid or background board pcb-rnd 3.1.0 (r37222) ~~~~~~~~~~~~~~~~~~~~~~ [asm] -Cleanup: rename row[] to cell[] (tree code naming convention) [build] -Cleanup: missing #include (exposed by hid.h not always included) -Cleanup: simplify util Makefiles using vars defined in librnd.mak -Fix: use detected CFLAGS for compiling utils and tests -Change: switch over to librnd4 installation [cam] -Fix: pass on action design as the design-to-be-exported from the cam action (the code doesn't rely on PCB anymore) [core] -Del: remove 'reverted' parameter of pcb_board_replaced() - long unused, incompatible with the GUI moved out to librnd -Del: config node rc/have_regex: was hardwired 1 for many many years because of genregex -Fix: do not export heavy terminal marking (overlay) when when export is done from the GUI -Fix: netlist: do not make 0-sized allocation on subnet mapping -Fix: crosshair shouldn't register new tools before the GUI is up -Fix: respect render-above/render-below setting of the GFX object when searching overlapping objects by location -Fix: gfx rotate operations should generate new pixel content -Fix: mark the drc flag "omit from list" in flag_str so that the propedit gets to display exportsel which shares the same bit -Fix: inhibit menu merges while creating a new board so there's no invalid menu handling by a menu update between the old board already free'd and the new board not yet created -Fix: do notdraw pixmap 'X' on missing pxm render if target is an exporter, not a GUI (at the moment the default should be that we are not exporting pixmaps) -Change: switch over to librnd's font -Change: mark conf setting editor.beep_when_finished obsolete [dialogs] -Del: preferences dialog, library tab: no need to free tree-table cells, librnd4 will do that -Fix: use the right config node path for setting CLI history size in preferences general tab -Fix: set expose context ->design before calling main expose -Fix: generic view dialog should activate global flip on preview so that the views follow board flips -Fix: preferences lib tab: memleak on excess strdup() for 'path expanded' label -Fix: preferences dialog, library tab: used the wrong context pointer in the help button implementation -Fix: uninitialized variable caused save-as format options showing up randomly -Fix: strdup() cell value for cell modification, librnd4 API requires that [doc] -Fix: list menu keys for all plugins as well -Fix: pass on LIBRND_LIBDIR to datasheet.sh when run from Makefile to avoid error on gnuism -Update: menu key list: new format, list all plugins, include source -Update: key tree svg and txt -Add: wishlist items (2023-01 wishlist thread) [export_c_draw] -Fix: don't use global design when it is available from argument -Fix: set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_debug] -Fix: don't use global design when it is available from argument -Del: don't define set_crosshair, use hid_nogui fallback [export_dxf] -Fix: don't use global design when it is available from argument -Del: don't define set_crosshair, use hid_nogui fallback [export_excellon] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_gerber] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_oldconn] -Del: don't beep when finishing the export [export_openems] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_openscad] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_png] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_ps] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose [export_svg] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose [find.c] -Fix: gfx object should return explicit "no intersection" instead of assert so an accidental {c f} over a pixmap won't cause problems [footprint] -Fix: parametric common: do not generate square pad smaller than 4 nanometer to avoid polygon corner cases -Fix: parametric common: minimum thickness for smd pads so there's no invalid poly -Fix: common_subc: subc_proto_create_pad_rect() passed the wrong argument to paste and mask offset calculator -Fix: common_subc: subc_proto_create_pad_rect() called the wrong function for mask offset calculation (so it used paste defaults when mask was not specified) -Fix: common_subc: if paste/mask ratio is empty string, don't use it as a value but fall back on defaults [gsch2pcb-rnd] -Add: set up exec prefix [import_sch2] -Fix: don't crash in path resolver when there's no design path [io_hyp] -Cleanup: decide what to do with parser debug, remove hint on unsupported action arg [librnd4] -Update: follow librnd4 API changes [millpath] -Fix: don't call text object decompose with NULL transformation in toolpath calculation, that'd lead to a segfault [oldaction] -Del: Bell() doesn't beep but throws an error [query] -Fix: net_len shouldn't crash on boards without any padstack (don't search NULL padstack tree) [report] -Fix: allow net length (hotkey: {n l o}) searches originating from subc parts (e.g. a terminal) as a fallback [tests] -Fix: propedit test needs to use locally defined ASSERT(), can't depend on assert() being accessible (it's turned off in production) [tool_std] -Del: rat line draw doesn't beep when object clicked is not a terminal (this beep was really a no-op in many cases) -Fix: allow GFX (pixmap) objects to be locked/unlocked by the lock tool [util] -Fix: bxl2txt needs to have an extra -I calculated for librnd4 -Fix: bxl2txt: use the CFLAGS as detected (-O3 and -DNDEBUG for production) -Del: deblist.sh - not used by anything anymore -Del: devhelper's 404.sh: it's enough to keep one copy in librnd -Del: chglog scripts - use the one in librnd -Del: include, comment and copyright source crawler scripts - use the one in librnd -Del: rename scripts - use the ones in librnd -Del: "TODO grep" scripts - use the one in librnd -Del: local implementation of awk_on_formats - use librnd's -Move: html dialogs generator from doc to util to be shared with other apps later -Cleanup: list_dialogs doesn't get dialogs exrta from a file but from a shell var to make the system more modular and easier to reuse