From 9dfa323bbbd7dafe9441f146b277ebdf64f8b4be Mon Sep 17 00:00:00 2001 From: Vasil Date: Fri, 23 Oct 2026 15:33:47 +0200 Subject: [PATCH 1/4] chore(release): 1.0.0 --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15b7d1d..f213245 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ All notable changes to light-tokenmeter are listed here. The format follows ## [Unreleased] +## [1.0.0] - 2026-10-23 + +The first stable release, together with Keystone. The Model Switchboard. (KTMS) 1.0 and +ktms-admin 1.0. From here on, what [API stability](README.md#api-stability) lists changes +incompatibly only in a new major version. Upgrade from 0.1.x in one step. + ### Added - Authentication: bearer tokens with `write` and `read` scopes, configured as SHA-256 hashes in `TOKENMETER_TOKENS` or `TOKENMETER_TOKENS_FILE`, several at once for rotation. Refusals are @@ -68,7 +74,8 @@ All notable changes to light-tokenmeter are listed here. The format follows First release: append-only, idempotent usage events over HTTP and gRPC, daily summaries with filters and groupings, and usage by meta. -[Unreleased]: https://github.com/ai-process/light-tokenmeter/compare/0.1.2...HEAD +[Unreleased]: https://github.com/ai-process/light-tokenmeter/compare/v1.0.0...HEAD +[1.0.0]: https://github.com/ai-process/light-tokenmeter/compare/0.1.2...v1.0.0 [0.1.2]: https://github.com/ai-process/light-tokenmeter/compare/0.1.1...0.1.2 [0.1.1]: https://github.com/ai-process/light-tokenmeter/compare/0.1.0...0.1.1 [0.1.0]: https://github.com/ai-process/light-tokenmeter/releases/tag/0.1.0 From a89ad32debe33bf78e54378a783b337904d6de4f Mon Sep 17 00:00:00 2001 From: Vasil Date: Fri, 23 Oct 2026 16:09:20 +0200 Subject: [PATCH 2/4] docs(readme): name the product in full in the compatibility heading --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e348c8..2b5bf57 100644 --- a/README.md +++ b/README.md @@ -264,7 +264,7 @@ releases fix bugs. Not public, and free to change in any release: log message text (other than the prefix above), the `internal/` Go packages, the outbox's lease and retry timings, and resource numbers. -### Compatibility with KTMS and ktms-admin +### Compatibility with Keystone. The Model Switchboard. (KTMS) and ktms-admin | light-tokenmeter | Keystone (KTMS) | ktms-admin | Authentication | | --- | --- | --- | --- | From 141efe324de06eec14b9e6036a9c37f5835d9624 Mon Sep 17 00:00:00 2001 From: Vasil Date: Fri, 23 Oct 2026 16:35:16 +0200 Subject: [PATCH 3/4] docs(changelog): note the DATABASE_URL log fix --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f213245..6f02236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ incompatibly only in a new major version. Upgrade from 0.1.x in one step. - Relicensed under Apache 2.0. ### Security +- The startup log no longer contains the Postgres password: it named the whole `DATABASE_URL`. - clickhouse-go v2.49.0 with ch-go v0.74.0, fixing GO-2025-3603 in the ClickHouse protocol reader. ## [0.1.2] - 2026-10-21 From e4af417e63bcc819078236f5a7f0acaa8c99fc6f Mon Sep 17 00:00:00 2001 From: Vasil coylOne Kulakov Date: Fri, 23 Oct 2026 19:25:59 +0200 Subject: [PATCH 4/4] docs: summary rows leave out the fields not grouped by (#22) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fc67af2..b992245 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ compute tokens per request, cost per request, average latency and error share yo Filters: `project_id`, `user_id`, `vendor`, `model`, `action_id`, `status` (must be `success`, `error`, `cancelled`, or `timeout`; invalid values return 400). Groupings: `group_by_project_id`, `group_by_user_id`, `group_by_vendor`, `group_by_model`, -`group_by_action_id`, `group_by_status` (each `=true`). +`group_by_action_id`, `group_by_status` (each `=true`). Fields you do not group by are left out of the rows. Responses group by day based on event time (`occurred_at`, falling back to `created_at`). If query results exceed 10,000 rows, the response returns `truncated: true` and caps results at 10,000.