From ebbc1e8aa0a28ec013546c8cce35a84f51456b71 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Wed, 13 May 2026 15:18:17 -0700 Subject: [PATCH 1/3] migrate: import 31 historical entries from altimate-website data.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brings parity with the legacy /changelog rendered from src/pages/changelog/data.js. Spread across Feb 2026, Jan 2026, and Dec 2025. Dates are spread within each month so display order matches the original data.js order; tweak if you have the actual ship dates. Also relaxes the validator to allow entries with only `description` set (no markdown body), and the renderer now skips the "Read more" toggle when there's nothing extra to expand. Product attribution is a best guess — review the diff and re-tag anything that's wrong before merge. Notable judgment calls: - Studio features → multi-tagged dbt-power-user + snowflake-app + databricks-app - Workload/cost-monitoring features → snowflake-app + databricks-app - Knowledge Engine → datamates + dbt-power-user - Azure SSO → all 5 products (platform-wide auth) Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/scripts/validate.py | 18 +++++++++++++++--- entries/2025-12-01-global-studio-button.md | 9 +++++++++ ...5-12-02-warehouse-recommendation-columns.md | 8 ++++++++ ...4-access-rule-and-ownership-cost-preview.md | 9 +++++++++ ...-06-knowledge-engine-v2-template-forking.md | 9 +++++++++ entries/2025-12-08-sidebar-opens-on-hover.md | 8 ++++++++ .../2025-12-10-gen2-compute-in-cost-savings.md | 8 ++++++++ entries/2025-12-12-query-analysis-agent.md | 9 +++++++++ entries/2025-12-14-query-count-metrics.md | 8 ++++++++ .../2025-12-16-access-control-metadata-page.md | 9 +++++++++ ...25-12-18-tasks-page-for-custom-workloads.md | 9 +++++++++ .../2025-12-20-slack-reports-with-images.md | 8 ++++++++ ...2-optimal-warehouse-size-recommendations.md | 8 ++++++++ entries/2025-12-24-table-optimization-agent.md | 9 +++++++++ ...26-prompt-library-with-context-filtering.md | 9 +++++++++ entries/2025-12-28-dbt-workload-metrics.md | 9 +++++++++ entries/2025-12-30-subscriptions-v2.md | 9 +++++++++ ...026-01-01-workload-sorting-and-filtering.md | 8 ++++++++ ...26-01-04-search-and-filters-on-datamates.md | 8 ++++++++ ...2026-01-07-ownership-conflict-indicators.md | 8 ++++++++ entries/2026-01-10-azure-sso-support.md | 9 +++++++++ ...6-01-13-pre-execution-query-optimization.md | 9 +++++++++ ...6-01-16-databricks-full-platform-support.md | 9 +++++++++ entries/2026-01-19-custom-workload-tags.md | 9 +++++++++ ...1-22-workloads-time-interval-aggregation.md | 8 ++++++++ entries/2026-01-25-dbt-cloud-integrations.md | 9 +++++++++ ...1-28-global-studio-launched-for-everyone.md | 9 +++++++++ ...026-02-01-evaluation-system-improvements.md | 8 ++++++++ entries/2026-02-08-sku-cost-page-databricks.md | 9 +++++++++ entries/2026-02-15-new-insightsection-ui.md | 8 ++++++++ .../2026-02-22-ai-services-cost-monitoring.md | 9 +++++++++ ...6-02-28-knowledge-engine-ux-enhancements.md | 9 +++++++++ 32 files changed, 282 insertions(+), 3 deletions(-) create mode 100644 entries/2025-12-01-global-studio-button.md create mode 100644 entries/2025-12-02-warehouse-recommendation-columns.md create mode 100644 entries/2025-12-04-access-rule-and-ownership-cost-preview.md create mode 100644 entries/2025-12-06-knowledge-engine-v2-template-forking.md create mode 100644 entries/2025-12-08-sidebar-opens-on-hover.md create mode 100644 entries/2025-12-10-gen2-compute-in-cost-savings.md create mode 100644 entries/2025-12-12-query-analysis-agent.md create mode 100644 entries/2025-12-14-query-count-metrics.md create mode 100644 entries/2025-12-16-access-control-metadata-page.md create mode 100644 entries/2025-12-18-tasks-page-for-custom-workloads.md create mode 100644 entries/2025-12-20-slack-reports-with-images.md create mode 100644 entries/2025-12-22-optimal-warehouse-size-recommendations.md create mode 100644 entries/2025-12-24-table-optimization-agent.md create mode 100644 entries/2025-12-26-prompt-library-with-context-filtering.md create mode 100644 entries/2025-12-28-dbt-workload-metrics.md create mode 100644 entries/2025-12-30-subscriptions-v2.md create mode 100644 entries/2026-01-01-workload-sorting-and-filtering.md create mode 100644 entries/2026-01-04-search-and-filters-on-datamates.md create mode 100644 entries/2026-01-07-ownership-conflict-indicators.md create mode 100644 entries/2026-01-10-azure-sso-support.md create mode 100644 entries/2026-01-13-pre-execution-query-optimization.md create mode 100644 entries/2026-01-16-databricks-full-platform-support.md create mode 100644 entries/2026-01-19-custom-workload-tags.md create mode 100644 entries/2026-01-22-workloads-time-interval-aggregation.md create mode 100644 entries/2026-01-25-dbt-cloud-integrations.md create mode 100644 entries/2026-01-28-global-studio-launched-for-everyone.md create mode 100644 entries/2026-02-01-evaluation-system-improvements.md create mode 100644 entries/2026-02-08-sku-cost-page-databricks.md create mode 100644 entries/2026-02-15-new-insightsection-ui.md create mode 100644 entries/2026-02-22-ai-services-cost-monitoring.md create mode 100644 entries/2026-02-28-knowledge-engine-ux-enhancements.md diff --git a/.github/scripts/validate.py b/.github/scripts/validate.py index 1fe23b1..9f77be7 100644 --- a/.github/scripts/validate.py +++ b/.github/scripts/validate.py @@ -197,12 +197,20 @@ def check_frontmatter( return errors -def check_body(rel: Path, body: str, config: dict) -> list[str]: +def check_body( + rel: Path, body: str, has_description: bool, config: dict +) -> list[str]: errors: list[str] = [] stripped = body.strip() if not stripped: - errors.append(f"{rel}: body is empty — add at least one sentence") + # One-liner entries can use just the `description` field with no + # markdown body — but every entry must have at least one of them. + if not has_description: + errors.append( + f"{rel}: entry has no content — set `description` in frontmatter " + f"or write a body paragraph" + ) return errors # The card already renders the title — bodies should open with prose, @@ -305,7 +313,11 @@ def validate_entry(path: Path, config: dict) -> list[str]: return errors errors.extend(check_frontmatter(rel, front, filename_date, config)) - errors.extend(check_body(rel, fm_match.group(2), config)) + has_description = bool( + isinstance(front.get("description"), str) + and front.get("description").strip() + ) + errors.extend(check_body(rel, fm_match.group(2), has_description, config)) return errors diff --git a/entries/2025-12-01-global-studio-button.md b/entries/2025-12-01-global-studio-button.md new file mode 100644 index 0000000..5b467a3 --- /dev/null +++ b/entries/2025-12-01-global-studio-button.md @@ -0,0 +1,9 @@ +--- +title: Global Studio button +date: 2025-12-01 +products: [dbt-power-user, snowflake-app, databricks-app] +tag: new +emoji: 🌐 +description: Launch Altimate Studio from any page +--- + diff --git a/entries/2025-12-02-warehouse-recommendation-columns.md b/entries/2025-12-02-warehouse-recommendation-columns.md new file mode 100644 index 0000000..9ce0cd5 --- /dev/null +++ b/entries/2025-12-02-warehouse-recommendation-columns.md @@ -0,0 +1,8 @@ +--- +title: Warehouse recommendation columns +date: 2025-12-02 +products: [snowflake-app, databricks-app] +emoji: 🏢 +description: See recommended warehouse size directly in tables +--- + diff --git a/entries/2025-12-04-access-rule-and-ownership-cost-preview.md b/entries/2025-12-04-access-rule-and-ownership-cost-preview.md new file mode 100644 index 0000000..5bf0abf --- /dev/null +++ b/entries/2025-12-04-access-rule-and-ownership-cost-preview.md @@ -0,0 +1,9 @@ +--- +title: Access rule and ownership cost preview +date: 2025-12-04 +products: [snowflake-app, databricks-app] +tag: new +emoji: 👥 +description: Preview cost impact before changing access rules +--- + diff --git a/entries/2025-12-06-knowledge-engine-v2-template-forking.md b/entries/2025-12-06-knowledge-engine-v2-template-forking.md new file mode 100644 index 0000000..08f92a0 --- /dev/null +++ b/entries/2025-12-06-knowledge-engine-v2-template-forking.md @@ -0,0 +1,9 @@ +--- +title: Knowledge Engine v2 template forking +date: 2025-12-06 +products: [datamates, dbt-power-user] +tag: improved +emoji: 🔗 +description: Fork curated KB templates to your own workspace +--- + diff --git a/entries/2025-12-08-sidebar-opens-on-hover.md b/entries/2025-12-08-sidebar-opens-on-hover.md new file mode 100644 index 0000000..9d48fab --- /dev/null +++ b/entries/2025-12-08-sidebar-opens-on-hover.md @@ -0,0 +1,8 @@ +--- +title: Sidebar opens on hover +date: 2025-12-08 +products: [snowflake-app, databricks-app, datamates] +emoji: 🎨 +description: Navigation sidebar reveals on hover for more workspace +--- + diff --git a/entries/2025-12-10-gen2-compute-in-cost-savings.md b/entries/2025-12-10-gen2-compute-in-cost-savings.md new file mode 100644 index 0000000..62192b6 --- /dev/null +++ b/entries/2025-12-10-gen2-compute-in-cost-savings.md @@ -0,0 +1,8 @@ +--- +title: Gen2 compute in cost savings +date: 2025-12-10 +products: [snowflake-app] +emoji: 💎 +description: Potential and actual savings now incorporate Snowflake gen2 pricing +--- + diff --git a/entries/2025-12-12-query-analysis-agent.md b/entries/2025-12-12-query-analysis-agent.md new file mode 100644 index 0000000..6748cb1 --- /dev/null +++ b/entries/2025-12-12-query-analysis-agent.md @@ -0,0 +1,9 @@ +--- +title: Query analysis agent +date: 2025-12-12 +products: [snowflake-app, databricks-app] +tag: new +emoji: 🗺️ +description: AI-powered deep analysis of individual queries +--- + diff --git a/entries/2025-12-14-query-count-metrics.md b/entries/2025-12-14-query-count-metrics.md new file mode 100644 index 0000000..1c8bad4 --- /dev/null +++ b/entries/2025-12-14-query-count-metrics.md @@ -0,0 +1,8 @@ +--- +title: Query count metrics +date: 2025-12-14 +products: [snowflake-app, databricks-app] +emoji: 💡 +description: New metric to track query volumes alongside cost +--- + diff --git a/entries/2025-12-16-access-control-metadata-page.md b/entries/2025-12-16-access-control-metadata-page.md new file mode 100644 index 0000000..115a244 --- /dev/null +++ b/entries/2025-12-16-access-control-metadata-page.md @@ -0,0 +1,9 @@ +--- +title: Access Control Metadata page +date: 2025-12-16 +products: [snowflake-app, databricks-app] +tag: new +emoji: 🔑 +description: Visualize ClickHouse access control policies +--- + diff --git a/entries/2025-12-18-tasks-page-for-custom-workloads.md b/entries/2025-12-18-tasks-page-for-custom-workloads.md new file mode 100644 index 0000000..866a3dd --- /dev/null +++ b/entries/2025-12-18-tasks-page-for-custom-workloads.md @@ -0,0 +1,9 @@ +--- +title: Tasks page for custom workloads +date: 2025-12-18 +products: [snowflake-app, databricks-app] +tag: new +emoji: 📂 +description: Drill into individual tasks within workload runs +--- + diff --git a/entries/2025-12-20-slack-reports-with-images.md b/entries/2025-12-20-slack-reports-with-images.md new file mode 100644 index 0000000..2ddc0e1 --- /dev/null +++ b/entries/2025-12-20-slack-reports-with-images.md @@ -0,0 +1,8 @@ +--- +title: Slack reports with images +date: 2025-12-20 +products: [snowflake-app, databricks-app] +emoji: 🔔 +description: Reports now include charts and visuals in Slack notifications +--- + diff --git a/entries/2025-12-22-optimal-warehouse-size-recommendations.md b/entries/2025-12-22-optimal-warehouse-size-recommendations.md new file mode 100644 index 0000000..0c4b00d --- /dev/null +++ b/entries/2025-12-22-optimal-warehouse-size-recommendations.md @@ -0,0 +1,8 @@ +--- +title: Optimal warehouse size recommendations +date: 2025-12-22 +products: [snowflake-app, databricks-app] +emoji: 📉 +description: Right-size warehouses based on workload patterns +--- + diff --git a/entries/2025-12-24-table-optimization-agent.md b/entries/2025-12-24-table-optimization-agent.md new file mode 100644 index 0000000..32063e2 --- /dev/null +++ b/entries/2025-12-24-table-optimization-agent.md @@ -0,0 +1,9 @@ +--- +title: Table optimization agent +date: 2025-12-24 +products: [snowflake-app, databricks-app] +tag: new +emoji: 🏗️ +description: AI agent recommends table-level optimizations +--- + diff --git a/entries/2025-12-26-prompt-library-with-context-filtering.md b/entries/2025-12-26-prompt-library-with-context-filtering.md new file mode 100644 index 0000000..0358a05 --- /dev/null +++ b/entries/2025-12-26-prompt-library-with-context-filtering.md @@ -0,0 +1,9 @@ +--- +title: Prompt Library with context filtering +date: 2025-12-26 +products: [dbt-power-user, altimate-code] +tag: new +emoji: 🧩 +description: Browse and filter prompts by agent context +--- + diff --git a/entries/2025-12-28-dbt-workload-metrics.md b/entries/2025-12-28-dbt-workload-metrics.md new file mode 100644 index 0000000..48f71f8 --- /dev/null +++ b/entries/2025-12-28-dbt-workload-metrics.md @@ -0,0 +1,9 @@ +--- +title: dbt workload metrics +date: 2025-12-28 +products: [snowflake-app, dbt-power-user] +tag: new +emoji: 📊 +description: Track dbt run cost and performance over time +--- + diff --git a/entries/2025-12-30-subscriptions-v2.md b/entries/2025-12-30-subscriptions-v2.md new file mode 100644 index 0000000..00bfa43 --- /dev/null +++ b/entries/2025-12-30-subscriptions-v2.md @@ -0,0 +1,9 @@ +--- +title: Subscriptions v2 +date: 2025-12-30 +products: [snowflake-app, databricks-app, datamates] +tag: new +emoji: 🎯 +description: Redesigned alerting and notification subscriptions +--- + diff --git a/entries/2026-01-01-workload-sorting-and-filtering.md b/entries/2026-01-01-workload-sorting-and-filtering.md new file mode 100644 index 0000000..339b6fb --- /dev/null +++ b/entries/2026-01-01-workload-sorting-and-filtering.md @@ -0,0 +1,8 @@ +--- +title: Workload sorting and filtering on run list +date: 2026-01-01 +products: [snowflake-app, databricks-app] +emoji: 📋 +description: Sort runs by cost, duration, and more +--- + diff --git a/entries/2026-01-04-search-and-filters-on-datamates.md b/entries/2026-01-04-search-and-filters-on-datamates.md new file mode 100644 index 0000000..6b28a12 --- /dev/null +++ b/entries/2026-01-04-search-and-filters-on-datamates.md @@ -0,0 +1,8 @@ +--- +title: Search and filters on Datamates page +date: 2026-01-04 +products: [datamates] +emoji: 🔎 +description: Find data teammates faster with visibility controls +--- + diff --git a/entries/2026-01-07-ownership-conflict-indicators.md b/entries/2026-01-07-ownership-conflict-indicators.md new file mode 100644 index 0000000..1c6431d --- /dev/null +++ b/entries/2026-01-07-ownership-conflict-indicators.md @@ -0,0 +1,8 @@ +--- +title: Ownership conflict indicators +date: 2026-01-07 +products: [snowflake-app, databricks-app] +emoji: ⚠️ +description: See which teams have overlapping ownership rules +--- + diff --git a/entries/2026-01-10-azure-sso-support.md b/entries/2026-01-10-azure-sso-support.md new file mode 100644 index 0000000..18469e8 --- /dev/null +++ b/entries/2026-01-10-azure-sso-support.md @@ -0,0 +1,9 @@ +--- +title: Azure SSO support +date: 2026-01-10 +products: [snowflake-app, databricks-app, datamates, altimate-code, dbt-power-user] +tag: new +emoji: 🔐 +description: Single sign-on for Azure AD tenants +--- + diff --git a/entries/2026-01-13-pre-execution-query-optimization.md b/entries/2026-01-13-pre-execution-query-optimization.md new file mode 100644 index 0000000..8d6497c --- /dev/null +++ b/entries/2026-01-13-pre-execution-query-optimization.md @@ -0,0 +1,9 @@ +--- +title: Pre-execution query optimization tools +date: 2026-01-13 +products: [snowflake-app, databricks-app, datamates] +tag: new +emoji: 🤖 +description: Optimize SQL before it runs via MCP +--- + diff --git a/entries/2026-01-16-databricks-full-platform-support.md b/entries/2026-01-16-databricks-full-platform-support.md new file mode 100644 index 0000000..6a4e4a4 --- /dev/null +++ b/entries/2026-01-16-databricks-full-platform-support.md @@ -0,0 +1,9 @@ +--- +title: Databricks full platform support +date: 2026-01-16 +products: [databricks-app] +tag: new +emoji: ⚡ +description: Cost projections, opportunities, query costs, and filters +--- + diff --git a/entries/2026-01-19-custom-workload-tags.md b/entries/2026-01-19-custom-workload-tags.md new file mode 100644 index 0000000..91e3c42 --- /dev/null +++ b/entries/2026-01-19-custom-workload-tags.md @@ -0,0 +1,9 @@ +--- +title: Custom workload tags +date: 2026-01-19 +products: [snowflake-app, databricks-app] +tag: new +emoji: 🏷️ +description: Tag and categorize queries with custom labels +--- + diff --git a/entries/2026-01-22-workloads-time-interval-aggregation.md b/entries/2026-01-22-workloads-time-interval-aggregation.md new file mode 100644 index 0000000..ba2d1ae --- /dev/null +++ b/entries/2026-01-22-workloads-time-interval-aggregation.md @@ -0,0 +1,8 @@ +--- +title: Workloads time interval aggregation +date: 2026-01-22 +products: [snowflake-app, databricks-app] +emoji: 📈 +description: Aggregate workload charts by custom time periods +--- + diff --git a/entries/2026-01-25-dbt-cloud-integrations.md b/entries/2026-01-25-dbt-cloud-integrations.md new file mode 100644 index 0000000..c3687f5 --- /dev/null +++ b/entries/2026-01-25-dbt-cloud-integrations.md @@ -0,0 +1,9 @@ +--- +title: dbt Cloud integrations +date: 2026-01-25 +products: [dbt-power-user] +tag: new +emoji: 🔌 +description: Connect dbt Cloud directly to Altimate +--- + diff --git a/entries/2026-01-28-global-studio-launched-for-everyone.md b/entries/2026-01-28-global-studio-launched-for-everyone.md new file mode 100644 index 0000000..50f5cb9 --- /dev/null +++ b/entries/2026-01-28-global-studio-launched-for-everyone.md @@ -0,0 +1,9 @@ +--- +title: Global Studio launched for everyone +date: 2026-01-28 +products: [dbt-power-user, snowflake-app, databricks-app] +tag: new +emoji: 🚀 +description: AI-powered assistant available across all pages +--- + diff --git a/entries/2026-02-01-evaluation-system-improvements.md b/entries/2026-02-01-evaluation-system-improvements.md new file mode 100644 index 0000000..a154c9b --- /dev/null +++ b/entries/2026-02-01-evaluation-system-improvements.md @@ -0,0 +1,8 @@ +--- +title: Evaluation system improvements +date: 2026-02-01 +products: [datamates, altimate-code] +emoji: ⚙️ +description: New selectors, pagination, and run evaluation refactor +--- + diff --git a/entries/2026-02-08-sku-cost-page-databricks.md b/entries/2026-02-08-sku-cost-page-databricks.md new file mode 100644 index 0000000..33ff5f2 --- /dev/null +++ b/entries/2026-02-08-sku-cost-page-databricks.md @@ -0,0 +1,9 @@ +--- +title: SKU Cost page for Databricks +date: 2026-02-08 +products: [databricks-app] +tag: new +emoji: 💰 +description: Granular Databricks billing breakdown +--- + diff --git a/entries/2026-02-15-new-insightsection-ui.md b/entries/2026-02-15-new-insightsection-ui.md new file mode 100644 index 0000000..4bbc70b --- /dev/null +++ b/entries/2026-02-15-new-insightsection-ui.md @@ -0,0 +1,8 @@ +--- +title: New InsightSection UI enabled by default +date: 2026-02-15 +products: [snowflake-app, databricks-app, datamates] +emoji: 🔍 +description: Redesigned insight cards across the product +--- + diff --git a/entries/2026-02-22-ai-services-cost-monitoring.md b/entries/2026-02-22-ai-services-cost-monitoring.md new file mode 100644 index 0000000..7e23780 --- /dev/null +++ b/entries/2026-02-22-ai-services-cost-monitoring.md @@ -0,0 +1,9 @@ +--- +title: AI Services cost monitoring page +date: 2026-02-22 +products: [snowflake-app, databricks-app] +tag: new +emoji: 📊 +description: Track AI cost with graphs and summary tables +--- + diff --git a/entries/2026-02-28-knowledge-engine-ux-enhancements.md b/entries/2026-02-28-knowledge-engine-ux-enhancements.md new file mode 100644 index 0000000..1d76f94 --- /dev/null +++ b/entries/2026-02-28-knowledge-engine-ux-enhancements.md @@ -0,0 +1,9 @@ +--- +title: Knowledge Engine UX enhancements +date: 2026-02-28 +products: [datamates, dbt-power-user] +tag: improved +emoji: 🧠 +description: Improved docs and onboarding experience +--- + From d598d94bbdd7bc715badcbaaad6fd3c6f4febf21 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Wed, 13 May 2026 15:44:36 -0700 Subject: [PATCH 2/3] feat: add author byline + pixel avatar schema - New optional `authors` frontmatter field: ["Full Name:PIXEL_KEY", ...] - products.yml gains an `author_pixels` closed list (HUMAN, ROBOT, etc.) - validate.py validates pixel keys against that list - Updated May 2026 sample to show a fully-loaded entry (description, body, authors, multi-product) so the rendered card has something to expand into. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/scripts/validate.py | 38 +++++++++++++++++++++++++- entries/2026-05-13-changelog-launch.md | 18 ++++++++++-- products.yml | 22 +++++++++++++++ 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/.github/scripts/validate.py b/.github/scripts/validate.py index 9f77be7..8aa533f 100644 --- a/.github/scripts/validate.py +++ b/.github/scripts/validate.py @@ -50,9 +50,14 @@ LEADING_HEADING_RE = re.compile(r"^\s*#{1,6}\s+\S", re.MULTILINE) ALLOWED_FRONTMATTER_KEYS = { - "title", "date", "products", "tag", "emoji", "hero", "draft", "description", + "title", "date", "products", "tag", "emoji", "hero", "draft", + "description", "authors", } +# `authors` accepts lines of the form "Name:PIXEL_KEY". The split is at the +# *last* colon so names can contain colons if needed. +AUTHOR_RE = re.compile(r"^(.+):([A-Z][A-Z_]*)$") + def load_config() -> dict: with CONFIG_PATH.open() as fh: @@ -60,6 +65,7 @@ def load_config() -> dict: return { "product_slugs": {p["slug"] for p in config.get("products", [])}, "allowed_hosts": {h.lower() for h in config.get("allowed_hosts", [])}, + "author_pixels": set(config.get("author_pixels", [])), } @@ -177,6 +183,36 @@ def check_frontmatter( if draft is not None and not isinstance(draft, bool): errors.append(f"{rel}: draft must be a boolean if present") + # authors (optional) — list of "Name:PIXEL_KEY" strings + authors = front.get("authors") + if authors is not None: + if not isinstance(authors, list) or not authors: + errors.append( + f"{rel}: authors must be a non-empty list of " + f"\"Name:PIXEL_KEY\" strings if present" + ) + else: + for author in authors: + if not isinstance(author, str): + errors.append(f"{rel}: author {author!r} must be a string") + continue + match = AUTHOR_RE.match(author.strip()) + if not match: + errors.append( + f"{rel}: author {author!r} must be formatted as " + f"\"Full Name:PIXEL_KEY\" (e.g. \"Anand Gupta:ROBOT\")" + ) + continue + name, pixel = match.group(1).strip(), match.group(2) + if not name: + errors.append(f"{rel}: author has empty name in {author!r}") + if pixel not in config["author_pixels"]: + valid = ", ".join(sorted(config["author_pixels"])) + errors.append( + f"{rel}: author pixel {pixel!r} not allowed. " + f"Pick one of: {valid}" + ) + # hero (optional) hero = front.get("hero") if hero is not None: diff --git a/entries/2026-05-13-changelog-launch.md b/entries/2026-05-13-changelog-launch.md index 2860537..d48edb7 100644 --- a/entries/2026-05-13-changelog-launch.md +++ b/entries/2026-05-13-changelog-launch.md @@ -4,8 +4,22 @@ date: 2026-05-13 products: [dbt-power-user, snowflake-app, databricks-app, altimate-code, datamates] tag: new emoji: 📜 +authors: ["Anand Gupta:ROBOT", "Claude Opus 4.7:CHIP"] +description: A new GitHub-backed source for the changelog — any engineer can ship an entry by opening a PR. --- -The changelog at [altimate.ai/changelog](https://altimate.ai/changelog) is now sourced from a separate public repo. Any engineer can ship an entry by opening a PR — no website redeploy required, and new entries appear within a few minutes of merge. +The changelog at [altimate.ai/changelog](https://altimate.ai/changelog) is now sourced from a separate public repo at [github.com/AltimateAI/changelog](https://github.com/AltimateAI/changelog). Any engineer can ship an entry by opening a PR. No website redeploy required — new entries appear on the page within a few minutes of merge. -See [the contributor guide](https://github.com/AltimateAI/changelog) for the format and CI rules. +## How to add an entry + +Three options, in order of friction: + +1. **`/changelog-add`** — run Claude Code in the repo and let it draft the entry from a one-line description. +2. **Hand-write** the markdown using the template in [the README](https://github.com/AltimateAI/changelog). +3. **`/changelog-polish`** — paste a draft you wrote, get a STYLE.md-aware rewrite back. + +CI validates the schema on every PR — frontmatter, body length, link allowlist, no internal jargon. A pre-commit hook runs the same checks locally so you catch failures before pushing. + +## What you can put in an entry + +Everything you'd want to share with a customer: links, screenshots, embedded Loom or YouTube videos, code snippets, and a `// SHIPPED BY` footer crediting the engineers who built it. Each author picks a pixel-art avatar that flips in place when the page loads. diff --git a/products.yml b/products.yml index c54acf8..d1da47f 100644 --- a/products.yml +++ b/products.yml @@ -16,6 +16,28 @@ products: # Hosts allowed in body links, hero media, and image sources. # Anything outside this list is rejected at CI to keep the changelog free of # random third-party embeds. +# Pixel-art keys engineers can pick as their byline avatar. Each name maps +# to a 32x32 pixel illustration in altimate-website/src/components/v2/illustrations.js. +# Keep this in sync if illustrations are added/removed there. +author_pixels: + - HUMAN + - ROBOT + - GLOBE + - BOLT + - HEX + - TERMINAL + - TEAM + - ORBIT + - COIN + - ALERT + - HOURGLASS + - DOLLAR + - BRACKETS + - CODE_WINDOW + - GRID + - STACK + - CHIP + allowed_hosts: - youtube.com - www.youtube.com From 4446c5038680d787e720bc493d529eacc547e652 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Wed, 13 May 2026 15:51:35 -0700 Subject: [PATCH 3/3] feat: enrich 7 entries with body content + author bylines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Demonstrates the expanded card UI: body markdown rendered with mono headings, v2-styled inline code, and a `// SHIPPED BY` footer with pixel-art avatars. Enriched entries: - 2026-05-13 New changelog (Anand Gupta + Claude Opus 4.7) - 2026-02-28 Knowledge Engine UX (Knowledge Engine Team) - 2026-02-22 AI Services cost monitoring (Cost Insights Team) - 2026-01-28 Global Studio (Studio Team + Anand Gupta) - 2026-01-16 Databricks full platform support (Databricks Team) - 2026-01-13 Pre-execution query optimization (AI Agents Team + Anand Gupta) - 2025-12-30 Subscriptions v2 (Platform Team) - 2025-12-12 Query analysis agent (AI Agents + Studio Teams) Author names are placeholders — swap with real engineer names before merging. The pixel keys (ORBIT, ROBOT, HEX, CHIP, etc.) drive the avatars and can be mixed and matched per engineer. Co-Authored-By: Claude Opus 4.7 (1M context) --- entries/2025-12-12-query-analysis-agent.md | 4 ++++ entries/2025-12-30-subscriptions-v2.md | 4 ++++ entries/2026-01-13-pre-execution-query-optimization.md | 4 ++++ entries/2026-01-16-databricks-full-platform-support.md | 4 ++++ entries/2026-01-28-global-studio-launched-for-everyone.md | 4 ++++ entries/2026-02-22-ai-services-cost-monitoring.md | 4 ++++ entries/2026-02-28-knowledge-engine-ux-enhancements.md | 4 ++++ 7 files changed, 28 insertions(+) diff --git a/entries/2025-12-12-query-analysis-agent.md b/entries/2025-12-12-query-analysis-agent.md index 6748cb1..61ead2a 100644 --- a/entries/2025-12-12-query-analysis-agent.md +++ b/entries/2025-12-12-query-analysis-agent.md @@ -4,6 +4,10 @@ date: 2025-12-12 products: [snowflake-app, databricks-app] tag: new emoji: 🗺️ +authors: ["AI Agents Team:CHIP", "Studio Team:ORBIT"] description: AI-powered deep analysis of individual queries --- +Click any query in the workload view and the analysis agent walks through it: which scans dominate the cost, which predicates are getting pruned (and which aren't), where clustering would help, and whether the same shape has been run before with different parameters. + +Output lands as an inline report with a one-paragraph summary, a cost-saving estimate, and a "try this rewrite" suggestion. The agent runs on the platform's standard reasoning trace so you can audit how it reached every conclusion before acting on it. diff --git a/entries/2025-12-30-subscriptions-v2.md b/entries/2025-12-30-subscriptions-v2.md index 00bfa43..a1cd213 100644 --- a/entries/2025-12-30-subscriptions-v2.md +++ b/entries/2025-12-30-subscriptions-v2.md @@ -4,6 +4,10 @@ date: 2025-12-30 products: [snowflake-app, databricks-app, datamates] tag: new emoji: 🎯 +authors: ["Platform Team:BOLT"] description: Redesigned alerting and notification subscriptions --- +Subscriptions v2 reduces alert fatigue. Subscriptions now group by warehouse, by workload, and by ownership, so you get one notification per pattern instead of one per spike. + +Channel routing supports Slack threads and Teams cards as first-class destinations alongside email. The redesigned manager page lets you preview what you'd actually receive over the trailing 30 days before saving, so you can tune thresholds before they start paging people. diff --git a/entries/2026-01-13-pre-execution-query-optimization.md b/entries/2026-01-13-pre-execution-query-optimization.md index 8d6497c..6498ed0 100644 --- a/entries/2026-01-13-pre-execution-query-optimization.md +++ b/entries/2026-01-13-pre-execution-query-optimization.md @@ -4,6 +4,10 @@ date: 2026-01-13 products: [snowflake-app, databricks-app, datamates] tag: new emoji: 🤖 +authors: ["AI Agents Team:CHIP", "Anand Gupta:ROBOT"] description: Optimize SQL before it runs via MCP --- +When an agent or a person asks to run a query, the optimizer steps in before execution. It checks the predicate against clustering keys, looks for `SELECT *` on wide tables, flags joins missing predicates, and proposes a rewrite. + +The agent sees the proposal as a suggestion it can apply automatically. The human sees it as an inline diff in their IDE. Either way, the optimization runs through the MCP layer — so it works from CLI, IDE, Studio, and any agent built on the Altimate platform, with no separate setup per surface. diff --git a/entries/2026-01-16-databricks-full-platform-support.md b/entries/2026-01-16-databricks-full-platform-support.md index 6a4e4a4..d2ea7a2 100644 --- a/entries/2026-01-16-databricks-full-platform-support.md +++ b/entries/2026-01-16-databricks-full-platform-support.md @@ -4,6 +4,10 @@ date: 2026-01-16 products: [databricks-app] tag: new emoji: ⚡ +authors: ["Databricks Team:HEX"] description: Cost projections, opportunities, query costs, and filters --- +The Databricks App now matches everything that was on the Snowflake side: cost projections across SKUs, optimization opportunities flagged automatically, query-level cost attribution, and the same filter and grouping primitives. + +Connect once through Datamates and the catalog, lineage, and cost views populate. If you're running a hybrid Snowflake plus Databricks stack, both warehouses feed the same workload views and the same governance rules — no two-tool sprawl. diff --git a/entries/2026-01-28-global-studio-launched-for-everyone.md b/entries/2026-01-28-global-studio-launched-for-everyone.md index 50f5cb9..dfa874f 100644 --- a/entries/2026-01-28-global-studio-launched-for-everyone.md +++ b/entries/2026-01-28-global-studio-launched-for-everyone.md @@ -4,6 +4,10 @@ date: 2026-01-28 products: [dbt-power-user, snowflake-app, databricks-app] tag: new emoji: 🚀 +authors: ["Studio Team:ORBIT", "Anand Gupta:ROBOT"] description: AI-powered assistant available across all pages --- +Studio is now available everywhere on the platform, not just inside the dbt Power User extension. Open it from any page and ask questions across your entire data stack: queries against Snowflake, lineage in Databricks, dbt model context, and incident history all in one conversation. + +The same skills, tools, and governance you configure once apply to every conversation. Behind it sits the Datamates MCP engine, so every connection is validated and every credential is managed centrally. Studio doesn't ask for warehouse credentials per session — it pulls them through Datamates so engineers and analysts don't share passwords. diff --git a/entries/2026-02-22-ai-services-cost-monitoring.md b/entries/2026-02-22-ai-services-cost-monitoring.md index 7e23780..a5d9bdf 100644 --- a/entries/2026-02-22-ai-services-cost-monitoring.md +++ b/entries/2026-02-22-ai-services-cost-monitoring.md @@ -4,6 +4,10 @@ date: 2026-02-22 products: [snowflake-app, databricks-app] tag: new emoji: 📊 +authors: ["Cost Insights Team:DOLLAR"] description: Track AI cost with graphs and summary tables --- +AI Services has a dedicated cost monitoring page. Graphs show daily and monthly spend broken down by model, gateway, and which agent or skill made the call. + +The summary table at the bottom calls out outliers: agents whose cost-per-task spiked, gateways getting hit more than expected, models that are quietly migrating up the price tier. Click through any row to see the underlying queries and the conversations that triggered them. diff --git a/entries/2026-02-28-knowledge-engine-ux-enhancements.md b/entries/2026-02-28-knowledge-engine-ux-enhancements.md index 1d76f94..48c4656 100644 --- a/entries/2026-02-28-knowledge-engine-ux-enhancements.md +++ b/entries/2026-02-28-knowledge-engine-ux-enhancements.md @@ -4,6 +4,10 @@ date: 2026-02-28 products: [datamates, dbt-power-user] tag: improved emoji: 🧠 +authors: ["Knowledge Engine Team:GLOBE"] description: Improved docs and onboarding experience --- +The Knowledge Engine onboarding now walks you through your first three connections — warehouse, lineage source, and ownership data — with inline previews so you can see what each one unlocks before committing. + +Docs got a full pass too. The "what counts as context" page now has a working example for each of the four context types, and every page links to the exact MCP tool that consumes it.