mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-10 22:24:13 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 124a889be3 | |||
| 7f6753696b |
@@ -0,0 +1,210 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user