|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to **Solisdash** are documented here. Version numbers |
| 4 | +follow [Semantic Versioning](https://semver.org/). The package is published |
| 5 | +to PyPI on every `vX.Y.Z` tag push. |
| 6 | + |
| 7 | +## 0.7.1 — 2026-05-16 |
| 8 | + |
| 9 | +### Fixed |
| 10 | +- Submitting the setup wizard against a MongoDB that already contained a |
| 11 | + user with the chosen username raised `DuplicateKeyError` and returned a |
| 12 | + 500. The wizard now probes for a username collision before persisting |
| 13 | + anything and renders a friendly inline error pointing the user at |
| 14 | + `/login`. A `DuplicateKeyError` fallback covers the index race. |
| 15 | + |
| 16 | +## 0.7.0 — 2026-05-16 |
| 17 | + |
| 18 | +### Changed |
| 19 | +- All configuration now lives inside the webview. The CLI no longer prompts |
| 20 | + for anything — `solisdash` boots straight into the pywebview window and |
| 21 | + silently generates `SESSION_SECRET` on first run. |
| 22 | + |
| 23 | +### Added |
| 24 | +- First-run **setup wizard** at `/setup`: a single-page form with three |
| 25 | + sections (MongoDB, SolisCloud, Administrator account). Each section has |
| 26 | + an HTMX **Test** button that probes the value inline before save. After |
| 27 | + save the user is auto-signed-in and dropped on the dashboard. |
| 28 | +- **Settings page** at `/settings` (linked from the nav as ⚙ Settings): |
| 29 | + re-edit the same values, re-test, or reset the configuration. Reset |
| 30 | + wipes `solisdash.toml` and re-runs the wizard; MongoDB data |
| 31 | + (users, samples, alarms, daily totals) is left alone. |
| 32 | +- **`~/.config/solisdash/solisdash.toml`** as the persisted config store, |
| 33 | + XDG-aware and chmodded to `0600`. Loaded via pydantic-settings' |
| 34 | + `TomlConfigSettingsSource`. Environment variables still take precedence |
| 35 | + over the file, and a project-local `.env` is still read for dev. |
| 36 | + |
| 37 | +### Removed |
| 38 | +- The interactive CLI setup helpers (`solisdash setup`, prompts on first |
| 39 | + boot). The `add-user` subcommand stays for post-install user management. |
| 40 | + |
| 41 | +## 0.6.2 — 2026-05-15 |
| 42 | + |
| 43 | +### Changed |
| 44 | +- Dropped `invoke` as a runtime dependency — it was unused in `src/` and |
| 45 | + shipped only because the build tasks lived in the package. Now in the |
| 46 | + `dev` extra. |
| 47 | + |
| 48 | +## 0.6.1 — 2026-05-15 |
| 49 | + |
| 50 | +### Fixed |
| 51 | +- Signing in on a freshly-installed instance with empty SolisCloud |
| 52 | + credentials raised `RuntimeError` from `get_solis_client`, producing a |
| 53 | + 500. The client now constructs even with empty creds; live-tile |
| 54 | + requests fall back to a friendly "SolisCloud rejected the call" alert |
| 55 | + that nudges the admin to finish configuration. |
| 56 | + |
| 57 | +## 0.6.0 — 2026-05-15 |
| 58 | + |
| 59 | +### Added |
| 60 | +- First-run onboarding: when no `.env` is present and stdin is a TTY, |
| 61 | + the CLI prompts the admin to enter Mongo + SolisCloud creds and writes |
| 62 | + them to a user-level config file. Superseded by the in-browser wizard |
| 63 | + in 0.7.0. |
| 64 | + |
| 65 | +## 0.5.0 — 2026-05-15 |
| 66 | + |
| 67 | +### Added |
| 68 | +- First-run setup wizard at `/setup` (server-side, no Mongo creds yet) |
| 69 | + so a fresh install can create its admin account from the browser |
| 70 | + instead of the CLI. |
| 71 | +- `solisdash add-user` CLI subcommand for creating additional accounts |
| 72 | + post-install. |
| 73 | + |
| 74 | +## 0.4.0 — 2026-05-15 |
| 75 | + |
| 76 | +### Changed |
| 77 | +- Lowered the minimum Python version from 3.12 to **3.10** so the |
| 78 | + package installs on the broader range of LTS Pythons. `tomli` is |
| 79 | + pulled in as a fallback for `tomllib` on 3.10. |
| 80 | + |
| 81 | +## 0.3.2 — 2026-05-15 |
| 82 | + |
| 83 | +### Removed |
| 84 | +- The obsolete `pymongo[srv]` extra. Recent `pymongo` releases bundle |
| 85 | + SRV resolution by default; the extra was a no-op causing a pip |
| 86 | + warning. |
| 87 | + |
| 88 | +## 0.3.1 — 2026-05-15 |
| 89 | + |
| 90 | +### Added |
| 91 | +- GitHub Actions release workflow (`.github/workflows/release.yml`): |
| 92 | + pushing a `vX.Y.Z` tag builds with `uv build` and publishes the sdist |
| 93 | + + wheel to PyPI via OIDC trusted publishing. No API tokens, no local |
| 94 | + `uv publish`. |
| 95 | + |
| 96 | +## 0.2.x — 2026-05-13 → 2026-05-14 |
| 97 | + |
| 98 | +Pre-release scaffolding. Highlights from the run-up to the first |
| 99 | +PyPI-published version: |
| 100 | + |
| 101 | +- `solisdash` CLI launcher with native pywebview window + menu. |
| 102 | +- AGPL-3.0-or-later license. |
| 103 | +- GitHub Actions CI (ruff, mypy, pytest with a `mongo:7` service). |
| 104 | +- Public README and CI badge. |
| 105 | + |
| 106 | +## 0.1.x — 2026-05-13 |
| 107 | + |
| 108 | +Initial development. Highlights: |
| 109 | + |
| 110 | +- FastAPI app scaffold, session-cookie auth, Jinja shell. |
| 111 | +- SolisCloud client with HMAC-SHA1 signing (bare `application/json` |
| 112 | + Content-Type, no separate `KeyId` header, `alarmList` unwrapping |
| 113 | + fixed). |
| 114 | +- MongoDB layer with per-worker test fixture. |
| 115 | +- Live-tile dashboard with HTMX polling and station-samples fallback. |
| 116 | +- Poller + APScheduler + token-bucket rate limiter, with `poll-once` |
| 117 | + and `backfill` invoke tasks. |
| 118 | +- History charts: day, month, year, all-time (Mongo-only, no SolisCloud |
| 119 | + calls). |
| 120 | +- Alarm feed, CSV export, dark-mode toggle, `/ready` probe. |
0 commit comments