Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
298 commits
Select commit Hold shift + click to select a range
2d10a1f
feat: generate VPP plugin config on runtime-v4 compilation
thiagoralves Apr 21, 2026
a6a97b5
feat: upload VPP plugin source with checksum for on-target build
thiagoralves Apr 21, 2026
d02b784
fix: persist vendorScreenData and emit plugin-compatible slot format
thiagoralves Apr 21, 2026
e27e9d4
refactor: remove unused fields from VPP plugin config slots
thiagoralves Apr 21, 2026
93f5faf
fix: exclude pin mapping from VPP I/O address allocation
thiagoralves Apr 21, 2026
64ba939
fix: treat VPP runtime-v4 boards as v4 for debugger and feature checks
thiagoralves Apr 21, 2026
de7f78d
fix: make dropdown scrollbar visible with many options
thiagoralves Apr 21, 2026
061853f
fix: add scroll up/down buttons to Select dropdown
thiagoralves Apr 21, 2026
dbbd530
fix: render a real scrollbar on Select dropdown Viewport
thiagoralves Apr 21, 2026
d3299c0
fix: override Radix Select's scrollbar-hiding style
thiagoralves Apr 21, 2026
c09a679
feat: editor auto-starts PLC after build with BUSY retry
thiagoralves Apr 21, 2026
6ae53c7
feat: render plugin-contributed stats on device configuration screen
thiagoralves Apr 22, 2026
e48e83d
fix: mark device config dirty when vendor screen data changes
thiagoralves Apr 22, 2026
40eff89
Merge branch 'development' into feat/vpp-package-support-v2
thiagoralves Apr 23, 2026
74d4fbf
feat: strip board list down to OpenPLC-only targets
thiagoralves Apr 23, 2026
edeaf41
fix: unify IEC address collector so VPP and EtherCAT share namespace
thiagoralves Apr 23, 2026
5605aee
refactor: drop Arduino-only Communication section from Device config
thiagoralves Apr 23, 2026
c379c7a
refactor: drop communicationConfiguration from device schema
thiagoralves Apr 23, 2026
9e866ce
refactor: expand Board Settings layout to full screen width
thiagoralves Apr 23, 2026
1dee864
refactor: move vendor-screen field help text into hover tooltip
thiagoralves Apr 23, 2026
4d1cd0e
feat(debug): editor builds the debug leaf list for STruC++
thiagoralves Apr 28, 2026
c024f29
refactor(debug): drop editor-side leaf walker; consume STruC++ map
thiagoralves Apr 29, 2026
a154ef5
fix(debug): parse TIME as int64 ns; bump strucpp to v0.4.2
thiagoralves Apr 29, 2026
9b7ac4f
chore(deps): bump strucpp to v0.4.3 for FB operator() noinline fix
thiagoralves Apr 29, 2026
30326a2
fix(modbus): snapshot indexArray in debugGetTraceList to avoid respon…
thiagoralves Apr 29, 2026
d8cc1f4
chore(deps): bump strucpp to v0.3.4 (clean baseline)
thiagoralves Apr 29, 2026
148a179
chore(deps): bump strucpp to v0.4.4 (clean baseline, marketplace-frie…
thiagoralves Apr 29, 2026
67f100d
feat(debug): render enum values by member name (and accept names on f…
thiagoralves Apr 30, 2026
ea4f52c
chore(deps): bump strucpp to v0.4.5
thiagoralves Apr 30, 2026
2d42373
Merge remote-tracking branch 'origin/development' into fix/debugger-s…
thiagoralves Apr 30, 2026
9099aff
docs(strucpp-migration): rewrite phases 5-7 around Arduino reality
thiagoralves Apr 30, 2026
63ef0ca
chore(strucpp-migration): track runtime v4 shim files
thiagoralves Apr 30, 2026
2803dcf
docs(strucpp-migration): runtime → C++; plugin worker threads; codege…
thiagoralves Apr 30, 2026
e6f2c5a
docs(strucpp-migration): anchor housekeeping on fastest IEC task; con…
thiagoralves May 1, 2026
d65065a
fix(compiler): ship STruC++ headers under strucpp_runtime/include for v4
thiagoralves May 1, 2026
9da20b8
arduino: drop MatIEC names from the Strucpp sketch
thiagoralves May 1, 2026
3322bec
arduino: replace MatIEC Baremetal/ with the STruC++ sketch
thiagoralves May 1, 2026
1a0792c
remove MatIEC dead weight: folder, binaries, gitignore stubs
thiagoralves May 1, 2026
85d1192
remove wrap-unsupported-comments — STruC++ accepts // and /* natively
thiagoralves May 1, 2026
84fb7ed
v4: emit strucpp_program_md5.h alongside generated.cpp
thiagoralves May 1, 2026
a1bf2bc
v4: emit defines.h with PROGRAM_MD5 (matches Arduino convention)
thiagoralves May 1, 2026
b14468a
debug: transport-aware batch sizes; remove sync-investigation logging
thiagoralves May 1, 2026
5f2afba
debug: drive batch size and poll cadence off the active transport
thiagoralves May 1, 2026
d828f14
fix(xml-generator): emit <string>/<wstring> regardless of source casing
thiagoralves May 1, 2026
38ee722
fix(debug): poll array elements; ancestor walk now respects [] notation
thiagoralves May 1, 2026
321dd58
debug: cover array-of-FB / array-of-struct in tree-traversal + tests
thiagoralves May 1, 2026
c0eaf25
feat(blocks): port Python/C++ POU integration to STruC++
thiagoralves May 1, 2026
896e5bb
fix(blocks): SHM struct uses raw C types; runtime force-includes iec_…
thiagoralves May 2, 2026
a85dbfe
debug: bump runtime compilation polling timeout 5 min → 20 min
thiagoralves May 2, 2026
07ca972
compiler: write each cppFiles entry instead of one generated.cpp
thiagoralves May 2, 2026
7d62f90
arduino: enable parallel compile (-j 0) for arduino-cli builds
thiagoralves May 2, 2026
7b790bf
fix(arduino): undef Arduino.h's min/max macros before strucpp headers
thiagoralves May 2, 2026
4dcef7b
feat(build): add build-options popover with clean-build support
thiagoralves May 3, 2026
cc0a68f
fix(opcua): drop initial_value from schema, types, and UI
thiagoralves May 3, 2026
0f5cf42
feat(opcua): switch from MatIEC debug.c to STruC++ debug-map.json
thiagoralves May 3, 2026
f813fc3
fix(pou-helpers): mirror STruC++ debug-table contract for FB vars
thiagoralves May 3, 2026
46c21ea
fix(opcua): drop initialValue from project-load Zod schema
thiagoralves May 3, 2026
3b40801
fix(opcua): drop unresolvable fields with warning, don't abort build
thiagoralves May 3, 2026
ebf558e
refactor(opcua): unify variable resolver with debugger's
thiagoralves May 3, 2026
1424df1
fix(opcua): resolve array base via prefix scan, not hardcoded [0]
thiagoralves May 4, 2026
cb18ebb
refactor(opcua): consume debugger's leaf-path Map instead of own scan
thiagoralves May 4, 2026
89fadf0
feat(plc-status): recognise TRANSITIONING as a valid runtime state
thiagoralves May 4, 2026
bf2fe05
feat(console): render strucpp diagnostics in gcc style
thiagoralves May 5, 2026
54f20a1
fix(c-blocks): add extern \"C\" to setup/loop declarations in c_blocks.h
thiagoralves May 5, 2026
6ffa619
feat(stats): render per-task scan cycle stats
thiagoralves May 5, 2026
15ae7bf
fix(stats+ethercat): tolerate flat stats from old runtimes; drop ethe…
thiagoralves May 5, 2026
dca1d61
feat(ethercat): emit task_priority, drop task_name/task_cycle_time_us
thiagoralves May 5, 2026
105303a
chore(ethercat): drop unused ethercat-task-helpers
thiagoralves May 5, 2026
94944f6
feat(ethercat): type new bus-cycle period and latency stats
thiagoralves May 5, 2026
e104089
feat(stats): table layout + dedicated EtherCAT stats panel
thiagoralves May 5, 2026
702b585
Merge feat/vpp-package-support-v2 into consolidate/strucpp+vpp
thiagoralves May 5, 2026
57c014b
chore: drop EtherCAT system-task migration and dead system-task plumbing
thiagoralves May 5, 2026
2e542b2
fix: hals.json — take VPP's trimmed catalog (Simulator + Runtime v3/v4)
thiagoralves May 5, 2026
56a4e8e
fix(simulator): restore cxx_flags so avr-libstdcpp gets injected
thiagoralves May 5, 2026
93bf10a
Merge origin/development into consolidate/strucpp+vpp
thiagoralves May 5, 2026
2edc1f0
fix(security/tests): address PR #748 review findings
thiagoralves May 6, 2026
f329d28
refactor(stats): unify scan-cycle, EtherCAT, and plugin stats on a sh…
thiagoralves May 7, 2026
d4be1c6
feat(libraries): replace hardcoded library data with .stlib bundles
thiagoralves May 8, 2026
e808abf
feat(library-tree): hierarchical rendering + readable library names
thiagoralves May 8, 2026
36c40c9
fix(library-tree): indent nested folders to show hierarchy depth
thiagoralves May 8, 2026
c7ac3bd
fix(debugger): format DT / DATE / TOD / WSTRING values in the watch p…
thiagoralves May 8, 2026
27ae599
feat(types): consume strucpp's canonical iec-types.json registry
thiagoralves May 8, 2026
e085f86
feat(compiler): split program.st per-POU + format errors with POU con…
thiagoralves May 8, 2026
4008287
feat(compiler): emit .il for IL POUs in the program.st splitter
thiagoralves May 8, 2026
92ae27b
feat(compiler): pass preferBodyLine to strucpp formatDiagnostic
thiagoralves May 8, 2026
2f2c923
feat(console): click-to-open for compile errors
thiagoralves May 8, 2026
1c8582e
fix(variables-editor): re-sync local view state when active editor ch…
thiagoralves May 8, 2026
b136d36
feat(editor): select the whole line on programmatic cursor jumps
thiagoralves May 8, 2026
2cb2816
fix(editor): write cursor to active editor on navigation, not just th…
thiagoralves May 8, 2026
919de32
feat(libraries): library-manager backend + IPC plumbing (Phase 1)
thiagoralves May 8, 2026
407ade7
feat(libraries): project.libraries field + legacy migration (Phase 2)
thiagoralves May 8, 2026
821ba1d
feat(libraries): library slice extension + project-view diff (Phase 3)
thiagoralves May 8, 2026
dd19bd8
feat(libraries): library manager screen (Phase 4)
thiagoralves May 9, 2026
1a517f2
feat(libraries): missing libraries modal (Phase 5)
thiagoralves May 9, 2026
7939635
feat(libraries): scope library tree + block pickers to project (Phase 6)
thiagoralves May 9, 2026
4541b3e
feat(libraries): scope strucpp libraryPaths to enabled set (Phase 7)
thiagoralves May 9, 2026
4009f50
test(libraries): cover resolveEnabledLibraryDirs (Phase 8)
thiagoralves May 9, 2026
c56d8d6
fix(libraries): include libraries field in compile IPC envelope
thiagoralves May 11, 2026
385507a
fix(arduino): isolate strucpp library bodies from Arduino.h macros
thiagoralves May 11, 2026
53d9487
chore: relocate runtime_v4_entry shim to tracked editor path
thiagoralves May 11, 2026
ef17357
chore: remove unused runtime_v4_entry shim copy from editor
thiagoralves May 11, 2026
54e8b18
fix(library-manager): wire save flow + drop tab count badge
thiagoralves May 12, 2026
7f8ff5c
feat(library-manager): dedicated tab icon
thiagoralves May 12, 2026
9870216
feat(library-manager): UI polish for explorer affordance + manager tabs
thiagoralves May 12, 2026
f3da3f2
fix(data-types/array): guard toUpperCase() calls against undefined names
thiagoralves May 12, 2026
b4642cc
fix(editor): guard `.toUpperCase()` call sites against malformed entries
thiagoralves May 12, 2026
c11a20c
fix(editor): surface malformed entries in safe-upper helpers
thiagoralves May 12, 2026
ffafd16
fix(editor): guard the variable-table ArrayModal too (missed in prior…
thiagoralves May 12, 2026
2caac6a
fix(editor): stop array-datatype edits from stripping `name` / `deriv…
thiagoralves May 12, 2026
b75dffa
fix(editor): stop enumerated / structure / rename writers from partia…
thiagoralves May 12, 2026
02f1076
fix(plc): make `baseTypeSchema` case-insensitive and converge on a si…
thiagoralves May 12, 2026
9b9ebc1
fix(data-types): drop the surprising `'false'` seed on new array data…
thiagoralves May 12, 2026
c12a00c
fix(xml-generator): omit empty initialValue for array / derived struc…
thiagoralves May 12, 2026
3062da8
fix(compiler): override arduino-cli's post-link RAM check for the sim…
thiagoralves May 12, 2026
d1aaf28
test(simulator): pin the extended-SRAM AVR8JS contract with regressio…
thiagoralves May 12, 2026
d88ecf4
fix(debug): force-value encoders had the wrong byte order
thiagoralves May 12, 2026
efcf249
feat(debugger): editor-side endianness adaptation for force / read
thiagoralves May 12, 2026
0f1bcfc
fix(plc-types): handle nested ANY_* generics in validate-variable-type
thiagoralves May 12, 2026
d954abb
fix(library-manager): actually revert library changes on "Don't save"
thiagoralves May 12, 2026
2b116a8
feat(save): surgical saves + revert for library-manager and vendor-sc…
thiagoralves May 12, 2026
2b02cac
refactor(vpp): one source of truth for vendor-screen persistence keys
thiagoralves May 12, 2026
83fa552
Merge pull request #755 from feat/library-manager into v4.2.0-rc1
thiagoralves May 13, 2026
f92be5f
refactor(shared): move strucpp + create-project + split-program-st to…
thiagoralves May 13, 2026
4da59d7
feat(library-projects): enable Library button + 2-step modal + capabi…
thiagoralves May 13, 2026
5ea5fc1
feat(library-projects): gate UI surfaces by projectCapabilities
thiagoralves May 13, 2026
211524e
feat(library-projects): library manifest Monaco tab
thiagoralves May 13, 2026
dc40010
feat(library-projects): save pipeline branches for library projects
thiagoralves May 13, 2026
0f43aa6
feat(library-projects): backend/shared library build pipeline
thiagoralves May 13, 2026
4a90097
feat(library-projects): wire compileLibrary end-to-end
thiagoralves May 13, 2026
91e7e3e
feat(library-projects): avr-gcc verification + MD5 cache
thiagoralves May 13, 2026
fb88a97
fix(library-projects): manifest tab UX (path, icon, breadcrumb, label)
thiagoralves May 13, 2026
ae3bc31
fix(library-projects): bundle Monaco's JSON worker for the manifest tab
thiagoralves May 13, 2026
44430ea
fix(library-projects): apply OpenPLC theme to the manifest Monaco
thiagoralves May 13, 2026
831852b
fix(library-projects): slim manifest, wire deps, drop stub config
thiagoralves May 13, 2026
3ce5041
fix(library-projects): preserve meta.type through project.json saves
thiagoralves May 13, 2026
a26680e
fix(library-projects): verification core + Buffer decode + port-close
thiagoralves May 13, 2026
226a716
refactor(library-projects): quieter verification + hals.json reuse
thiagoralves May 13, 2026
4bff7b9
refactor(library-projects): .stlib generation is unconditionally last
thiagoralves May 13, 2026
de0f6db
fix(library-projects): drop duplicate tooltip on the Build Library bu…
thiagoralves May 13, 2026
5cb815f
fix(build-options): swap focus: for focus-visible: on the option rows
thiagoralves May 13, 2026
269c825
fix(library-projects): stop double-printing the build success line
thiagoralves May 13, 2026
c17892c
refactor(library-projects): drop redundant closePort hooks + share pa…
thiagoralves May 13, 2026
d023841
fix(library-projects): always save before building
thiagoralves May 13, 2026
8af7bfd
fix(library-projects): stream verify logs + fix async-write race
thiagoralves May 13, 2026
2570e0d
fix(library-projects): stop save from truncating device JSON files
thiagoralves May 13, 2026
29f7cbc
fix(compiler): respect compileOnly on the simulator post-build path
thiagoralves May 13, 2026
7c30016
fix(library-projects): persist manifest tab buffer on build save
thiagoralves May 13, 2026
d7f6ef1
refactor(library-projects): full save now covers library.json
thiagoralves May 13, 2026
be2c45b
refactor(library-projects): manifest editor mirrors POU editor pattern
thiagoralves May 13, 2026
be3f8e6
fix(library-manifest): mirror POU editor's model-sync pattern
thiagoralves May 13, 2026
1d51c44
feat(library-projects): proper Python POU support + early C++ refusal
thiagoralves May 13, 2026
eb6e4a7
Revert "feat(library-projects): proper Python POU support + early C++…
thiagoralves May 14, 2026
b65dfbe
feat(library-projects): Python + C/C++ function block support
thiagoralves May 14, 2026
86cf7f8
fix(library-projects): PR #757 review fixes
thiagoralves May 14, 2026
884d87d
Merge pull request #757 from Autonomy-Logic/library-projects
thiagoralves May 14, 2026
7bf644e
chore(binaries): bump strucpp v0.4.5 -> v0.4.8
thiagoralves May 14, 2026
57eaf92
chore(binaries): bump strucpp v0.4.8 -> v0.4.9
thiagoralves May 14, 2026
9ba2443
feat(vpp): master-detail backplane editor with per-slot detail pane
thiagoralves May 14, 2026
2b2e890
feat(vpp): encode per-slot module_config bytes into runtime config
thiagoralves May 14, 2026
a56de21
fix(vpp): backplane editor sizing + always-on module picker
thiagoralves May 14, 2026
a147222
fix(vpp): preserve per-module screen fields when loading manifest
thiagoralves May 14, 2026
4a47a95
refactor(vpp): make manifest schema agnostic via passthrough
thiagoralves May 14, 2026
207a230
fix(vpp): backplane editor sizing + always-on module picker
thiagoralves May 14, 2026
8e64cc5
fix(vpp): full-height module image + stacked specs in slot card
thiagoralves May 14, 2026
9435fff
fix(vpp): double module image size in slot card
thiagoralves May 14, 2026
08e16d1
fix(vpp): smaller frameless module image + dont prompt save on Packag…
thiagoralves May 14, 2026
9efcaa5
fix(vpp): bump slot module image to 320 px square
thiagoralves May 14, 2026
8e2460e
feat(vpp): generate vpp_plugins.conf in every VPP upload
thiagoralves May 15, 2026
3e496b7
fix(build): bundle STruC++ runtime headers in packaged installer
thiagoralves May 15, 2026
c49de3e
chore(strucpp): bump to v0.4.10
thiagoralves May 15, 2026
4c08d60
Merge pull request #758 from Autonomy-Logic/slm-rp4-vpp
thiagoralves May 15, 2026
56e0ae2
fix(arduino-targets): write defines.h to src/, drop directory-relativ…
thiagoralves May 15, 2026
32edfe4
fix(graphical-editors): seed LD/FBD flow slices on POU create + dupli…
thiagoralves May 15, 2026
b66be72
Merge branch 'development' into v4.2.0-rc1
thiagoralves May 15, 2026
5da3339
feat(lsp): StlibSourcePort + hasStLSP capability flag
thiagoralves May 15, 2026
ad5afc0
feat(lsp): POU signature serializer for cross-POU symbol resolution
thiagoralves May 16, 2026
7eeb87f
feat(lsp): STruC++ LSP service — transport, providers, diagnostics
thiagoralves May 16, 2026
e06e3ad
feat(lsp): project → LSP document sync
thiagoralves May 16, 2026
f984faf
feat(lsp): pre-warm STruC++ LSP at app boot, flip hasStLSP=true
thiagoralves May 16, 2026
2cca2ad
feat(lsp): remove hand-written ST tooling — LSP is the source of truth
thiagoralves May 16, 2026
d09f468
feat(lsp): go-to-def redirects stub URIs to the graphical editor
thiagoralves May 16, 2026
c0bc9de
chore(lsp): final cleanup pass for the ST LSP service
thiagoralves May 16, 2026
928e72b
chore(deps): bump xml2st to v4.0.4 (permissive block resolution)
thiagoralves May 18, 2026
d745bc1
refactor(strucpp): make backend/shared/library browser-pure
thiagoralves May 18, 2026
7b0256a
feat(libraries): pass parsed archives to compile, drop libraryDirs path
thiagoralves May 18, 2026
3d3da04
feat(lsp): match Monaco URI to LSP doc, shift body offset, wire seman…
thiagoralves May 18, 2026
62c11ea
feat(theme): expand color palette for semantic token types
thiagoralves May 18, 2026
3a3d85c
refactor(strucpp): dedupe libs — node_modules/strucpp is canonical
thiagoralves May 18, 2026
d96333d
refactor(path-safety): split filesystem-containment out of shared
thiagoralves May 18, 2026
27b7b43
refactor(compile): extract program-build pipeline into shared
thiagoralves May 18, 2026
ae02d77
feat(vpp): emit analog_real_inputs/_outputs for %ID/%QD channels
thiagoralves May 19, 2026
561cfb1
feat(vpp): per-slot channelsByFormat resolver for VPP modules
thiagoralves May 19, 2026
0251fd5
fix(monaco): cursor jump in variables text mode + 4-space tabs + glob…
thiagoralves May 19, 2026
8eda7db
chore(deps): bump xml2st to v4.0.5 + always pass --keep-structs
thiagoralves May 19, 2026
e5192c5
fix(variables): accept %ID/%QD and %IL/%QL for DWORD/LWORD locations
thiagoralves May 19, 2026
d66640b
fix(vpp): bucket channels by io-mapping prefix, not by manifest prefix
thiagoralves May 19, 2026
56120f3
feat(vpp): selected-slot highlight + stackable backplane variant
thiagoralves May 19, 2026
f37d579
fix(vpp): match existing button style for Remove module trigger
thiagoralves May 19, 2026
b8b55be
feat(vpp): confirmation dialog for Clear All Slots
thiagoralves May 19, 2026
2f2d8a2
feat(vpp): drag-to-reorder slots in Backplane Configuration
thiagoralves May 19, 2026
c18d320
feat(capabilities): migrate target gates from compiler-string to per-…
thiagoralves May 19, 2026
9d4bf5b
feat(iec-address): consolidate allocation into a target-scoped addres…
thiagoralves May 19, 2026
eac456a
feat(alias-registry): derived alias index + pin.name -> pin.alias rename
thiagoralves May 19, 2026
f3c3f7d
feat(variables): alias-aware location cell + auto-adopt on commit
thiagoralves May 19, 2026
628f40a
feat(alias-sync): wire syncVariableAliases into every producer-mutati…
thiagoralves May 19, 2026
6be1188
feat(alias-sync): orphan badge in variable cells + docs
thiagoralves May 19, 2026
2c61b9d
fix(alias): consistent "alias (address)" cell + reliable load-time au…
thiagoralves May 20, 2026
402c632
chore(alias): apply PR review fixes — move shared utils, typed cross-…
thiagoralves May 20, 2026
a78a46f
feat(workspace): keep all editors mounted across tab switches + LSP i…
thiagoralves May 20, 2026
bacfdc7
refactor(workspace): delete save/restore plumbing + gate debug badges…
thiagoralves May 20, 2026
c10c54f
refactor(workspace): final multi-mount audit (Option A phase 5)
thiagoralves May 20, 2026
67a925a
fix(alias): remove ignoreCapabilities bypass; setAvailableOptions own…
thiagoralves May 20, 2026
2e05059
Merge pull request #762 from Autonomy-Logic/feature/alias-source-of-t…
thiagoralves May 20, 2026
28ce2b6
fix(fbd): bind each FBD editor instance to its own POU
thiagoralves May 20, 2026
5afad26
fix(workspace): own-model lookup prefers state.editor for active POU
thiagoralves May 20, 2026
54c6f01
fix(lsp): suppress "No definition found" hint when our redirect handl…
thiagoralves May 20, 2026
dc60998
feat(lsp): open References peek after Go to Definition redirect
thiagoralves May 20, 2026
19f2c3b
fix(lsp): suppress both "No definition found" and References peek aft…
thiagoralves May 20, 2026
7d2d020
fix(lsp): vars-text view on graphical POUs queries the stub URI, not …
thiagoralves May 20, 2026
64e9d03
feat(lsp): wire semantic tokens + diagnostics into variables-text view
thiagoralves May 20, 2026
12ebd39
fix(vars-text): hover not clipped; Go-to-Def on POU name doesn't forc…
thiagoralves May 20, 2026
c47e0aa
Merge remote-tracking branch 'origin/v4.2.0-rc1' into feat/strucpp-ls…
thiagoralves May 20, 2026
2771602
chore(toasts): remove noisy success toasts on project load, file save…
thiagoralves May 20, 2026
50fa6a7
Merge remote-tracking branch 'origin/v4.2.0-rc1' into feat/strucpp-ls…
thiagoralves May 20, 2026
f8b8f1c
chore(deps): bump strucpp to v0.4.11 (AT-after-type located variables)
thiagoralves May 20, 2026
d8c3fd1
fix(lsp): refresh semantic tokens on existing models when provider re…
thiagoralves May 20, 2026
ae34bd6
debug(lsp): instrument semantic-tokens flow + handle refresh request
thiagoralves May 20, 2026
5c325c4
fix(vars-text): enable semantic highlighting on the variables-code-ed…
thiagoralves May 21, 2026
2279141
fix(ladder): crash adding EQ / comparison blocks — recurse through co…
thiagoralves May 21, 2026
45e6cf4
fix(ladder): large blocks (SEQUENCE_4 etc.) clipped to default height
thiagoralves May 21, 2026
6e9ad7d
Merge remote-tracking branch 'origin/v4.2.0-rc1' into feat/strucpp-ls…
thiagoralves May 21, 2026
98a5ac9
fix(ci): Windows x64 release was missing the Download binaries step
thiagoralves May 21, 2026
9158581
fix(packaging): mirror strucpp install into release/app/node_modules
thiagoralves May 21, 2026
b983b72
fix(packaging): ship strucpp runtime+libs via extraResources
thiagoralves May 21, 2026
4baf930
fix(packaging): drop invalid `comment` keys from extraResources
thiagoralves May 21, 2026
400cef7
fix(variables): keep variables-text buffer in sync with table on exte…
thiagoralves May 21, 2026
d6d60b9
fix(workspace): bind every multi-mounted editor to its own POU
thiagoralves May 21, 2026
27cfcbd
fix(toasts): auto-dismiss after 3s, gate save toasts on web only
thiagoralves May 21, 2026
c9b060f
fix(fbd): scope clipboard listeners to the FBD viewport
thiagoralves May 21, 2026
a8877ab
fix(lsp): sync project-enabled libraries and re-analyze on stlib change
thiagoralves May 21, 2026
c951c39
fix(fbd): per-POU Background pattern id fixes grid loss on second open
thiagoralves May 21, 2026
0c3d054
Merge branch 'fix/strucpp-lsp-bugs' into feat/strucpp-lsp-integration
thiagoralves May 21, 2026
ae868d1
fix(fbd): use isActive + clipboard-format gate for paste, not viewpor…
thiagoralves May 21, 2026
fbf1218
fix(review): address PR #763 review concerns 2, 3, 5, 7, 11
thiagoralves May 21, 2026
2be6819
Merge pull request #763 from Autonomy-Logic/feat/strucpp-lsp-integration
thiagoralves May 21, 2026
dd252a5
Merge branch 'development' into v4.2.0-rc1
thiagoralves May 21, 2026
3a27ded
fix(arch): move projectDefaultFilesMapSchema out of types/IPC/
thiagoralves May 22, 2026
7c2944e
Merge pull request #764 from Autonomy-Logic/fix/move-project-files-sc…
thiagoralves May 22, 2026
eddc354
chore(web-capabilities): enable hasStLSP for web in shared defaults
thiagoralves May 22, 2026
d72a618
Merge pull request #765 from Autonomy-Logic/chore/web-capabilities-rc1
thiagoralves May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,9 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Download binaries for x64
run: npx ts-node scripts/download-binaries.ts --arch x64

- name: Get version and build date
id: version
shell: bash
Expand Down
6 changes: 1 addition & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,9 @@ resources/st-compiler/**.spec
resources/bin/**/xml2st
resources/bin/**/xml2st.exe
resources/bin/**/xml2st/
resources/bin/**/iec2c
resources/bin/**/iec2c.exe
resources/bin/**/iec2iec
resources/bin/**/iec2iec.exe
resources/bin/.binary-metadata.json
resources/bin/**/.binary-metadata.json
resources/sources/MatIEC/lib/
resources/strucpp/

# Playwright
/test-results/
Expand Down
31 changes: 31 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,37 @@ When adding new code to covered directories, you must add corresponding tests to
3. Relink variables after variable table changes
4. Node IDs must be unique per flow

### IEC address allocation + alias registry

Located in `src/backend/shared/utils/iec-address/` (byte-identical on
openplc-web). Pure functions, no IPC, no electron coupling.

- **Address pool** (`address-pool.ts`): producer-only, target-scoped
view of every claimed IEC address. Producers = pin mapping, VPP
module slots, Modbus TCP remote IO points, EtherCAT channel
mappings. Capability scoping comes from `target-capabilities` —
switching targets activates / deactivates entire producers.
- Reservation pass: pin-mapping (Arduino-style fixed addresses).
- Allocation pass: every other producer in deterministic order.
- `nextFreeAddress(pool, prefix, isBit, startFrom?, alsoUsed?)`
replaces the old `generateIecAddress` helper. Pass `alsoUsed` for
in-flight allocations within a batch.
- **Alias registry** (`alias-registry.ts`): derived index on top of
the pool. `byAlias` / `byAddress` maps plus `duplicateAliases`
(first-wins). Pure function — rebuild on demand, cost is
O(producers).
- **Variable sync** (`sync-variable-aliases.ts`): pure function that
walks variables and either adopts (no alias bound but address
matches), refreshes (alias address moved), or orphans (alias gone).
Called from every producer-mutation site, target switch,
project load, and pre-compile via the
`projectActions.syncVariableAliases()` store action.

The variable cell renders `alias ?? location` and shows an amber
warning glyph + tooltip when the alias is orphaned. Aliases are
intended to be unique system-wide; the registry's
`isAliasNameAvailable(name, ignoring?)` is the system-wide validator.

## Environment

- **Node.js:** >= 20.x < 24
Expand Down
8 changes: 4 additions & 4 deletions binary-versions.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"xml2st": {
"version": "v4.0.3",
"version": "v4.0.5",
"repository": "Autonomy-Logic/xml2st"
},
"matiec": {
"version": "v4.0.11",
"repository": "Autonomy-Logic/matiec"
"strucpp": {
"version": "v0.4.11",
"repository": "Autonomy-Logic/STruCpp"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
}
}
13 changes: 12 additions & 1 deletion configs/webpack/webpack.config.renderer.dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ const configuration: webpack.Configuration = {
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: 'asset/resource',
},
// Static JS assets — used by the STruC++ LSP worker. See
// webpack.config.renderer.prod.ts for the same rule + rationale.
{
resourceQuery: /^\?url$/,
type: 'asset/resource',
},
// Images
{
test: /\.(png|jpg|jpeg|gif)$/i,
Expand Down Expand Up @@ -188,7 +194,12 @@ const configuration: webpack.Configuration = {
}),

new MonacoEditorWebpackPlugin({
languages: ['python'],
// `python` covers the Python POU editor; `json` covers the
// Library Project's manifest tab (`library.json`). Without
// `json` here, opening the manifest tab spawns a worker with
// no asset registered, which surfaces as an unhandled Worker
// `error` event in the renderer console.
languages: ['python', 'json'],
}),
],

Expand Down
16 changes: 15 additions & 1 deletion configs/webpack/webpack.config.renderer.prod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,15 @@ const configuration: webpack.Configuration = {
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: 'asset/resource',
},
// Static JS assets — used by the STruC++ LSP worker. The
// strucpp browser-server bundle is a pre-built IIFE that
// webpack must NOT re-bundle (it already self-contains the
// compiler). Importing it with `?url` returns the emitted
// asset's URL so `new Worker(url)` spawns it directly.
{
resourceQuery: /^\?url$/,
type: 'asset/resource',
},
// Images
{
test: /\.(png|jpg|jpeg|gif)$/i,
Expand Down Expand Up @@ -154,7 +163,12 @@ const configuration: webpack.Configuration = {
}),

new MonacoEditorWebpackPlugin({
languages: ['python'],
// `python` covers the Python POU editor; `json` covers the
// Library Project's manifest tab (`library.json`). Without
// `json` here, opening the manifest tab spawns a worker with
// no asset registered, which surfaces as an unhandled Worker
// `error` event in the renderer console.
languages: ['python', 'json'],
}),
],
}
Expand Down
Loading
Loading