Reorganize AI assistant configuration into .claude/ directory - Slim down AGENTS.md to a concise project overview with pointers to detailed docs - Extract Java coding conventions to .claude/docs/java-coding-conventions.md - Extract build/test instructions to .claude/docs/building-and-testing.md - Add commit skill definition
Lazy-initialize SerialPort in transport classes (#145) Defer SerialPort.getCommPort() from the constructor to connect/bind time in both SerialPortClientTransport and SerialPortServerTransport using double-checked locking. This allows getCommPort failures (which throw immediately on Linux/macOS for non-existent ports) to be caught and wrapped as ModbusConnectException, giving callers consistent error handling across all platforms. Also replace generic Exception usage with ModbusException and ModbusConnectException where appropriate. Add SerialPortGetCommPortBehaviorTest with OS-gated tests documenting the platform-specific getCommPort behavior and verifying that both transport classes handle bogus port names correctly. Expand CI matrix to build and test on Ubuntu, macOS, and Windows.
Add a user documentation foundation (#162) Introduce a documentation tree under `docs/user/`: task-oriented how-to guides for clients, servers, and operations; concept pages for the Modbus mental model, addressing, and transports; and reference pages for configuration, behavior, errors, and the API. Rework the README to lead with a minimal client example and hand off to the documentation index instead of duplicating usage details.
Add a user documentation foundation (#162) Introduce a documentation tree under `docs/user/`: task-oriented how-to guides for clients, servers, and operations; concept pages for the Modbus mental model, addressing, and transports; and reference pages for configuration, behavior, errors, and the API. Rework the README to lead with a minimal client example and hand off to the documentation index instead of duplicating usage details.