Files
qelectrotech-source-mirror/QET_release_notes_0.100_to_master.md
T
Laurent Trinques 124a889be3
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m56s
Add new QET_release_notes_0.100_to_master.md, thanks arummler
2026-10-10 17:43:40 +02:00

211 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# QElectroTech — Release notes: 0.100 → current master (0.200.1-dev)
*Covers the period 26 January 2026 – 9 October 2026: 2,253 commits and 669 merged pull requests. Numbers in brackets are GitHub PRs (#nnn) or bug tracker entries (bugtracker #nnn).*
---
## Highlights
- **Qt 6 is now the platform.** The Qt 6 migration is complete, Qt 5 support has been removed, and Windows, macOS, Flatpak and Snap packages are built on Qt 6 / KF6.
- **Rewritten auto-numbering.** Renumbering of existing elements, new numbering parts (alphabetic, cyclic/modulo, zero-padded formats), undo/redo for counters, global rules in the settings, and importing rules from another project.
- **Many more drawing and editing tools.** Editable resize/rotate/skew handles for shapes and pictures, an Arc tool and a fillet tool, Group/Ungroup, Align and Snap to grid, mirroring symbols, rotating groups, text-box width handles, and dropping pictures onto a sheet.
- **Productivity UI.** Command search, Ctrl+G jump to element or cell, an element picker and shortcut bar at the cursor, a context command bar, mouse gestures, repeat-last-command, configurable shortcuts, toolbars and gestures (Customise window), and paste under the cursor.
- **Wiring, BOM and PLC.** A from-to wiring list export, a PLC Manager, slave contact groups and a full contact comb, terminal potential grouping, a material list lookup, smart-device BOM metadata, a generic device wizard, and drag and drop onto terminal strips.
- **Import and export.** EPLAN Data Portal (.edz) import, PDF page import, and much better DXF export (layers, symbols as blocks with attributes). PDF export gains clickable cross-reference links and can be made reproducible.
- **Command line, scripting and AI assistants.** Headless export and verification from the command line, a JavaScript scripting API (off by default), script buttons and a script manager, a macro recorder, and an MCP server (`qet-mcp`) with a "live mode" so an AI assistant can work on an open project.
- **Dark themes and icons.** All toolbar and menu icons are now SVG, there are "qet" and "qet-dark" icon themes, an optional dark folio canvas, and many dark-theme fixes.
- **English is the source language.** The interface text is now written in English (previously French), "folio" is renamed "sheet" in the English UI, and Korean has been added as a new language.
- **Stability.** A large number of crash, use-after-free and memory-leak fixes, rotating crash-recovery snapshots, a hardened crash reporter, diagnostic logging, and reproducible project saving.
---
## New features
### Auto-numbering
- Renumber elements that are already placed [#704]; a broad overhaul of the formulas for elements, conductors and sheets [#1282]
- Alphabetic numbering (a, b … z, aa, ab …) [#594]; wrap-and-carry (cyclic/modulo) numbering [#593]
- A display format (zero mask) you can set for each numbering part [#634]
- Quick reset buttons [#626]; edit the increment and preview the next number in the dock [#697, bugtracker #331]
- Undo/redo now covers auto-numbering counter changes [#645]
- Global auto-numbering rules in the application settings, applied to new projects [#924]
- Reuse the numbering rules from another project [#851]
### Drawing, shapes, pictures and text
- Editable resize, rotate and skew handles for shapes and pictures, plus picture transparency and faster image handling [#809, #810, #817, #1024]
- Arc tool with a handle to pull a half arc in or out [#1202, #1211]; fillet tool to round the corner between two lines [#1212]
- Group and Ungroup items on a sheet [#1074]; click a member of a selected group to select it alone [#1110]; rotate a group as one piece [#660, #1111]
- Align left/centre/right/top/middle/bottom, with icons [#1087, #1153]; Snap to grid for selected symbols, pictures, texts and shapes [#1073, #1152, #1154]
- Mirror symbols horizontally and vertically on a sheet [#1354]; an option to keep the texts of rotated symbols horizontal [#1355]
- Free texts can keep a width they wrap to, set in their properties or by dragging a corner handle [#1320, #1321, #1341, #1342]
- Drag-to-resize the width of dynamic element texts [#591, #977]; a centre rotation point for dynamic text fields [#694]
- Labels on pictures [#1068]; drop picture files onto a sheet to add them [#1416]; the crop, colours and original of a picture undo together [#1310]
- Import a PDF page as an image [#772, #811]
- Remember the last-used shape and text style for the session [#656]
- Custom guides [#509]; a finer snap grid for dragged texts [#1040]
- View > Show to hide texts, shapes and pictures [#1268, bugtracker #301]
- Sheet background colour picker with adaptive border and title block, remembered between runs [#968, #1011]; a custom application colour picker [#979]
- A permanent ID for shapes, texts, pictures and symbol parts [#1065]; lasting UUIDs for projects, sheets, symbols, wires and terminals, including those in older files [#883, #884, #1105, #1107, #1118, #1122]
### Element (symbol) editor
- Live cursor-coordinate readout [#589, #761]
- Export a symbol to SVG [#637]
- Optional alignment for static texts [#569]; `anchor="alignment"` for static texts in element files [#1404]
- Show terminal names [#536]; check terminal names when saving [#1159]
- Scale element, keeping terminals on the grid [#1378]
- An adjustable background frame [#1164]
- Mirror and flip the selection in place instead of across the origin [#813]
- The Information tab is available for Slave and Terminal types, and auto_num_locked, potential_isolating and exclude_from_bom can be edited [#721, #765, #767, #1399]
- New element type: line definition [#464]
### Sheets and navigation
- Duplicate sheets with all their metadata [#473]; undo/redo for adding, deleting and reordering sheets [#590]; insert a sheet above or below [#658]
- Paper sizes A0–A5 [#1362]
- Keep the row and column headers visible, and optionally show the cell limits across the drawing [#1038, #1048]
- Ctrl+G jumps to an element or to a sheet cell such as B13 [#586, #1036]
- Centre on cursor [#1190]; the search view scrolls to the selected hit [#706]
- Auto-select the active sheet in the elements panel tree [#443]; a newly added sheet is selected in the project tree [#805]
- The main window title shows unsaved changes (macOS modified dot) [#624]
- 3D mouse (SpaceMouse/SpacePilot) support on Linux, Windows and macOS, with speed, direction and twist-to-zoom settings [#635, #1022, #1023, #1025, #1026, #1028, #1032]
### Productivity and customisation
- Command search: type part of a command's name and press Enter [#1049]
- Element picker at the cursor (Insert) [#1052]; shortcut bar at the cursor (S), customisable in place and with pinned elements [#1053, #1054, #1060]
- A command bar beside the selection [#1055]; repeat the last drawing or placing command with Enter [#1056]; right-drag mouse gestures [#1057, #1364]
- Place elements by double-clicking in the collection, and repeat with A [#1042]; placement and sheet references in the right-click menu [#1041, #1050]
- Configurable shortcuts with a dedicated preferences page (grouped, searchable, icons, menu locations) [#587, #760, #821, #1325, #1326]
- Toolbars settings page (icon size, text with icons, lock) and a combined Customise window [#1327, #1365]
- Paste under the cursor; Ctrl+Shift+V pastes at the origin [#878, #917, #1208]; Ctrl+D duplicates with a configurable offset [#993]
- Tab cycles through the selection; select all conductors or text fields [#874]
- Keyboard accessibility: F10 opens the menu bar, the drawing tools are in a menu, and the context-menu key opens the sheet menu [#875, #876, #877]
- Save and load the configuration, in full or in part, to a file [#1166, #1410]
- Dialog sizes are remembered [#1165]; QColorDialog custom colours are kept across restarts [#918, #1370]
- Edit several wires at once in the Selection properties panel [#502, #1205]
- One-click conductor colour on the toolbar; F2 remembers the colour for the session; double-click to choose a wire colour [#888, #929, #1172]
- Paste element information from one symbol onto others [#1376]
- Element information suggests values already used in the project [#1021, bugtracker #217]
- A position-lock checkbox for elements [#803]
- The Edit menu is split into submenus [#1346]
- Settings for the folder prefixes of the user collection [#1168]
- A local tracker for the time spent on each project [#583]
### Conductors and wiring
- Auto-break conductors [#639, #700]
- Optional hops where wires cross [#1200]
- An optional limit on the number of wires per terminal, wiring terminals in a chain rather than a star [#1272, #1273]
- Wire routing around symbols (scripting/MCP) [#1245, #1256, #1258]
- Linked cross-references inherit the conductor line style [#967]
### Wiring list, BOM and reports
- A from-to wiring list built on new terminal/conductor tables in the project database, with a dialog, export, Cable column, terminal index/UUID and numeric wire order [#447, #462, #628, #629, #630, #835, #1197, #1248]
- Exclude specific elements from the BOM [#472]; options to leave junctions and contact blocks out of the parts list [#1318]
- Smart device metadata in the BOM export [#830]
- A material list (CSV) lookup for the element article fields [#1088, #1119]
- Custom SQL reports with read-only enforcement, preview and import/export [#896, #983]
### Master/slave, PLC and terminals
- PLC Manager [#562, #588, #623, #669, #703, #774, #1001]; PLC terminal names and cross-references [#766, #796]; "Hide linked elements" and "Hide full masters" filters [#858, #881]
- Slave contact groups (label transfer, terminal assignment) [#545]; a full contact comb that shows every slave defined by the master [#1010]
- Contact usage counting (NO/NC/SW breakdown, used vs. declared capacity) and an advisory slave limit [#444, #825, #826, #827, #828, #831]
- Terminal names in cross-references, with an option to hide them; terminal names shown in export [#673]
- Configurable distance between the label and the slave cross-reference [#771]; an option for stacking cross-references at the sheet bottom [#1311]
- Automatic terminal numbering tool, with letter numbering and strip selection [#449, #741]
- Terminal potential grouping [#1396]; a potential isolation option for terminals [#471]
- Drag and drop free terminals onto a terminal strip [#1199]; natural sort for terminal ordering
- Width/height/depth properties for elements [#723]; cabinet thumbnails generated from the manufacturer and reference [#1170]
- Generic device wizard: a box symbol with terminals on any side, for devices too rare to draw a symbol for [#1418]
### Templates (macros)
- A User Templates collection with its own tab [#451, #455]
### Import and export
- **EPLAN Data Portal (.edz)** parts import into element collections [#513, #555]
- **DXF:** named layers, deterministic entity order, symbols as blocks with attributes and hidden part data, slave/master cross-references, and wrapped text [#740, #750, #1075, #1076, #1079, #1324, #1350, #1351, #1352, #1353]
- **PDF:** clickable cross-reference links [#490], component info as invisible annotations [#739], and repeatable output when SOURCE_DATE_EPOCH is set [#1257, #1286, #1317]
- Folio properties automatically add a title block's custom variables [#495]
### Command line, scripting and AI assistants
- **Headless CLI:** export to PDF, PNG, SVG, DXF, cable list and wire list; info, BOM, nets, links, check-elements, resave; `--set-titleblock`; `--show-terminals` [#483, #485, #489, #493, #731, #1078]
- **JavaScript scripting API:** read, export, edit, draw, cross-reference and query a project, with UUID lookups. It is **off by default** and asks before enabling [#891, #970, #980, #984, #1098, #1106, #1114, #1125, #1219, #1264]
- Script buttons, a script manager and a macro recorder [#1220, #1221, #1227]
- **`misc/qet-mcp`:** a Model Context Protocol server over QET projects, installed with QElectroTech (and with Python offered by the Windows installer). Help → Connect an AI assistant, and live mode (ask-first, an Assistant panel, and project create/open/print/save), plus a shared house style [#969, #1128, #1136, #1137, #1138, #1222–#1225, #1228, #1265, #1266, #1312–#1316]
### Diagnostics and robustness features
- Diagnostic logging rework with rotation, a ring buffer, crash-time flush and an export UI [#646, #647]; an event-loop watchdog [#665]
- Three rotating crash-recovery snapshots [#1167]; a hardened crash reporter that keeps every dump [#905, #1181]
- A backup dialog when opening an existing project [#534]
- Project load timing in the log [#560]
- Reload element drawings to refresh placed elements [#889]
---
## Bug fixes (selection)
### Crashes and memory safety
- Use-after-free and teardown crashes: backup threads [#512], restore of backups [#711, #1031], project/diagram teardown [#789], IPC file forwarding [#868], the terminal strip dock [#1162], closing without saving [#1231], and the template editor [#1407]
- Crashes when opening a project without a sheet [#797], with an unlinked contact [#1234], or with invalid corner layout [#670]
- Element editor zoom crash [#799]; huge symbol sizes [#1232]; NaN and infinite coordinates rejected on load [#792, #996, #1161, #1194]
- Dynamic text colour [#693]; cancelling collection load [#743, #995]; templates tree on Qt 6 [#795]; online-installer Qt SQLite handle [#1046]
- Memory leaks found by AddressSanitizer and Valgrind [#515, #518, #519, #1360]; uninitialised members [#1358, #1359, #1387, #1388]
- Thread-safety fixes for data paths and the elements panel [#514, #1163]
### Saving, loading and file format
- Saving is now reproducible: deterministic element, conductor, title block and XML ordering, and a second save changes nothing [#779, #814, #844, #846, #1030, #1109]
- QDom serialization hardened against invalid data (CVE-2026-15037) [#568]
- Font descriptions are written in a version-stable format, and salvaged fonts are reported [#582, #592]
- The read-only state is cleared after Save As [#497]; Save As on Snap adds the .qet extension [#716]
- Older parts lists keep their rows [#1077]; legacy sequential attributes are read correctly [#1385, #1386]
- Wires no longer move to another symbol after saving an older project [#1417]; replacing a symbol keeps its wires [#1116]
- Text position stays stable after a font-size change [#501]; wire text rotation is preserved [#707]
### Editing and the diagram editor
- Several copy/paste fixes: broken conductors, alignment, PLC data, master/slave links and underscore labels [#746, #770, #899, #909, #910, #911, #982, #997, #1188]
- Undo stack fixes [#925, #1039, #1192]; group rotation [#921]; the first click in the element editor no longer moves elements [#520]
- Junction dots on wide conductors and on shared lines [#862, #1299]; straight wires drawn diagonally [#1127]; unnecessary bridge routing [#890]
- Duplicating sheets renews UUIDs and keeps text positions [#477, #544, #856, #895]
- Multi-line symbol text alignment [#1155, #1160, #1176, #1302, #1357]
- Cross-reference overlap and positioning fixes [#712, #1263, #1287]
### Title blocks, reports and BOM
- Title block variables: empty page-level overrides, bare %name variables, unset variables, names with a slash, and file names cut at the first dot [#572, #717, #719, #725, #989, #1121, #1140]
- The summary table is ordered by sheet [#864]; custom summary SQL is kept [#887]; queries return all their rows [#1066] and are capped [#985]
- Terminal and contact blocks appear in the parts list [#849]; the wire-name export no longer double-counts [#724]
- Sheet dates are correct in the project database [#1134]; the database is rebuilt only once per load [#840]
### UI, theming and platform
- Dark theme: element icons [#620, #695, #744, #1092], slave cross-references [#718], the search field, and imported image colours [#1349]
- Locale and translation loading: regional locales, the lang/ path, double-click on Windows, and an English fallback [#496, #498, #559]
- Windows: Unicode and long paths in collections [#524, #1243, #1244], file association without admin rights [#1149], and MS Shell Dlg fonts in PDF [#1012, #1029]
- macOS: bundle identifier and file dialogs [#829], Fusion dark palette [#894], properties dialog placement [#715], file-open events, arm64 bundle on Sequoia, and the black screen after PDF export
- Snap: libxcb-cursor crash on Ubuntu 24.04 [#517]
- Recent files menu updates during the session [#863]; cancelling the potential selector [#584]; dock layout restored on Qt 6 [#769]
### Performance
- Fixed the Qt 6 load-time regression in XmlElementCollection [#570]; removed the pugixml pass from ElementFactory [#567]
- Faster saving of projects with pictures [#1067]; the element style regex is compiled once [#841]; picture cache fixes [#842]
---
## Translations
- **New language: Korean** [#419–#431]
- **English is now the source language** of the interface [#1390]; "folio" is renamed "sheet" in the English UI [#1216]; hundreds of untranslated or broken English strings are fixed [#1124, #1261, #1389]
- Updated: German, Polish, French (with real plural forms), Brazilian Portuguese, Spanish (complete), Russian, Chinese (zh-CN), Czech, Turkish, Hungarian, Dutch (Belgium) and Catalan
- Translation suggestions for 29 phrase books [#1006]; singular/plural fixes [#938, #971]
---
## Build, packaging and infrastructure
- **Qt 6 migration completed and Qt 5 removed** [#540, #541, #546, #547, #698, #705, #709, #880]; C++20 [#1123]
- qmake `.pro`/`.pri` files removed; CMake only [#1374]
- Optional precompiled headers (`QET_ENABLE_PCH`) [#680]; builds without KF5/KF6 [#533, #557, #1086]; Qt < 6.5 [#1085]; QtPdf optional
- SQLite kept for the project database; the export can be enabled via a CMake option
- FetchContent dependencies pinned [#958]; PugiXML and GoogleTest are no longer installed [#838]; SingleApplication updated to v3.5.6
- **CI:** Linux build and unit tests [#872]; Windows build and tests [#1361, #1425]; Windows MSI with WiX and signing (SignPath); monthly nightly builds
- **Packaging:** Flatpak and Snap moved to Qt 6/KF6 (Flatpak runtime 6.11, Snap core24); the macOS arm64 bundle uses CMake; the NSIS installer is on 3.x with fonts and more installer languages; `publiccode.yml` added
- New example project: Shelly single-phase and three-phase designs
---
## Contributors
Thanks to everyone who contributed to this release, including: ispyisail, Laurent Trinques (scorpio810), Kellermorph, Andre Rummler, Beat Hangartner, Shane Ringrose, Jeff Patterson, jp2images, plc-user, Dieter Mayer, Levi Jetzer (IBSYSLevi), Magnus Hellströmer (elevatormind), ChuckNr11, Gerhard Schwanzer, saschbe, enesgursoy6110, philippeagray, Kyle-Code-CA and jkh (정광호), zi-mozhuang, jindongjie, neitri, Alfmat01, cezlom, Vinícius Santos, zakb120, pafri, geri1701, achim and joshua, and to the translators Gábor (hu), Ronny (nl-BE), Pawel (pl) and Antoni (ca).