Repository navigation
Conversation
- Modbus/ action paths, device selector (<connection>/<device>), list_devices; devices grouped under their connection. - Rate health per device: requested vs achieved, overload, demoted with retry countdown, disconnected, not polled. - Raw rows store their address base and refuse read/write when the device's base changed; single-word raw writes honor write_mode fc16. - Codec: byte orders match the extension (ABCD/DCBA/CDAB/BADC), exact 1/n scaling, half-up write rounding with range refusal. - A starting 0.2.0 extension (standalone actions listed first) no longer reads as outdated; only legacy modbus/ paths do. - Saved rows move to watch-rows.v2; v1 rows held 0-based wire addresses and are intentionally not migrated. - Requires zelos-extension-modbus >=0.2.0. Claude-Session: https://claude.ai/code/session_01LjFqdigCe9fpCgr6Rot3vE
- Raw rows keep their address base; a base change blocks read/write with an inline reason. Saved rows move to watch-rows.v2. - Write results: unknown outcome shown in amber (read back before retrying), refused in red with the reason. Raw writes disabled with an inline reason when the extension has them off. - Device health: map discovery pending/failed, refused blocks with retry, disconnected, not polled. - Codec: exact integer round-trip check, exact 1/n scaling, string values display-only. - A starting 0.2.0 extension no longer reads as outdated; list_devices polled only once the action is registered. Claude-Session: https://claude.ai/code/session_01LjFqdigCe9fpCgr6Rot3vE
A box can carry the marketplace install (0.1.5, `modbus/`) and a local 0.2.0 install (`Modbus/`). The resolver took the first listed, so status and the Start/Stop target depended on list order. Sort installs by id, prefer running over stopped, then one meeting the version floor. When more than one runs, name them and tell the operator to stop the unused one: no action path carries an install id. Claude-Session: https://claude.ai/code/session_01LjFqdigCe9fpCgr6Rot3vE
The extension shipped these changes as 0.1.6, not 0.2.0: retarget the [[requires]] floor, the runtime version floor, docs and tests. Claude-Session: https://claude.ai/code/session_01LjFqdigCe9fpCgr6Rot3vE
A device with no map that auto-scans (auto_scan set) gets a neutral scanning/found badge instead of "raw only", and its catalog loads and refetches as register_count grows, so discovered registers are pickable as named rows. Mock host gains an auto-scanning device. Claude-Session: https://claude.ai/code/session_01LjFqdigCe9fpCgr6Rot3vE
Labels read Holding 4x / Input 3x / Coil 0x / Discrete 1x, with the full spec name and read function code (e.g. Holding registers (4x, FC03)) in tooltips and the scan badge. The mock traces raw holding registers under holding_registers/, as the extension now does.
Auto-scanned registers trace hr_<a>, ir_<a>, coil_<a>, di_<a> instead of <a>_value (extension #23).
tkeairns
force-pushed
the
feat/modbus-devices
branch
from
October 3, 2026 00:15
8d83c16 to
647593c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Companion to zeloscloud/zelos-extension-modbus#14. Requires zelos-extension-modbus 0.1.6 (released; #14 merged).
Modbus/action paths,deviceselector (<connection>/<device>),list_devices; devices grouped under their connection with endpoint badge.write_mode: fc16.modbus/paths do.watch-rows.v2; v1 rows held 0-based wire addresses and are intentionally not migrated.Testing: 408 vitest; lint, tsc, build, format clean. The app's action layer (discovery, grouping, snapshots, named and raw writes) was driven against a live agent + extension; writes confirmed on the simulator to land only on the target unit. Not verified: rendering inside the Electron host.
Review follow-ups (5b49d14)
holding_registers/<a>.hr_<a>,input_registers/<a>.ir_<a>,coils/<a>.coil_<a>,discrete_inputs/<a>.di_<a>.