From 81ebaf1daba6f20baf84c48c5184c236a6e61e01 Mon Sep 17 00:00:00 2001 From: Priec Date: Thu, 6 Aug 2026 10:14:12 +0200 Subject: [PATCH] changelogs --- server | 2 +- web/CHANGELOG.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 web/CHANGELOG.md diff --git a/server b/server index 5d1a2b21..976e859b 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 5d1a2b2186f3d6099ebc48930d62e5a441aa6ae8 +Subproject commit 976e859bf00c3863482c5c269f2553700d90a795 diff --git a/web/CHANGELOG.md b/web/CHANGELOG.md new file mode 100644 index 00000000..a7037327 --- /dev/null +++ b/web/CHANGELOG.md @@ -0,0 +1,112 @@ +# Changelog + +All notable changes to the **komp_ac web** crate — the Axum SSR/HTMX web frontend +for the komp_ac gRPC backend — are documented in this file. + +This changelog tracks only the **gRPC endpoints** the web crate consumes (the +browser never calls gRPC directly; Axum proxies to the backend through these +clients) and the extent to which each is used by the pages that mount them. +Other, non-API changes are intentionally out of scope. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +--- + +## [Unreleased] + +The web crate wires up seven gRPC services and calls the following endpoints. +Coverage notes describe which pages exercise each call and how deeply its +response is consumed. + +### Auth (`AuthServiceClient`) + +- **`AuthService.Login`** — called by `POST /login`. Exchanges identifier and + password for an access token; the token and `expires_in` are written into the + `analytics_token` HTTP-only cookie that every subsequent gRPC call is signed + with. Fully covered end-to-end. +- **`AuthService.Register`** — called by `POST /register`. Submits the full + `RegisterRequest` surface (username, email, password, password_confirmation, + role, timezone, phone_country). Only the success/error message is shown; it + does not create a session. +- **`AuthService.GetAuthorization`** — called by every admin page loader + (`/admin`, table-definition, add-table, add-logic, add-validation, + import/export). Returns the caller's role; the web crate uses it for two + things: gating the admin panel to `role == "admin"` and rendering the navbar + with the current role. Response fields beyond `role` are not used. + +### Table definition (`TableDefinitionClient`) + +- **`TableDefinition.GetProfileTree`** — called by the analytics, admin, table + definition, add-table, add-logic, and add-validation loaders. Populates the + profile selectors (profile name + table count) and, in the admin panel, the + per-profile table list including `depends_on` and `row_display_columns`. + Response is consumed fairly deeply. +- **`TableDefinition.PostTableDefinition`** — called by `POST /admin/tables` + (add-table page). Creates a table from the draft; the returned `success`, + `sql`, and `message` are surfaced. Full form → endpoint mapping. +- **`TableDefinition.GetProfileDetails`** — called by the table-definition + workspace loader. Returns per-table columns (name, type, currency, + quantity-ledger, rounding, generated/read-only behaviors and `generated_from` + for Steel scripts), scripts (target column/type/description/source), row + display columns, and table kind. The most deeply consumed definition endpoint. +- **`TableDefinition.GetColumnAliasRenameHistory`** — called by the + table-definition workspace loader. Returns rename history entries + (table, old/new column names, timestamp); only those four fields are rendered. +- **`TableDefinition.AddTableColumns`** — called by + `POST /admin/table-definition/columns`. Adds columns to an existing table. +- **`TableDefinition.RenameColumnAlias`** — called by + `POST /admin/table-definition/rename`. Renames a table column alias. +- **`TableDefinition.DeleteTable`** — called by + `POST /admin/table-definition/delete`. Deletes a table definition. +- **`TableDefinition.CopyProfile`** — called by + `POST /admin/table-definition/copy`. Copies a profile. +- **`TableDefinition.CreateInvoiceTemplateTable`** — called by + `POST /admin/table-definition/invoice-template`. Creates a table from the + invoice template contract. + +### Table script (`TableScriptClient`) + +- **`TableScript.PostTableScript`** — called by `POST /admin/logic` + (add-logic page). Creates a Steel table script; the returned id and warnings + are surfaced to the user. + +### Table validation (`TableValidationServiceClient`) + +- **`TableValidationService.UpdateFieldValidation`** — called by + `POST /admin/validation`. Creates/updates a field validation. +- **`TableValidationService.UpsertValidationRule`** — called by + `POST /admin/validation/rules`. Creates/updates a reusable validation rule. +- **`TableValidationService.ApplyValidationSet`** — called by + `POST /admin/validation/sets`. Applies a validation set. +- **`TableValidationService.UpsertValidationSet`** — called by + `POST /admin/validation/sets`. Creates/updates a reusable validation set. + +Each validation POST maps the submitted form into the corresponding request and +renders only the returned `success`/`message`. + +### Table structure (`TableStructureServiceClient`) + +- **`TableStructureService.GetTableStructure`** — called by the admin panel, + CSV import, and CSV export. Returns table structures used three ways: the + admin column browse (name, type, nullable, primary key, quantity-ledger), + import header validation, and export column ordering. Only the structure for + the selected/imported/exported tables is requested at a time. + +### Tables data (`TablesDataClient`) + +- **`TablesData.PostTableDataBulk`** — called by `POST /admin/import`. Chunked + bulk insert of parsed CSV rows into a table, with per-chunk requests. +- **`TablesData.GetTableDataByPosition`** — called by `POST /admin/export.csv`. + Reads table rows by position for CSV download, one request per table. + +### Analytics (`AnalyticsServiceClient`) + +- **`AnalyticsService.GetAnalyticsCatalog`** — called by `POST /api/catalog`. + Returns the live public analytics catalog for a profile (tables, columns, + types, links); rendered in the sidebar and used to generate starter queries + and LLM schema context. +- **`AnalyticsService.ExecuteAnalyticsQuery`** — called by `POST /api/query`. + Runs a read-only analytics SQL query; the result columns/rows feed the + ECharts charts and table view. +- The analytics profile selector is fed by `TableDefinition.GetProfileTree` + (see above), not by a dedicated analytics profile endpoint.