# Changelog
LinMot TM-Pilot Application

All notable changes to this project will be documented in this file.

## [1.3.0.0] - 2026-05-18

### Added
- "Run Program" command with parallel program execution, "Restart if Running" option, dedicated Program Manager and per-program step buttons.
- Program properties: ignore Pause, ignore Abort, exclude from system state.
- New commands: Set Variable, Set Variable by Logic, Set Output, Set Output by Logic; pulse output re-added.
- Multiple gripper instances with renameable, persistent names and individual control widgets.
- Add-on concept for grippers in the kinematic wizard.
- Hex input for UPIDs in monitoring and parameter channels.
- Analog drive inputs with scaling and visualization.
- Data references in "Wait Time" command.
- Selectable button types for "Wait User"; description field for "Set Variable".
- Multiple grippers in "Wait / If / Stop Motions" commands.
- Kinematic limits in the motion-default table; jump links to default motion parameters.
- License entries on the Software page (Capping, Data Recording, Process Monitoring, PROFINET, EtherNet/IP, OPC UA).
- Reload button in the file explorer; "Close All but Selected" program button.
- Info file inside system- and program-backup archives.

### Changed
- Program file version 1.3.0.0 (automatic conversion; gripper names added to row descriptions).
- User management moved to System Configuration.
- Comments written directly into program rows.
- Toolbox and edit visualization collapsible.
- Speed inputs in % for direct robotic motions.
- Control / IO split into separate device-IO and drive-IO views with hover tooltips.
- Updated dialog, gripper, motion and analog-IO visualizations; additional tab colours.
- Axis aliases used in all data references; full path shown for parameters, monitoring and motion defaults.
- Auto-reset / auto-run skipped after a kinematics change; resetting program reloaded after upload or save.
- Global speed override used for gripper widgets.
- Speed limit set before torque; speed limiter on by default in "Set Force".
- Pause / Abort switches all axes to position control; robotic axes switched before robotics commands.
- Program variables reset on "Call Program"; properties refreshed when "Run Program" hits a running program.
- After a user error the active row advances so the program can be resumed.
- Operation mode can be changed manually while an axis is powered off.
- Stepping enabled even when the program is not shown; auto tab-switch only when the source program is active.
- Upload button locked while programs are open; status message shown on upload.
- Backup archives renamed and type-validated; program backups extract only .lpp files; system files blocked from the programs folder; all programs / variables deleted before restoring a system backup.
- German translations completed across all text lists.
- Dataset variable values can be deleted.

### Fixed
- Various small visualization, label and unit issues (axis control, gauge, speed override, dropdown frame).
- Unwanted auto-scrolling when adding rows or navigating with arrow keys.
- Execution of program row 500.
- Duplicate program tabs (close on abort, switch on CALL Program); unnamed tab after kinematic wizard.
- Access to program variables inside equations.
- "Paused …" and "Completed by Request" displays; "Request" buttons reset only when effective.
- Crash in "Wait for Logic" caused by excessive logic calls.
- Resuming at a different row; all subprograms now load when a program starts.
- Running an unsaved program no longer forces a reload.
- System backup works without any prior programs; row descriptions update on conversion.
- Error reported on invalid configuration during drive detection.
- Correct pre-position used when teaching gripper commands; gripper widget disabled on gripper error.
- "Stop on Error" no longer allows premature resume.


## [1.2.0.0] - 2026-02-03

### Added
- Runtime-based user management with custom login, user dropdown and context-aware deactivations / pop-ups.
- "Home All" button based on configured homing sequence on the PLC interface.
- Direction selection (shortest / negative / positive) for "Move Rotary Axes" in absolute mode.
- Pop-up offering "start from first row" or "resume from active row" when starting from a different row.
- Gripper position output in data references.
- "Linear" and "direct" trajectory modes prepared for "Move Robotics".
- "Enable / disable all" for inputs and outputs in the kinematic wizard.
- Cancel button on selection dialogs.
- Available row count shown in the program table; drive error IDs shown in hex.

