diff --git a/CHANGELOG.md b/CHANGELOG.md index c9b7f89..0b391a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,28 @@ SensApp is pre-production: breaking changes happen between minor versions and are listed first. Releases are published from a `vX.Y.Z` tag, see [docs/RELEASING.md](docs/RELEASING.md). +## 0.4.1 + +### Added + +- **A Download button** in the explorer (one file per series, downloaded in the background), backed by + `?download=true` on `GET /series/{uuid}`, which answers with a `Content-Disposition` header. +- `sensapp serve`, the explicit name of what plain `sensapp` does. +- `SENSAPP_HTTP_MAX_QUERY_SAMPLES` (default `100000`): the most samples a read may return, instead of constants. +- The explorer header wraps on narrow screens, and has a 1 year preset. + +### Changed and fixed + +- **Prometheus remote read of a plain selector over a long range** answers with one sample per step (the last + sample of each step, with its own timestamp) instead of the raw samples, so graphing a metric over weeks at a + coarse step no longer fails with `Query exceeds 100000 samples`. Prometheus gets the same answer as with the raw + samples. Checked live against Prometheus 3.8, 3.13 and 3.15. +- The command line is parsed with clap: `sensapp --help` prints the help instead of making a token for the + subject `--help`. +- SQLite: `delete_series` takes the write lock first, so concurrent deletes wait instead of failing, and + `SQLITE_BUSY` and `SQLITE_LOCKED` answer `503`. +- ClickHouse: deletes are checked and repeated, as ClickHouse 24.8 can lose one. + ## 0.4.0 ### Breaking changes diff --git a/Cargo.lock b/Cargo.lock index dd00f7c..a0be4ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4668,7 +4668,7 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "sensapp" -version = "0.4.0" +version = "0.4.1" dependencies = [ "anyhow", "arrow 60.0.0", diff --git a/Cargo.toml b/Cargo.toml index ec797a4..47bf404 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sensapp" -version = "0.4.0" +version = "0.4.1" edition = "2024" description = "Sensor data ingestion, storage, and retrieval platform" license = "Apache-2.0" diff --git a/charts/sensapp/Chart.yaml b/charts/sensapp/Chart.yaml index 150c1f2..cdfdc19 100644 --- a/charts/sensapp/Chart.yaml +++ b/charts/sensapp/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: sensapp description: Helm chart for deploying SensApp type: application -version: 0.2.0 -appVersion: "0.4.0" +version: 0.2.1 +appVersion: "0.4.1" keywords: - sensapp - time-series diff --git a/charts/sensapp/README.md b/charts/sensapp/README.md index 0f5e41a..c74a40c 100644 --- a/charts/sensapp/README.md +++ b/charts/sensapp/README.md @@ -7,7 +7,7 @@ The chart deploys SensApp only. It does not install or manage a database. Each S Published releases push the chart to GHCR as an OCI package. Install a specific chart version with: ```bash -helm install sensapp oci://ghcr.io/sintef/charts/sensapp --version 0.2.0 +helm install sensapp oci://ghcr.io/sintef/charts/sensapp --version 0.2.1 ``` The chart version is the `version` in `Chart.yaml`, which is separate from the SensApp `appVersion`. Bump the chart version for each release so an existing OCI tag is not reused. GHCR creates new packages as private by default; an organization admin must make the chart package public for anonymous installs after its first publication. diff --git a/frontend/openapi.json b/frontend/openapi.json index 3d82238..35a5e13 100644 --- a/frontend/openapi.json +++ b/frontend/openapi.json @@ -240,7 +240,7 @@ "name": "Apache-2.0" }, "title": "sensapp", - "version": "0.4.0" + "version": "0.4.1" }, "openapi": "3.1.0", "paths": {