What's Changed
- Autosave: failures are shown, and a crash is recovered at the first relaunch by @tanish2k09 in #2670
- A panic in the interface saves the work and reports it (E4) by @tanish2k09 in #2671
- Add a security policy (E33) by @tanish2k09 in #2672
- DWG reader and writer run in a child process (E7) by @tanish2k09 in #2673
- constraints: find the next default parameter name in one pass by @dylanmtaylor in #2674
- Regions: bound the work of renesting loops after a boolean by @dylanmtaylor in #2680
- Extents: measure each block definition once per bulk extents pass by @dylanmtaylor in #2681
- constraints: share geometry preparation across an operation and budget spline rebuilds by @dylanmtaylor in #2677
- Autosave: keep every folder's lock, and don't let a failure hide or wait by @tanish2k09 in #2676
- Multilines: find each segment's usable neighbour direction in linear time by @dylanmtaylor in #2679
- DXF: read up to 100 million group codes, or a set limit, without running out of memory silently (#1976) by @tanish2k09 in #2683
- DXF: raise the group-code limit so large DWGs open (#1948) by @MrBeeboh in #1976
- constraints: evaluate a named expression without copying its text by @dylanmtaylor in #2675
- fonts: scan the Android and HarmonyOS system font directories by @qinshah in #2650
- Dynamic blocks: index kept objects once per listing; copy each value record once by @dylanmtaylor in #2678
- EXTEND: a polyline's arc end segment runs on round its circle by @Tyler-Chiriboga in #2656
- fix(io): a solid HATCH keeps its angle, scale and double flag by @euthiferreira in #2665
- FIND: a Find and Replace window, not only the command line by @r4x2t7 in #2607
- EXPLODE: a block reference with different X and Y scales gives ellipses, not circles by @Tyler-Chiriboga in #2649
- Round-trip harness and corpus report: open, save, reopen and compare (#1937, E12) by @tanish2k09 in #2685
- io: open → save → reopen round-trip harness with loss report, cadcraft-cli roundtrip, cargo xtask corpus (FF5) by @francescoBV in #1937
- fix(engine): merge another drawing's tables and blocks in linear time by @dylanmtaylor in #2689
- i18n(sv): translate 20 new strings by @kler in #2695
- MINSERT: a block reference repeated in rows and columns, as AutoCAD does by @2ez4gcx in #2698
- Drop missing files from the recent list when opening them fails by @Silvertree2010 in #2706
- fix(io): DXF import looks up linetype, style and entity layer names in a set by @dylanmtaylor in #2707
- fix(engine): look names up in an index in AUDIT, layer-state restore and CAL by @dylanmtaylor in #2712
- fix(io): an ACAD_TABLE with no rows or no columns reads as an empty table by @dylanmtaylor in #2708
- fix(io): sort each space once when a DXF has several SORTENTSTABLEs for it by @dylanmtaylor in #2709
- fix(engine): autosave files are owner-only and lock files are never written through a link by @dylanmtaylor in #2717
- fix(render): charge every block entry, index attribute definitions, and walk dashes and outlines in linear time by @dylanmtaylor in #2724
- Raster images drawn on screen and in PNG output (#2505) by @tanish2k09 in #2749
- Raster images are drawn on screen and in PNG output, sharp at any zoom by @wovadi in #2505
- View twist: DVIEW, twisted views, tiles and layout viewports (#1230, #2022) by @tanish2k09 in #2748
- View twist: DVIEW, twisted model views, tiles and layout viewports by @mattlafy in #1230
- A layout viewport keeps its view twist through DXF and DWG (part of #1316) by @ATARYS-LAB in #2022
- SHX fonts, big fonts and unifonts; linetype shapes (#1944) by @tanish2k09 in #2751
- fonts: read SHX shape fonts, big fonts and unifonts; draw linetype shapes (FF8, FF9) by @francescoBV in #1944
- XCLIP and XCLIPFRAME; invert flag as AutoCAD's group 290 (#2354) by @tanish2k09 in #2756
- blocks: XCLIP and XCLIPFRAME, clipped block and xref references kept through DXF and DWG by @francescoBV in #2354
- Pass the Linux signing key to the release workflow by @dylanmtaylor in #2798
- fix(doc): a rotated MINSERT array's extents reach its side copies by @tanish2k09 in #2795
- New and redrawn icons (drawn in code); clicks on painted controls keep the keyboard with the drawing by @luminatiguy in #2319
- Land #2316: Hebrew SHX fonts, font-change redraw, user font folders (fonts crate) by @tanish2k09 in #2803
- SHX fonts and big fonts for text, Hebrew SHX, non-zero glyph fill by @luminatiguy in #2316
- fix(ui): About credits tables fit without side-scrolling and their columns resize by @FredApps in #2747
- feat(web): page host mode, so a page can host CADCraft in its own document (#2178) by @helenkwok in #2180
- fix(mcp): render takes a background and a plot style (#803) by @ZIDAN44 in #2818
- Land #1031: Latin accents in the CADCraft Stroke font by @tanish2k09 in #2831
- fonts: read user SHX text fonts and keep Latin accents single-stroke by @leonardopbatista in #1031
- Land #1971 and #2016: Georgian font and Georgian interface language by @tanish2k09 in #2833
- Fonts: draw Georgian with craft-fonts' Noto Sans Georgian, on the desktop and the web by @devius in #1971
- i18n: add Georgian (ka) interface language by @devius in #2016
- build: drop three egui patches nothing uses by @tanish2k09 in #2835
- Stage 1 stack: land #2584, #1626, #2028, #2107, #2471, #1026, #2612, #2545, #2658 by @tanish2k09 in #2837
- Menus list their items in the reference menu tree's order by @assamaral in #2658
- fix(dxf): hostile-input hardening in the DXF reader and writer (fixes #1025) by @vangel76 in #1026
- Open a drawing on the view it was saved at by @Hamza0101 in #1626
- Keep a landscape media's size order and rotation when saving DXF/DWG by @ffishman in #2028
- DXF read: number viewports in file order when every id is unknown (#1463) by @assamaral in #2107
- DWG save: read kept objects as their own version, and give proxies their own class by @ffishman in #2471
- BREAK and TRIM keep the object's handle, as AutoCAD does by @2ez4gcx in #2545
- HATCH and LWPOLYLINE in a tilted plane are read as seen from above (#1886) by @aldozar in #2584
- Properties edits leave objects on locked layers alone and say how many by @Slopapalooza in #2612
- Stage 1 stack 2: land #2587, #2585, #2608 by @tanish2k09 in #2842
- Plot: choose the output format from the path extension (fixes #2556) by @SBaksa in #2585
- OLE2FRAME: draw its frame outline; a DWG save no longer lists it as left out (fixes #2422) by @SBaksa in #2587
- TEXTEDIT: an Edit Text window on the shortcut menu by @r4x2t7 in #2608
- Copy the shared house rules into AGENTS.md by @FredApps in #2850
New Contributors
- @qinshah made their first contribution in #2650
- @euthiferreira made their first contribution in #2665
- @r4x2t7 made their first contribution in #2607
- @francescoBV made their first contribution in #1937
- @wovadi made their first contribution in #2505
- @luminatiguy made their first contribution in #2319
- @FredApps made their first contribution in #2747
- @helenkwok made their first contribution in #2180
- @devius made their first contribution in #1971
Full Changelog: v0.17.1...v0.18.0