### Changed
- Program file version 1.1.1.0 (automatic conversion); process axes renamed "MultiAx" → "Robotics"; gripper "set force" expressed in %.
- Gripping direction defined by a boolean parameter instead of the sign of the force.
- "Goal" → "Target" everywhere; default target position 0; expanded axis-control labels.
- Force / Torque labels and units adapt to axis type; gripper command descriptions include jaw mode.
- Program editing allowed in paused mode (except load / save-as / close).
- Each axis in "Move Axes" respects its own absolute / relative setting.
- Home position editable when "No Drive Homing" is selected.
- Improved error resolving with delay and automatic acknowledge.
- Language selection moved to the main menu bar; speed-override input made more readable.
- Updated icons (user management, main menu, deactivation, control buttons); standstill pill is green.

### Fixed
- "Act. Current" readout and force control for rotary axes using Max Current.
- Errors / warnings now raised when drive communication is lost or when axes are not homed / enabled before reset, start, resume or command execution.
- Resuming a program different from the one that was paused is prevented.
- Tab information (selected row, scrollbar) stored correctly.
- Sub programs of an auto-run program load automatically.
- Auto / Manual toggle no longer pauses on clicking the current mode.
- Library errors now stop (instead of pause) the library so it can be reset.
- Direction display in "Move Gripper" and set-torque display in axis control.
- Pre-compiler handling of labels in "Wait User", "Pause" and "Complete on Request".


## [1.1.0.0] - 2025-12-15

### Added
- Inputs / outputs in data references with full read / write support.
- Analog IO control visualization with gauge and forcing; physical-unit access to analog values.
- Per-channel IO visualizations; IO names reset to default when drives are updated.
- Option to power on and home axes automatically at startup.
- "Homing" button always available, even for drives configured as "no homing".
- Data-reference dropdown filters: non-writable hidden for targets; only configured channels and activated drive IOs listed.
- New empty programs open as "UnnamedN"; empty unsaved programs close when loading another program.

### Changed
- Many setup parameters restructured (manual update of existing setups required).
- "Completion Request" goes through a new "Completing" state.
- Parameter-channel UPIDs read their ROM value at startup; configured values written as defaults.
- Startup errors require acknowledgement.
- New data-reference format with automatic conversion of existing program files.

### Fixed
- Gripper widget functionality; stopping on fatal errors.
- "Move Mode" of "Move Gripper" command.
- Calculator: logical operators after numbers, and unary minus after logical operators.
- "Go To" no longer permitted on commented-out labels.


## [1.0.3.0] - 2025-11-12

### Added
- Explicit "Resume" bit in the PLC control word; updated PLC interface visualization.
- Persistent widget framework: new gauge widget, redesigned gripper widget, toggle-variable widget.
- IO-package visualizations on the Control page with IO forcing and support for more than four drives.
- "Motor changed" column in the configuration-mismatch dialog.
- New icons (set coordinate system, pill, main menu, control buttons).

### Changed
- Collapsible speed selection in "Move Linear" / "Move Rotary"; "Slow" is the new default.
- "Move Rotary Axes" now uses rotary units.
- Kinematic wizard step "Homing" renamed "Directions & Limits"; manual-homing button and init-position field hidden when "No Drive Homing" is selected.
- Menus no longer auto-close when another menu opens.
- "Apply / Insert" hidden while a program is running.
- Removed unused entries: user-message menu, cartesian axis control, help page, tuning page, set / pulse output commands, "Run Program", offsets in "Move Robotic", LinMot Vision toolbox and setup, and most AppCtrl menus.

### Fixed
- STO readout and automatic axis power-off on STO.
- Drive safety-state readout (0S–3S); current error ID on the PLC interface decoded into event source + ID.
- Pause detection during relative motion.
- Jogging-speed slider only active when the program is not causing motion.
- Order and naming of axes in the kinematic configuration overview.
- Persistent configuration of inactive axes with non-zero entries.
- Edit-visu indenting when a scrollbar appears; division-by-zero in gauge value.
- Duplicate events in the raise-event buffer; deactivation of "Set Force / Torque".


## [1.0.2.0] - 2025-10-29

### Added
- "None" user and user-selection dialog in user management; dropdowns clearable by "NONE".
- Sub programs of an auto-run program load automatically.

### Changed
- PLC interface, its settings and visualization restructured and extended.

### Fixed
- Several improvements to error handling.
- Prevented resuming a program different from the one that was paused.
- Setup-page deactivations during kinematic setup.
- Storing of tab information (selected row, scrollbar).


## [1.0.1.0] - 2025-10-28

- Initial public release.
