v3.0.0-rc2
Pre-release
Pre-release
·
47 commits
to main
since this release
Warning
This is a pre-release version. Use with caution and report any issues you encounter.
Changelog
Breaking changes
- b313008 feat!: exit on fatal health escalation instead of restarting in-process
- dc6d3a9 fix!: drop permissive CORS and harden static and error responses
- fb4a6b7 refactor!: remove V1/V2 migrations and refuse pre-V2 databases
- 1e1ec54 refactor!: rewrite the backend for v3
Features
- 490340b feat(config): report every invalid setting with its field path
- 0443819 feat(config): select the configuration file with a -config flag
- be397d0 feat(ws): answer ping with pong
- 58481d3 feat: add Modbus RTU transport selected by the address URL scheme
- 64eeb91 feat: add backfill --force to override the history guards
- dc8dddf feat: add debug logging across backend components
- e6f2ff1 feat: add debug logs to the poll cycle
- a99f42e feat: add energy cards and move status helpers into lib/utils
- 4d87088 feat: add the power-flow diagram to the dashboard
- b53b4cb feat: allow up to 256 WebSocket clients
- 6a65bf1 feat: apply the review decisions: cutover offsets, non-root image, examples
- e81219e feat: block pinch zoom in the installed PWA on touch devices
- ff77f81 feat: pin the history chart y-axis while the plot scrolls
- e3bc9d8 feat: polish the history chart and simplify useMobile
- 8522ed3 feat: put the flow diagram and energy cards in one dashboard grid
- d7eb863 feat: raise the default retention to 10 years
- 628e733 feat: rename the energy cards and make the info popovers responsive
- a74e154 feat: replace the flow diagram circles with tiles and use lucide icons
- 5c3eda4 feat: shorten energy labels and use one order across cards and history
- 89ead3a feat: show the energy cards as a swipe carousel on phones
Bug fixes
- 7250362 fix(docker): pass version build info into the dev image
- 0ed51be fix(ui): detect dead WebSocket connections and reconnect faster
- 50053d7 fix(ui): link the apple-touch-icon in index.html
- 22cc858 fix: apply SQLite pragmas through the DSN on every connection
- 00f88c9 fix: audit findings across backend and frontend
- 7f0eb17 fix: close the leftover findings
- f08cd6c fix: close the remaining backend findings
- 91944cd fix: double-counted energy, lost day closes and backfill overwrites
- f8bfb4b fix: frontend accessibility and UI bugs
- 6d6c3a5 fix: hide the page scrollbar in the installed PWA on touch devices
- debdc65 fix: keep the dashboard reconnecting and never show frozen values
- e90b923 fix: make backups self-contained and migrations refuse unsafe states
- d92dd47 fix: make the light theme and small UI text meet WCAG AA contrast
- aba91fc fix: narrow the pinned y-axis column and align its labels
- 120a136 fix: reject config values that used to be misread silently
- 8e24da7 fix: render the pinned history y-axis as HTML labels from the chart scale
- 0035665 fix: run the container as root again
- b8e2e46 fix: size the history y-axis from its measured tick labels
- fe6ce2b fix: the remaining dashboard findings
- c415341 fix: top-align the mobile nav and clear the iPhone home indicator
- 505f145 fix: track internal/solis sources hidden by the binary ignore rule
Refactoring
- 338203c refactor: bring Go code in line with Arch_Plan
- c6d0e95 refactor: fix lint findings: complexity, line length, duplicate history methods
- 601500c refactor: fold the status timestamp migration into V3
- 131728c refactor: give poller and HTTP server their own settings structs
- 1457553 refactor: give storage and database their own settings structs
- 75a1661 refactor: inject domain config rules from app so config has no domain imports
- 059ba29 refactor: move history data points into their own package
- 3e5e4f3 refactor: move the frontend to WebSocket key subscriptions
- b98ec42 refactor: remove unused ErrorMapper.With
- b655c31 refactor: rename routes to router; fix frontend knip findings
- bca3058 refactor: use single-letter receivers
Documentation
- 6707459 docs: add license, checks, Go version and release badges to the README
- b8907e1 docs: align docs with the code and tighten repo hygiene
- 5fdb9e0 docs: bring the README up to date with the reviewed code
- 0c02392 docs: describe the batch workflow for the migration backlog
- 5201d73 docs: document the database upgrade path to v3 in the README
- c71fc83 docs: follow go-project-standard v3 in AGENTS.md
- 728c5c6 docs: follow go-project-standard v3.1 and clear the migration backlog
- 50ac7d5 docs: follow go-project-standard v3.2
- b170b2c docs: make AGENTS.md self-contained; retire Plan.md
- 39aeb70 docs: shorten the README and bring AGENTS.md up to date with the code
- b8f8339 docs: update AGENTS.md for history package and config rules
Dependencies
- ead3605 chore(deps): bump the Go version to 1.26.8
- d58e94e chore(deps): hold typescript below v7 until typescript-eslint supports it
- 78f00b1 chore(deps): lock file maintenance
- 43112a9 chore(deps): pin loose frontend ranges to the locked versions
- 93a32e7 chore(deps): update actions/setup-node action to v7
- 4e2df02 chore(deps): update dependency golangci/golangci-lint to v2.14
- 02c2a84 chore(deps): update golang docker tag to v1.27.1
- 7f02bdd chore(deps): update modernc.org/sqlite to v1.60.0
- c16f422 fix(deps): update module modernc.org/sqlite to v1.60.1
- 056fff0 fix(deps): update npm dependencies
- 994c237 fix(deps): update npm dependencies
Maintenance
- fbf6a66 build(release): ship web assets in archives and add armv7 images
- 7d78db0 chore: add a commented RTU example to the local config and dev compose
- 04c832d chore: adopt conventional commits for changelog grouping
- b37c786 chore: drop ignore entries for the removed ref/ folder
- ec3b068 chore: ignore frontend node_modules in go.mod; run deadcode with -test
- 8bb10ed chore: move pre-commit checks into golangci-lint
- d7a8112 chore: raise local error retention and drop the dev compose command
- 00b9d4a chore: track the example config and compose templates
- 73cc56e ci: cancel superseded check runs on pull requests
- 23d5b1f ci: drop the golangci-lint regex manager, github-actions already detects it
- 659626f ci: let Renovate see in-range npm updates and pinned Go tools, drop Dependabot
- cda0062 ci: pin Renovate lockfile updates to npm 11
- 7cc87a9 ci: run go mod tidy on every Renovate Go dependency update
- c1c3684 ci: skip Renovate major updates for go run tools
- b889b7d ci: skip the checks on main for merge commits of already checked PRs
- f1d9857 style: enable gofumpt and goimports formatters and reformat
- 816634d test(health): wait on the snapshot, not the factory count, for the restart budget test
- f7b8179 test: run table-driven tests in parallel
Other changes
- b99859a Core: Bug Fixes
- 3c25508 Core: Bug Fixes 2
- dfa97dc Core: Bug Fixes 3
- 7f3f751 Core: Compliance 1
- c929b27 Core: Compliance 2
- ccd3389 Core: Compliance 3
- 2f6c2ce Core: Compliance 4
- de549b5 Core: Compliance 5
- 31aa7c0 Core: Migration file change
- 979ebbe Core: Poller updates
- 5b519f8 Core: Some bug fixes
- ec0d434 Migrate config renovate.json
- 1185906 Remove old files
- 87d1d02 Removed dedcode
- fa858b4 UI: Manifest fix
- 71bb653 UI: Manifest fix 2
- f789e10 UI: Removed PWA Deps and moved to Simpler Approach
- 6f18163 UI: Small Fix
- d5f621c Update golang Docker tag to v1.27.1
- f80e083 Update module modernc.org/sqlite to v1.59.0
- ce0e678 Update renovate
- ca93427 Update renovate 2
- ce8f86a Update renovate 3
- c3a041b Update renovate 4
- 72ff157 Update renovate 5
- 806d653 compliance 1
- d8496cf fmt
Docker images
Platforms: linux/amd64, linux/arm64, linux/arm/v7
ghcr.io/dombyte/solis:v3.0.0-rc2