Releases: dombyte/datalogger
Releases · dombyte/datalogger
Release list
v1.2.0
Changelog
Breaking changes
- 08d4a20 feat(http)!: apply scale and offset to numeric JSON values
- 39dc3f0 feat(shutdown)!: new lifecycle with startup checks and a hard shutdown deadline
- 299c7c8 fix(config)!: reject unknown keys
Features
- 93d96a6 feat(api): add http api output with latest values
- c04e933 feat(transform): add point expressions, lookups and exclude_points
Bug fixes
- 4e65273 fix(config): default the device timeout and reject a non-positive one
- 39c7d21 fix(config): reject duplicate output names
- 4795a3a fix(config): reject modbus registers past 65535 and counts above 125
- 0a065c7 fix(config): reject unsupported point settings and default scale to 1
- 488fb43 fix(config): require at least one device and one output
- 64225f5 fix(csv): keep max_backups backups and never delete unrelated files
- 66d956d fix(csv): keep the rotation age across restarts and every backup
- 2d9905d fix(csv): reopen the file after a failed write
- 89a4cdf fix(http): keep query and user info of the address out of logs
- 4da76a9 fix(http): limit the response body and drain error responses
- 2c64259 fix(http): skip null, objects and values that do not fit the type
- bae173d fix(http): warn once about a point that cannot be extracted
- 239c164 fix(influxdb): retry only transient errors and skip unencodable values
- 457aee7 fix(influxdb): time out write requests with insecure set
- 55ba493 fix(modbus): stop a poll early on shutdown and when the device is silent
- 034c53d fix(mqtt): connect in the background and make tls:// addresses work
- cc014d2 fix(mqtt): keep the session on rejected messages and back off on errors
- 7ce5e81 fix(mqtt): publish nan and infinite values as null
- 44276a0 fix(routing): log a full output once per stall instead of per point
- 4ede844 fix(shutdown): deliver the points of a poll that runs when shutdown starts
- ddf09cd fix: poll every device once at startup
Refactoring
- 3a8f247 refactor(config): fill defaults before validation and drop no-op Validate
- 3cf42f5 refactor(config): generate the mqtt client id with rand.Text
- f22caa7 refactor(config): load with a local viper instance and no env overrides
- 4d1ea3f refactor(config): make validation lint-clean and fix failing tests
- d4837fe refactor(csv): split the write loop, name constants and tighten tests
- f625bab refactor(http): detect connection errors by type and split the poll loop
- 8a2be94 refactor(http): inject settings, client and clock
- a18154f refactor(influxdb): handle a closed input in the loop and name constants
- 687d776 refactor(influxdb): inject settings, client and clock
- f766c48 refactor(modbus): detect connection errors by type and split long functions
- 1ef6bcc refactor(modbus): inject settings, dialer and clock; connect on first poll
- abda7d4 refactor(mqtt): split start and publish, check the disconnect error
- a8603dd refactor(routing): parse flags without globals and make main lint-clean
- c6111b1 refactor(routing): send the points of one poll as a single batch
- 75ff6bc refactor: add an injectable clock with a fake for tests
- b77e5b1 refactor: move to cmd/datalogger and internal/ with app as composition root
- 5b2cb26 refactor: rename stuttering and misspelled identifiers
Documentation
- 524929c docs(modbus): correct what parallelism does
- f8fdd2f docs: add AGENTS.md based on the go project standard
- 8886ad3 docs: add badges to readme
- 9596cd0 docs: add grafana query examples to the readme
- 9ffbe16 docs: document the standard-v3 layout, lifecycle and output behaviour
- 71ddd87 docs: list the missing startup test and the clock fake in AGENTS.md
- c4e2489 docs: make AGENTS.md self-contained
- 044852d docs: note config pitfalls in AGENTS.md
- f74927d docs: raise coverage targets to 90 and 100 percent
- 3a3ce05 docs: restore the lifecycle backlog item
- 86df602 docs: rewrite readme with installation, quick start and all types
- c1a941a docs: rewrite the example config
- 81df0a8 docs: update AGENTS.md for the lint-clean state
- 7e963ea docs: update coverage numbers in the backlog
Dependencies
- 96e821f chore(deps): bump github.com/stretchr/testify in the go-deps group
- d7b8edb chore(deps): update dependency golangci/golangci-lint to v2.14
- c8e6c7c chore(deps): update gjson to v1.20.0 and grpc to v1.83.2
- dae72a2 ci(deps): drop dependabot and track all pinned versions in renovate
Maintenance
- 7e2ee36 chore(docker): mount ./test-dump in the dev compose file
- 3bf04df chore: align tooling with the go project standard
- 8326228 chore: ignore test-dump and drop the old examples rule
- 829e013 chore: move user templates to example/
- 8b8ed03 ci: align checks, release and mockery setup with solis
- 456146c ci: run checks only on pull requests and releases
- 13fa7e8 style: apply gofumpt and goimports
- ba58c39 style: format go code with gofmt
- ee47883 test(modbus): cover a range poll cut short by shutdown
- 3b5b581 test(shutdown): add startup test for cmd/datalogger
- e7643c5 test: cover csv, influxdb and mqtt writers above 90 percent
- dfc1b80 test: raise coverage of all packages to at least 95 percent
Other changes
- 669ea1a Update golang Docker tag to v1.27.1
- ff8e52c Update module google.golang.org/grpc to v1.83.1 [SECURITY]
Docker images
Platforms: linux/amd64, linux/arm64, linux/arm/v7
ghcr.io/dombyte/datalogger:v1.2.0ghcr.io/dombyte/datalogger:v1.2ghcr.io/dombyte/datalogger:v1ghcr.io/dombyte/datalogger:latest