hot reload added
KronEditor 1.1.1
First tagged release since 1.0.0. Focus: live editing while running (online change), a real AI agent workflow, and shippable installers.
✨ Highlights
Online change (hot reload). Edit Ladder/ST while the simulation runs and apply it live with a Hot Reload toolbar button — timers, counters and latches survive. Layout-changing edits (adding an FB, a variable, a task) can't hot-reload; they're detected up front and offered as a one-click rebuild + restart that carries over existing variable values (a counter at 35 resumes at 35, not 0). Guarded by two layers: a JS layout pre-check and the C-level plc_state_layout_hash safety net.
Pulse vs Force live writes. Manually writing a live value now offers Pulse (inject for one scan, logic resumes) or Force (hold it pinned). Pulse is the fix for "I set the counter to 0 and it froze" — force pins, pulse seeds.
PLC Agent upgrades.
Manual / Auto mode — review each change as a diff, or let the agent apply directly.
Ask agent from any error: the error popup (now a full, copyable modal) sends the message to the agent for an explanation/fix.
Animated "thinking/working" indicator.
Ollama: the model pill is green only when the daemon is actually running (with a Stop button and auto-recovery), instead of falsely green.
🪜 Ladder editor
Straight wires — the power line is fixed and blocks magnet-snap onto it (measured from the real handle), ending the "kayma"/stepped-wire drift.
Undeclared variables are flagged — a pin wired to an unknown name (e.g. var5) shows a red border + tooltip explaining it, instead of silently failing at build.
Block "How it works" notes — double-click a block to see behaviour notes (subtype-aware), localized in EN/TR/RU.
ANY_NUM pins keep autocomplete after a literal is typed; editable pins work correctly during a running sim.
TIME auto-format — type 500ms or 500, get T#500ms (bare number = milliseconds), in both PT pins and variable initial values.
Ctrl+Shift+Z (redo) now layout-independent.
🔢 Types & validation
64-bit types LINT / ULINT / LREAL / LWORD selectable; host-agent now encodes/decodes BYTE/WORD/DWORD/LWORD too.
Variable names validated as IEC identifiers (no spaces/punctuation).
Same-named locals in different programs no longer wrongly rejected.
📦 Packaging & release
Linux AppImage — build fixed (missing AppRun/desktop assets added); one self-contained file with toolchains.
Windows — portable ZIP plus a real installer: KronEditor-1.1.1-Setup.exe (530 MB, bundles the app + resources + LLVM toolchains → one install, Build & Send works; local simulation is Linux-only).
packaging/requirements.md documents build prerequisites.
Compile/build now shows a spinner + progress cursor.
⚙️ Under the hood
Header/include resolution moved to the shared krontek-include tree.
Loader-host cache keyed by content hash (a stale loader no longer breaks sim cold-start).
Version single-sourced from package.json everywhere.
Field hot-swap on real hardware is unverified — online change is proven on the local sim (compile/unit/HTTP verified for the field path), but a physical-device swap + operator safe-state review are still pending. Build & Send (full redeploy + restart) is the reliable target path.
Local simulation is Linux-only (reads /proc//dev/shm); on Windows the editor + Build & Send work, RUN does not.
EtherCAT/motion aren't hot-swap-trampolined — those need a full redeploy.