From 840c68ff1a5f6ace387bcd02a51e4e8dc850bb07 Mon Sep 17 00:00:00 2001 From: pcernik-grpn Date: Thu, 14 May 2026 15:18:35 +0200 Subject: [PATCH] feat(catalog): promote buckets to top-level Data Package cards (#301) Each catalog_data bucket renders as its own top-level Data Package card instead of nested accordions under a single Core Business Data wrapper. Tables flat-listed per package, mirroring the Agnes Internal card. Pluralization fix (1 table / N tables). Includes the 0.54.11 release-cut. Co-authored-by: pcernik-grpn --- CHANGELOG.md | 18 +++++++ app/web/templates/catalog.html | 85 +++++++++++++++------------------- pyproject.toml | 2 +- 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e13aff..8d8118a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,24 @@ CalVer image tags (`stable-YYYY.MM.N`, `dev-YYYY.MM.N`) are produced for every C ## [Unreleased] +## [0.54.11] — 2026-05-14 + +### Changed +- Catalog page: each `catalog_data` bucket now renders as its own + top-level Data Package card instead of being nested as a collapsible + accordion under a single "Core Business Data" wrapper. The page hero + title ("Data Packages") now describes the actual visual structure, and + the card grain matches the `bucket` column on `table_registry`. Tables + inside each package are flat-listed (no per-bucket accordion), + mirroring the existing `Agnes Internal` card; the `Agnes Internal` and + `Business Metrics` cards themselves are unchanged. Per-table sync info + ("Synced …" / "Queried directly from BigQuery") on each row is + preserved. The aggregate meta line ("N tables · ~M rows total · + Synced X") on the old wrapper is dropped with no replacement — the + global sync timestamp is no longer shown on this page. An instance + with zero registered tables now renders no Data Package cards at all, + where the old wrapper always rendered (showing "0 tables"). + ## [0.54.10] — 2026-05-14 ### Changed diff --git a/app/web/templates/catalog.html b/app/web/templates/catalog.html index 5e6571f..a23cc0e 100644 --- a/app/web/templates/catalog.html +++ b/app/web/templates/catalog.html @@ -1332,7 +1332,13 @@
- + {# ── Data Packages: one source-card per bucket ───────────────────── + Previously all buckets were nested as accordions under a single + "Core Business Data" wrapper card. Each bucket is now its own + top-level Data Package card, matching the page hero title and + the bucket grain of the table_registry. The Internal and + Business Metrics cards below follow the same flat-list pattern. #} + {% for category in catalog_data %}
@@ -1346,63 +1352,48 @@
-
Core Business Data
-
Core business data from internal systems
-
- {{ data_stats.total_tables or data_stats.tables }} tables · ~{{ data_stats.rows_display }} rows total - {% if data_stats.last_updated %} - · Synced {{ data_stats.last_updated }} - {% endif %} -
+
{{ category.name }}
+
{{ category.count }} table{{ 's' if category.count != 1 else '' }}
- {% for category in catalog_data %} -
- -
- {% for table in category.tables %} -
-
-
- {{ table.name }} - {% if table.query_mode == 'remote' %} - Live - {% else %} - Local - {% endif %} -
-
{{ table.description }}
-
- {% if table.query_mode == 'remote' %} - Queried directly from BigQuery - {% elif table.last_sync %} - Synced {{ table.last_sync }} - {% endif %} -
+ {# Plain list — tables shown directly; no accordion since the card IS the package. #} +
+ {% for table in category.tables %} +
+
+
+ {{ table.name }} + {% if table.query_mode == 'remote' %} + Live + {% else %} + Local + {% endif %}
-
- {{ table.rows_display }} - {% if table.query_mode != 'remote' %} - - - Profile - +
{{ table.description }}
+
+ {% if table.query_mode == 'remote' %} + Queried directly from BigQuery + {% elif table.last_sync %} + Synced {{ table.last_sync }} {% endif %}
- {% endfor %} +
+ {{ table.rows_display }} + {% if table.query_mode != 'remote' %} + + + Profile + + {% endif %} +
+ {% endfor %}
- {% endfor %}
+ {% endfor %} {# ── Card: Agnes Internal ───────────────────────────────────────── Renders the three system tables (agnes_sessions / agnes_telemetry / diff --git a/pyproject.toml b/pyproject.toml index 06900cd..f10b50a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agnes-the-ai-analyst" -version = "0.54.10" +version = "0.54.11" description = "Agnes — AI Data Analyst platform for AI analytical systems" requires-python = ">=3.11,<3.14" license = "MIT"