Releases: Autonomy-Logic/openplc-editor
OpenPLC Editor v4.2.2
What's Changed
- feat(compile): embed JSON→ST transpiler, retire xml2st binary by @dcoutinho1328 in #843
- chore(transpiler): prune dead code from Phase 2 cleanup by @dcoutinho1328 in #851
- fix(alias): repair alias↔location architecture (v4.2.0 forum bugs) by @thiagoralves in #850
- feat(versioning): shared app version + per-app product name by @JoaoGSP in #852
- feat(transpiler): build-time toggle, ship with legacy xml2st by @dcoutinho1328 in #853
- fix(transpiler): resolve polymorphic TO_ conversions in JSON→ST emitter by @thiagoralves in #854
- chore(release): bump version to 4.2.2 by @thiagoralves in #855
- Release v4.2.2 — alias-architecture rollup + transpiler toggle by @thiagoralves in #856
- ci(release): pin Windows runners to windows-2025 (VS 2026 maxBuffer bug) by @thiagoralves in #857
- ci(release): pin Windows runners to windows-2022 (the previous pin to windows-2025 didn't help) by @thiagoralves in #858
Full Changelog: v4.2.1...v4.2.2
OpenPLC Editor v4.2.1
What's Changed
- fix(menu): wire File → Open's picker result through to handleOpenProjectResponse by @thiagoralves in #846
- Release v4.2.1 — File → Open menu fix by @thiagoralves in #847
Full Changelog: v4.2.0...v4.2.1
OpenPLC Editor v4.2.0
What's Changed
- feat: add live debug inline values for ST/IL editor by @thiagoralves in #639
- Fix C/C++ blocks: allow duplicate I/O names by scoping generated macros by @MatthewReed303 in #641
- fix: resolve FBD editor infinite render loop causing high CPU by @thiagoralves in #651
- migrate(step-2): shared domain constants and pure utilities by @dcoutinho1328 in #655
- migrate(step-3): ThemePort adapter implementation by @dcoutinho1328 in #656
- migrate(step-4): SystemPort adapter implementation by @dcoutinho1328 in #657
- migrate(step-5): WindowPort adapter implementation by @dcoutinho1328 in #658
- migrate(step-6): AcceleratorPort adapter implementation by @dcoutinho1328 in #659
- migrate(step-7): DevicePort adapter implementation by @dcoutinho1328 in #660
- migrate(step-8): ProjectPort adapter implementation by @dcoutinho1328 in #661
- migrate(step-9): CompilerPort adapter implementation by @dcoutinho1328 in #662
- migrate(step-10): RuntimePort adapter implementation by @dcoutinho1328 in #663
- migrate(step-11): DebuggerPort adapter implementation by @dcoutinho1328 in #664
- migrate(step-12): SimulatorPort adapter implementation by @dcoutinho1328 in #665
- migrate(step-13): UI state slices by @dcoutinho1328 in #666
- migrate(step-14): Data state slices (Project, File, Library, Console, Shared) by @dcoutinho1328 in #667
- migrate(step-15): Visual editor slices (FBDFlow, LadderFlow) by @dcoutinho1328 in #668
- migrate(step-16): Platform state slices (Device, History, web-only) by @dcoutinho1328 in #669
- migrate(step-17): Shared resources (styles, assets, locales, declarations) by @dcoutinho1328 in #670
- migrate(step-18): Atoms batch 1 — shared identical components by @dcoutinho1328 in #671
- reorganize: plan three-layer architecture (frontend/middleware/backend) by @dcoutinho1328 in #672
- migrate(step-19): restructure src2/ into three-layer architecture by @dcoutinho1328 in #673
- migrate(step-20): extract application logic from stores into backend/shared/ by @dcoutinho1328 in #674
- migrate(step-21): update comparison script for all byte-identical surfaces by @dcoutinho1328 in #675
- migrate(step-22): reconcile simple divergent atoms by @dcoutinho1328 in #676
- migrate(step-22b): graphical editor divergent atoms by @dcoutinho1328 in #678
- migrate(step-23): shared identical molecule components by @dcoutinho1328 in #680
- migrate(step-24): divergent molecule components by @dcoutinho1328 in #682
- migrate(step-24b): graphical-editor divergent molecules by @dcoutinho1328 in #683
- fix: recompute debug inline positions when editor mounts during active debug by @thiagoralves in #684
- migrate(step-25): shared organism components by @dcoutinho1328 in #685
- migrate(step-26): platform-specific organism components by @dcoutinho1328 in #687
- migrate(step-27): shared feature components by @dcoutinho1328 in #688
- Fix debugger polling to fetch only visible variables by @MatthewReed303 in #646
- migrate(step-28): platform-specific feature components by @dcoutinho1328 in #690
- migrate(step-29): templates, screens, and runtime polling hook by @dcoutinho1328 in #692
- migrate(step-30): hooks, services, utilities, and simulator facade by @dcoutinho1328 in #693
- migrate(step-31): app shell and routing by @dcoutinho1328 in #694
- feat: add EtherCAT SDO/CoE support and device configuration UI by @marconetsf in #704
- Fix/step 31 final adjustments by @dcoutinho1328 in #697
- refactor: move AI completion logic to web-exclusive middleware by @dcoutinho1328 in #708
- feat: unified frontend serialization — save single file & frontend-only parsing by @thiagoralves in #710
- fix: compilation plugin configs + device board persistence by @thiagoralves in #711
- fix: compilation, debugger, resource editor, and lint-staged by @thiagoralves in #712
- Cleanup/remove src old by @dcoutinho1328 in #709
- fix: upgrade arduino-cli from 1.3.1 to 1.4.1 to resolve ESP32 downloa… by @thiagoralves in #716
- refactor: enforce architecture layer boundaries and relocate misplaced utils by @dcoutinho1328 in #717
- refactor: move shared PLC types to backend/shared, delete dead code by @dcoutinho1328 in #724
- refactor: shared UI migration (ports & adapters architecture) by @dcoutinho1328 in #654
- ci: add cross-repo surface sync check by @dcoutinho1328 in #725
- feat: version control port and open-project fix by @dcoutinho1328 in #728
- fix: render web menu on Windows instead of hidden native menu by @dcoutinho1328 in #727
- chore(docs): rewrite CLAUDE.md, archive outdated docs, update README by @dcoutinho1328 in #729
- refactor: simplify title bar capabilities into isNativeApplication by @dcoutinho1328 in #733
- ci: consolidate workflow pipeline with dependency chain by @dcoutinho1328 in #734
- feat: EtherCAT ESI support by @marconetsf in #731
- refactor(ai): sync shared surfaces for AI chat enhancements by @dcoutinho1328 in #732
- refactor(ethercat): extract concrete EthercatConfig / EtherCATMasterConfig types by @marconetsf in #737
- sync(ai): mirror web AI feature improvements (paired PR for DOPE #375) by @JoaoGSP in #739
- feat: version control by @JulioSergioFS in #742
- fix(workspace): prevent AI chat panel from overflowing viewport by @JoaoGSP in #743
- fix(opcua): align UI with design system by @marconetsf in #744
- fix(explorer): show Servers branch on platforms without local serial ports by @marconetsf in #746
- sync(ethercat): mirror openplc-web feat/ethercat-web-adapter by @marconetsf in #741
- feat(ai): port shared chat-history persistence + UX fixes from openplc-web by @JoaoGSP in #747
- sync(ai): mirror conversation lifecycle telemetry event names from openplc-web by @JoaoGSP in #753
- feat(library-manager): library system + downstream debugger / data-type / save fixes by @thiagoralves in #755
- feat(libraries): Library Projects — create, build, install, consume by @thiagoralves in #757
- feat(vpp): backplane editor + per-slot module config by @thiagoralves in #758
- sync(ladder): handle branches with nested parallels by @thiagoralves in #756
- fix(ethercat): prevent slave name collisions across masters [DOPE-281] by @marconetsf in #754
- feat(alias): variables bind to producer-declared aliases with target-scoped allocation by @thiago...
OpenPLC Editor v4.1.4
Release date
Feb 27, 2026
What's Changed
New Features
✅ Array variable support for C/C++ and Python function blocks
✅ Real-time non-BOOL value display on FBD and Ladder diagrams with debug badges on block outputs
✅ Simulator stubs for hardware-dependent function blocks (Python FBs and server/remote-device creation)
Enhancements
✅ Debugger array visualization with expandable per-element nodes for program-level and FB-nested arrays
✅ Array type option available in C++/Python variable tables with filtered base types for native languages
Bug Fixes
✅ Fixed array stride mismatch in generated code that caused garbage values when C/Python code accessed array elements
✅ Fixed ARRAY OF STRING struct format encoding for Python shared memory serialization
✅ Fixed string output packing capturing length after padding instead of actual string length
✅ Fixed external array variables using wrong debug path prefix in debugger
✅ Fixed missing #pragma pack(pop) for output struct in Python ST code generation
✅ Fixed FB instance variable polling using correct program name and instance path
✅ Resolved three debugger issues with simulator endianness, FBD visualization, and forced variable polling
Full Changelog: v4.1.3...v4.1.4
OpenPLC Editor v4.1.3
Release date
Feb 25, 2026
What's Changed
New Features
✅ OpenPLC Simulator - Full simulator with unified Start/Stop flow that builds, simulates, and debugs in one click
✅ Array variable elements support in Ladder and FBD graphical editors
✅ Arduino Uno Q board support
✅ Remote device IO aliases in variables table location dropdown
✅ Persist theme preference across sessions
Enhancements
✅ Increased debugger polling rate and reduced RTU frame timeout
✅ Proportional chart labels and active state indicator in debugger UI
✅ Debugger diagram time range extended up to 10 minutes
✅ Full time range shown on chart x-axis with improved dark mode button contrast
✅ Improved debugger variable cleanup and chart stability
✅ Renaming of servers and remote devices in project tree
✅ Bumped matiec to v4.0.9 and xml2st to v4.0.3
Bug Fixes
✅ Fixed simulator USART deadlock and expanded SRAM to 63KB
✅ Fixed serial debugger spurious values from concurrent polling bugs
✅ Fixed extensible block input names and types
✅ Added UDP input to TCP_CONNECT communication block
✅ Fixed FB instance autocomplete failing after project reload
✅ Improved debug forcing for coils, contacts, and variables
✅ Fixed force display consistency between LD and FBD editors
✅ Display global variable values consistently across all programs
✅ Show online debug values for structured data types and FB instances
✅ Fixed ESP32-C3 USB debug
✅ Fixed menu dismissal on Windows when connected to runtime
✅ Resolved double scrollbar issue in OPC-UA Address Space tab
✅ Transfer documentation when selecting external variable from globals
✅ Show "Modbus" instead of "Modbus/TCP" in remote device creation label
✅ Mark Resource as unsaved on rearrange and table cell edits
✅ Check binary existence per-tool before skipping download
Full Changelog: v4.1.2...v4.1.3
OpenPLC Editor v4.1.2
Release date
Jan 30, 2026
What's Changed
New Features
✅ OPC-UA Server Configuration - Full OPC-UA server setup with address space, security profiles, certificates, and user management
✅ Siemens S7Comm Server Configuration - Support for S7 protocol communication
✅ Modbus RTU support for remote devices (master mode)
✅ Slave ID support for Modbus TCP remote devices
✅ Automated release workflow with CI/CD pipeline
Enhancements
✅ Improved Console and PLC Logs with filtering and expandable UI
✅ Debugger polling batch processing for better performance
✅ Native USB support for ESP32-S2/S3 debugging
✅ Runtime polling consolidation with connection loss detection
Bug Fixes
✅ FBD continuation autocomplete now selects correct item when clicked
✅ Global variables code preserved when switching tabs
✅ FBD variable node types included in rename propagation
✅ Monaco editor errors fixed when switching to Python POUs
✅ Debug property preserved when switching variable declaration views
✅ Toast notification shown when variable creation fails in graphical editors
✅ Python LSP errors handled gracefully
✅ Custom pin names now allowed in device configuration
✅ Python blocks with no input variables now work correctly
✅ Force values enabled for non-boolean types in debugger
✅ Keyboard navigation fixed for Add Variable in Ladder editor
Full Changelog: v4.1.1...v4.1.2
v4.1.1
Release date
Jan 09, 2026
What's Changed
✅ Modbus server register configuration for runtime v4
✅ Several bug fixes
Full Changelog: v4.1.0...v4.1.1
v4.1.0
Release date
Dec 19, 2025
What's Changed
✅ Added real-time debugger
✅ Support for Python, C, and C++ Function Blocks
✅ Integration with REST API for runtime v3 and v4
✅ Several bugfixes
✅ First release out of beta
Full Changelog: v4.0.6-beta...v4.1.0
v4.0.6-beta
Release date
Sep 25, 2025
What's Changed
✅ Added full support for Arduino boards – generate, compile, and upload directly from the editor
✅ Compatible with many hardware platforms including RP2040, ESP32, ESP8266, STM32, and others
✅ Fixed multiple issues with the IEC 61131-3 text format in the Variable Table
✅ Improved update mechanism for User Function Blocks when code changes
✅ Enhanced autocomplete in Structured Text (ST) editor
Full Changelog: v4.0.5-beta...v4.0.6-beta
v4.0.5-beta
Release date
Aug 15, 2025
What's Changed
✅ User Function Blocks now update automatically when their code changes
✅ C file generation for upcoming Arduino compatibility
✅ Arduino core & library management – detects what’s installed and adds only missing components
✅ Expanded data type support for structures and arrays, including custom types and function blocks
✅ IEC 61131-3 text format for Variable Table, with option to switch between table and text view (easy copy/paste)
✅ New Device Configuration screen for selecting target platform and mapping local I/O tags
✅ Improved Structured Text (ST) syntax highlighting
✅ Numerous bug fixes across ST, FBD, and LD editors
Full Changelog: v4.0.4-beta...v4.0.5-beta