From 8317def6393d1b9b2287831229044c571125a529 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 00:30:27 +0200 Subject: [PATCH 01/13] docs: add 3.17.0 changelog --- docs/changelog/bytebase-3-17-0.mdx | 120 +++++++++++++++++++++++++++++ docs/docs.json | 1 + 2 files changed, 121 insertions(+) create mode 100644 docs/changelog/bytebase-3-17-0.mdx diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx new file mode 100644 index 00000000..397f7d16 --- /dev/null +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -0,0 +1,120 @@ +--- +title: Bytebase 3.17.0 - Apr 9, 2026 +author: Adela +updated_at: 2026/04/09 18:00:00 +description: 'Unified Plan Lifecycle View, High Availability' + +--- + +import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; + +## 🔔 Notable Changes + +- **Unified Plan lifecycle view** — Review and rollout now appear in a single Plan detail page, giving developers one place to follow a change from draft to deployment. + +- **Remove Pro plan 20-user seat cap** — Pro plan no longer has a user limit. + +- **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, and `UpdateSubscription` API replaced by `UploadLicense`. See [Change Details](<#api-breaking-changes>). + +- **CEL filter syntax change** — Substring-search filters now use `contains()` instead of `matches()` across plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. See [Change Details](<#cel-filter-syntax-change>). + +- **Classification setting API breaking changes** — Classification description and level description fields removed. Classification level type changes from string to number. + +- **Terraform provider** — Migrate for 3.17.0 API breaking changes. Support get, create, update, and list identity provider. + +## 🚀 Features + +- **High Availability (HA)** — Support licensed multi-replica deployments backed by a shared external PostgreSQL metadata database. Active replicas are tracked via heartbeats, and background runners coordinate safely across replicas. + +- **Page Agent** — Add an in-app AI assistant with tool-calling, threaded resumable conversations, DOM-aware autocomplete, and token usage tracking. + +- **Issue Approved webhook event** — Support a new webhook event type for issue approval, with redesigned Slack message format. + +- **MCP `query_database` tool** — Add a new MCP tool for executing SQL queries against managed databases with automatic database resolution. + +- **CosmosDB** — Support local emulator connection and dynamic data masking for all 13 query feature areas. + +## 🎄 Enhancements + +- Support executing stored procedures (`CALL` / `EXEC`) in SQL Editor by classifying stored procedure execution as DML. + +- Support issue type filter in advanced search (Database Change, Role Grant, Database Export, Access Grant). + +- Replace data classification file upload with an inline JSON editor and enhance the data classification editor. + +- Redesign masking exemption list page with classification level support. + +- Auto-expand sidebar group for the active route. + +- Migrate the frontend from Vue to React across all major pages including settings, projects, databases, instances, plans, issues, and audit logs. + +- Upgrade SQL parsing engine for PostgreSQL, MySQL, MSSQL, MongoDB, and CosmosDB from ANTLR to omni parser, improving SQL syntax coverage, consistency across SQL review / schema diff / auto-completion, and error message quality. + +- Add configurable `--timeout` flag for `bytebase-action` for large SQL checks. + +- Expose `--enable-json-logging` flag in the Helm chart for structured log output. + + +## 🐞 Bug Fixes + +- Fix false schema diff noise caused by PostgreSQL trigger ordering and CRLF / whitespace normalization. + +- Fix automatic rollout not working. + +- Fix startup crash from nil licenseService and non-idempotent migration. + +- Fix SQL editor metadata sync retry flood. + +- Fix OAuth discovery to return usable URLs in self-hosted mode. + +- Fix SSO GitHub email fetch. + +- Fix stale debounced query reverts in advanced search. + +- Fix data export creation to issue-scoped flow and initialize export format correctly. + +- Fix gh-ost directives in versioned release workflow. + +- Fix various UI issues: dropdown z-index clipping, popover dismiss on label selector interaction, CEL constraint preservation after role deletion, environment dashboard responsive layout, and button label standardization. + +- **PostgreSQL** — Fix CRLF line endings causing query truncation in SQL splitter, schema load failure by excluding aggregates from function sync, array subscript handling in column reference normalization, whitespace between LIMIT and FOR UPDATE clause, nested SELECTs in wrapper statements and CTEs for SQL review, and PolarDB `pg_bitmapindex` schema appearing in dumps. + +- **MySQL** — Fix unqualified SET columns in prior backup for UPDATE JOIN, missing `multiStatements` param in IAM auth DSN, and role sync for anonymous users. + +- **TiDB** — Remove non-transaction statement handling. + +- **Oracle** — Strip trailing null bytes from schema definitions. + + + +## 📃 Change Details + +### API Breaking Changes + +| Change | Before | After | +| -- | -- | -- | +| Worksheet API path | `/v1/worksheets` | `/v1/projects/{id}/worksheets` | +| ListDatabases scope | `/v1/workspaces/-/databases` | `/v1/workspaces/{id}/databases` | +| Branding logo | `branding_logo` in workspace profile setting | `logo` field on workspace message | +| Issue type enum | `GRANT_REQUEST` | `ROLE_GRANT` | +| Subscription API | `PATCH /v1/subscription` | `PATCH /v1/subscription/license` (renamed to `UploadLicense`) | +| Data source ID | Required explicit `data_source_id` in query API | Auto-resolved server-side; at most one read-only data source per instance (extra read-only data sources removed during migration) | +| Classification level | `string` type with `description` field | `int` type, `description` removed | + +### CEL Filter Syntax Change + +Substring-search CEL filters now use `contains()` instead of `matches()`. Affected fields: + +| Field | Example Before | Example After | +| -- | -- | -- | +| `title` | `title.matches("database migration")` | `title.contains("database migration")` | +| `name` | `name.matches("employee")` | `name.contains("employee")` | +| `resource_id` | `resource_id.matches("prod")` | `resource_id.contains("prod")` | +| `email` | `email.matches("admin")` | `email.contains("admin")` | +| `host` | `host.matches("10.0")` | `host.contains("10.0")` | +| `port` | `port.matches("5432")` | `port.contains("5432")` | +| `statement` | `statement.matches("select")` | `statement.contains("select")` | +| `query` | `query.matches("insert")` | `query.contains("insert")` | +| `table` | `table.matches("users")` | `table.contains("users")` | + +Applies to: plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. diff --git a/docs/docs.json b/docs/docs.json index 03c283ab..65fc7f85 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -369,6 +369,7 @@ { "tab": "Changelog", "pages": [ + "changelog/bytebase-3-17-0", "changelog/bytebase-3-16-1", "changelog/bytebase-3-16-0", "changelog/bytebase-3-15-1", From ba11521ff9dce8ad9ef48177cc760f45f1300f2f Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 07:54:56 +0200 Subject: [PATCH 02/13] update tf link --- docs/changelog/bytebase-3-17-0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 397f7d16..dca096d8 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -20,7 +20,7 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - **Classification setting API breaking changes** — Classification description and level description fields removed. Classification level type changes from string to number. -- **Terraform provider** — Migrate for 3.17.0 API breaking changes. Support get, create, update, and list identity provider. +- **Terraform provider** — Migrate for 3.17.0 API breaking changes. Support get, create, update, and list identity provider. See [Migration Guide](https://github.com/bytebase/terraform-provider-bytebase/blob/main/migration/3.17.0.md). ## 🚀 Features From 4113d5290fe5dd9902a4a9c16f91c9f395dc4559 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 09:39:33 +0200 Subject: [PATCH 03/13] remove mssql from omni part --- docs/changelog/bytebase-3-17-0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index dca096d8..dee2b2c5 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -48,7 +48,7 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - Migrate the frontend from Vue to React across all major pages including settings, projects, databases, instances, plans, issues, and audit logs. -- Upgrade SQL parsing engine for PostgreSQL, MySQL, MSSQL, MongoDB, and CosmosDB from ANTLR to omni parser, improving SQL syntax coverage, consistency across SQL review / schema diff / auto-completion, and error message quality. +- Upgrade SQL parsing engine for PostgreSQL, MySQL, MongoDB, and CosmosDB from ANTLR to omni parser, improving SQL syntax coverage, consistency across SQL review / schema diff / auto-completion, and error message quality. - Add configurable `--timeout` flag for `bytebase-action` for large SQL checks. From 6f47f57d2ebde6d35ebc6d44987722f086634fa3 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 10:38:01 +0200 Subject: [PATCH 04/13] fix --- docs/changelog/bytebase-3-17-0.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index dee2b2c5..6976cfa4 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -14,7 +14,9 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - **Remove Pro plan 20-user seat cap** — Pro plan no longer has a user limit. -- **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, and `UpdateSubscription` API replaced by `UploadLicense`. See [Change Details](<#api-breaking-changes>). +- **Read-only data source consolidation** — Each instance now allows at most one read-only data source. If more than one is configured, only the first is kept after migration; extra read-only data sources are removed. + +- **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, and `UpdateSubscription` API deprecated in favor of `UploadLicense`. See [Change Details](<#api-breaking-changes>). - **CEL filter syntax change** — Substring-search filters now use `contains()` instead of `matches()` across plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. See [Change Details](<#cel-filter-syntax-change>). From 3dd8ce41440f81c80dd237ef7587dc9b0e76d384 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:27:42 +0200 Subject: [PATCH 05/13] update --- docs/changelog/bytebase-3-17-0.mdx | 46 ++++++++++++------------------ 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 6976cfa4..fafb75f4 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -12,15 +12,13 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - **Unified Plan lifecycle view** — Review and rollout now appear in a single Plan detail page, giving developers one place to follow a change from draft to deployment. -- **Remove Pro plan 20-user seat cap** — Pro plan no longer has a user limit. - -- **Read-only data source consolidation** — Each instance now allows at most one read-only data source. If more than one is configured, only the first is kept after migration; extra read-only data sources are removed. - -- **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, and `UpdateSubscription` API deprecated in favor of `UploadLicense`. See [Change Details](<#api-breaking-changes>). +- **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, `UpdateSubscription` API deprecated in favor of `UploadLicense`, and classification description and level description fields removed with level type changed from string to number. See [Change Details](<#api-breaking-changes>). - **CEL filter syntax change** — Substring-search filters now use `contains()` instead of `matches()` across plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. See [Change Details](<#cel-filter-syntax-change>). -- **Classification setting API breaking changes** — Classification description and level description fields removed. Classification level type changes from string to number. +- **Read-only data source consolidation** — Each instance now allows at most one read-only data source. If more than one is configured, only the first is kept after migration; extra read-only data sources are removed. + +- **Remove Pro plan 20-user seat cap** — Pro plan no longer has a user limit. - **Terraform provider** — Migrate for 3.17.0 API breaking changes. Support get, create, update, and list identity provider. See [Migration Guide](https://github.com/bytebase/terraform-provider-bytebase/blob/main/migration/3.17.0.md). @@ -44,9 +42,9 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - Replace data classification file upload with an inline JSON editor and enhance the data classification editor. -- Redesign masking exemption list page with classification level support. +- Support masking exemption by classification level, and redesign masking exemption list page. -- Auto-expand sidebar group for the active route. +- Redesign data export creation UI. - Migrate the frontend from Vue to React across all major pages including settings, projects, databases, instances, plans, issues, and audit logs. @@ -63,23 +61,15 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - Fix automatic rollout not working. -- Fix startup crash from nil licenseService and non-idempotent migration. - - Fix SQL editor metadata sync retry flood. - Fix OAuth discovery to return usable URLs in self-hosted mode. -- Fix SSO GitHub email fetch. - - Fix stale debounced query reverts in advanced search. -- Fix data export creation to issue-scoped flow and initialize export format correctly. +- Fix gh-ost directives in migration-based GitOps workflow. -- Fix gh-ost directives in versioned release workflow. - -- Fix various UI issues: dropdown z-index clipping, popover dismiss on label selector interaction, CEL constraint preservation after role deletion, environment dashboard responsive layout, and button label standardization. - -- **PostgreSQL** — Fix CRLF line endings causing query truncation in SQL splitter, schema load failure by excluding aggregates from function sync, array subscript handling in column reference normalization, whitespace between LIMIT and FOR UPDATE clause, nested SELECTs in wrapper statements and CTEs for SQL review, and PolarDB `pg_bitmapindex` schema appearing in dumps. +- **PostgreSQL** — Fix CRLF line endings causing query truncation in SQL splitter, schema load failure by excluding aggregates from function sync, array subscript handling in column reference normalization, whitespace between LIMIT and FOR UPDATE clause, and nested SELECTs in wrapper statements and CTEs for SQL review. - **MySQL** — Fix unqualified SET columns in prior backup for UPDATE JOIN, missing `multiStatements` param in IAM auth DSN, and role sync for anonymous users. @@ -93,15 +83,15 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; ### API Breaking Changes -| Change | Before | After | -| -- | -- | -- | -| Worksheet API path | `/v1/worksheets` | `/v1/projects/{id}/worksheets` | -| ListDatabases scope | `/v1/workspaces/-/databases` | `/v1/workspaces/{id}/databases` | -| Branding logo | `branding_logo` in workspace profile setting | `logo` field on workspace message | -| Issue type enum | `GRANT_REQUEST` | `ROLE_GRANT` | -| Subscription API | `PATCH /v1/subscription` | `PATCH /v1/subscription/license` (renamed to `UploadLicense`) | -| Data source ID | Required explicit `data_source_id` in query API | Auto-resolved server-side; at most one read-only data source per instance (extra read-only data sources removed during migration) | -| Classification level | `string` type with `description` field | `int` type, `description` removed | +| Change | Affected Routes | Before | After | +| -- | -- | -- | -- | +| Worksheet API path | All worksheet endpoints | `/v1/worksheets` | `/v1/projects/{id}/worksheets` | +| ListDatabases scope | `GET /v1/{parent=workspaces/*}/databases` | `/v1/workspaces/-/databases` | `/v1/workspaces/{id}/databases` | +| Branding logo | `GET/PATCH /v1/workspaces/{id}` | `branding_logo` in workspace profile setting | `logo` field on workspace message | +| Issue type enum | `POST /v1/{parent=projects/*}/issues`, `GET /v1/{parent=projects/*}/issues`, `POST /v1/{parent=projects/*}/issues:search` | `GRANT_REQUEST` | `ROLE_GRANT` | +| Subscription API | `PATCH /v1/subscription` | `PATCH /v1/subscription` | `PATCH /v1/subscription/license` (deprecated, use `UploadLicense`) | +| Data source ID | `POST /v1/{name=instances/*/databases/*}:query`, `POST /v1/{name=instances/*/databases/*}:export` | Required explicit `data_source_id` | Auto-resolved server-side; at most one read-only data source per instance (extra removed during migration) | +| Classification level | `GET/PATCH /v1/settings/{name}`, `POST /v1/queryHistories:search` | `string` type with `description` field | `int` type, `description` removed | ### CEL Filter Syntax Change @@ -119,4 +109,4 @@ Substring-search CEL filters now use `contains()` instead of `matches()`. Affect | `query` | `query.matches("insert")` | `query.contains("insert")` | | `table` | `table.matches("users")` | `table.contains("users")` | -Applies to: plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. +Affected routes: `GET /v1/{parent=projects/*}/plans` (ListPlans), `GET /v1/{parent=projects/*}/databases` (ListDatabases), `GET /v1/{parent=workspaces/*}/databases` (ListDatabases), `GET /v1/instances` (ListInstances), and other list endpoints for project, group, user, service account, workload identity, query history, and access grant. From d1eded692b015ad85648fe103d75e488fea18a75 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:28:32 +0200 Subject: [PATCH 06/13] update --- docs/changelog/bytebase-3-17-0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index fafb75f4..1626754a 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -10,7 +10,7 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; ## 🔔 Notable Changes -- **Unified Plan lifecycle view** — Review and rollout now appear in a single Plan detail page, giving developers one place to follow a change from draft to deployment. +- **Unified Plan lifecycle view** — The Plan detail page now shows the full lifecycle of a database change — change, review, deploy — in sections, allowing developers to edit change, view approval result, and execute deployment in this single page. Issue page is now dedicated primarily for review and approval. Developer will need to go to plan page to edit changes and create rollout when needed. - **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, `UpdateSubscription` API deprecated in favor of `UploadLicense`, and classification description and level description fields removed with level type changed from string to number. See [Change Details](<#api-breaking-changes>). From 6fad872ecae56b83955c6fa24ec49270ff447b1f Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:29:39 +0200 Subject: [PATCH 07/13] update --- docs/changelog/bytebase-3-17-0.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 1626754a..6a0e5b1d 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -10,7 +10,9 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; ## 🔔 Notable Changes -- **Unified Plan lifecycle view** — The Plan detail page now shows the full lifecycle of a database change — change, review, deploy — in sections, allowing developers to edit change, view approval result, and execute deployment in this single page. Issue page is now dedicated primarily for review and approval. Developer will need to go to plan page to edit changes and create rollout when needed. +- **Unified Plan lifecycle view** — the Plan detail page shows the full lifecycle of a database change, giving developers one place to follow a change from draft to deployment. + - The three phases of a database change — change, review, deploy — are shown in sections, allowing developers to edit change, view approval result, and execute deployment in this single page. + - Issue page is now dedicated primarily for review and approval. Developer will need to go to plan page to edit changes and create rollout when needed. - **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, `UpdateSubscription` API deprecated in favor of `UploadLicense`, and classification description and level description fields removed with level type changed from string to number. See [Change Details](<#api-breaking-changes>). From c0836ccd1f7159c71f3007053fcfa9ebc9a8d577 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:30:28 +0200 Subject: [PATCH 08/13] fix --- docs/changelog/bytebase-3-17-0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 6a0e5b1d..600eca36 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -2,7 +2,7 @@ title: Bytebase 3.17.0 - Apr 9, 2026 author: Adela updated_at: 2026/04/09 18:00:00 -description: 'Unified Plan Lifecycle View, High Availability' +description: 'Unified Plan Lifecycle View & High Availability' --- From fb9b9faef06856e6b08e70506489c5dea0aba9c1 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:31:30 +0200 Subject: [PATCH 09/13] update --- docs/changelog/bytebase-3-17-0.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 600eca36..c572ba99 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -61,8 +61,6 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - Fix false schema diff noise caused by PostgreSQL trigger ordering and CRLF / whitespace normalization. -- Fix automatic rollout not working. - - Fix SQL editor metadata sync retry flood. - Fix OAuth discovery to return usable URLs in self-hosted mode. From 070d7c84a95dcfe1f7f772063d0621bf0f996649 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:35:25 +0200 Subject: [PATCH 10/13] update --- docs/changelog/bytebase-3-17-0.mdx | 34 ++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index c572ba99..80ef9fc1 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -83,15 +83,31 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; ### API Breaking Changes -| Change | Affected Routes | Before | After | -| -- | -- | -- | -- | -| Worksheet API path | All worksheet endpoints | `/v1/worksheets` | `/v1/projects/{id}/worksheets` | -| ListDatabases scope | `GET /v1/{parent=workspaces/*}/databases` | `/v1/workspaces/-/databases` | `/v1/workspaces/{id}/databases` | -| Branding logo | `GET/PATCH /v1/workspaces/{id}` | `branding_logo` in workspace profile setting | `logo` field on workspace message | -| Issue type enum | `POST /v1/{parent=projects/*}/issues`, `GET /v1/{parent=projects/*}/issues`, `POST /v1/{parent=projects/*}/issues:search` | `GRANT_REQUEST` | `ROLE_GRANT` | -| Subscription API | `PATCH /v1/subscription` | `PATCH /v1/subscription` | `PATCH /v1/subscription/license` (deprecated, use `UploadLicense`) | -| Data source ID | `POST /v1/{name=instances/*/databases/*}:query`, `POST /v1/{name=instances/*/databases/*}:export` | Required explicit `data_source_id` | Auto-resolved server-side; at most one read-only data source per instance (extra removed during migration) | -| Classification level | `GET/PATCH /v1/settings/{name}`, `POST /v1/queryHistories:search` | `string` type with `description` field | `int` type, `description` removed | +**1. Worksheet API moves to project scope:** + +| Method | Before | After | +| -- | -- | -- | +| List | `/v1/worksheets` | `/v1/{parent=projects/*}/worksheets` | +| Get | `/v1/{name=worksheets/*}` | `/v1/{name=projects/*/worksheets/*}` | +| Create | `/v1/worksheets` | `/v1/{parent=projects/*}/worksheets` | +| Update | `/v1/{worksheet.name=worksheets/*}` | `/v1/{worksheet.name=projects/*/worksheets/*}` | +| Delete | `/v1/{name=worksheets/*}` | `/v1/{name=projects/*/worksheets/*}` | + +**2. APIs that no longer accept** `workspaces/-` (must use `workspaces/{id}`): + +| Service | Affected Operations | +| -- | -- | +| DatabaseService | `ListDatabases` | + +**3. Other breaking changes:** + +| Change | Affected Routes | Details | +| -- | -- | -- | +| Branding logo | `GET/PATCH /v1/workspaces/{id}` | `branding_logo` removed from workspace profile setting; use `logo` field on workspace message | +| Issue type enum | `POST /v1/{parent=projects/*}/issues`, `GET /v1/{parent=projects/*}/issues`, `POST /v1/{parent=projects/*}/issues:search` | `GRANT_REQUEST` renamed to `ROLE_GRANT` | +| Subscription API | `PATCH /v1/subscription` | Deprecated; use `PATCH /v1/subscription/license` (`UploadLicense`) | +| Data source ID | `POST /v1/{name=instances/*/databases/*}:query`, `POST /v1/{name=instances/*/databases/*}:export` | `data_source_id` auto-resolved server-side; at most one read-only data source per instance (extra removed during migration) | +| Classification level | `GET/PATCH /v1/settings/{name}`, `POST /v1/queryHistories:search` | Level type changed from `string` to `int`; `description` field removed | ### CEL Filter Syntax Change From 9d45a3e751e97b93c1bd95de2c3107de53e167c8 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:41:39 +0200 Subject: [PATCH 11/13] update --- docs/changelog/bytebase-3-17-0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 80ef9fc1..49eb755a 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -125,4 +125,4 @@ Substring-search CEL filters now use `contains()` instead of `matches()`. Affect | `query` | `query.matches("insert")` | `query.contains("insert")` | | `table` | `table.matches("users")` | `table.contains("users")` | -Affected routes: `GET /v1/{parent=projects/*}/plans` (ListPlans), `GET /v1/{parent=projects/*}/databases` (ListDatabases), `GET /v1/{parent=workspaces/*}/databases` (ListDatabases), `GET /v1/instances` (ListInstances), and other list endpoints for project, group, user, service account, workload identity, query history, and access grant. +Applies to all list endpoints that support CEL filter: plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table. From e4020ac562d786681909823685a1a9085f147431 Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 13:51:41 +0200 Subject: [PATCH 12/13] update --- docs/changelog/bytebase-3-17-0.mdx | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 49eb755a..38ef8d20 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -111,18 +111,6 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; ### CEL Filter Syntax Change -Substring-search CEL filters now use `contains()` instead of `matches()`. Affected fields: +Substring-search CEL filters now use `contains()` instead of `matches()`. Existing clients that send filters such as `title.matches("...")`, `name.matches("...")`, `resource_id.matches("...")`, `email.matches("...")`, `host.matches("...")`, `port.matches("...")`, `statement.matches("...")`, `query.matches("...")`, or `table.matches("...")` must switch to the corresponding `contains()` form. -| Field | Example Before | Example After | -| -- | -- | -- | -| `title` | `title.matches("database migration")` | `title.contains("database migration")` | -| `name` | `name.matches("employee")` | `name.contains("employee")` | -| `resource_id` | `resource_id.matches("prod")` | `resource_id.contains("prod")` | -| `email` | `email.matches("admin")` | `email.contains("admin")` | -| `host` | `host.matches("10.0")` | `host.contains("10.0")` | -| `port` | `port.matches("5432")` | `port.contains("5432")` | -| `statement` | `statement.matches("select")` | `statement.contains("select")` | -| `query` | `query.matches("insert")` | `query.contains("insert")` | -| `table` | `table.matches("users")` | `table.contains("users")` | - -Applies to all list endpoints that support CEL filter: plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table. +This applies to plan, database, instance, project, group, user, service account, workload identity, query history, access grant, and database metadata table filters. \ No newline at end of file From 35fa60caa259caa62b7c262293fa192b3934c13e Mon Sep 17 00:00:00 2001 From: adela Date: Thu, 9 Apr 2026 14:30:54 +0200 Subject: [PATCH 13/13] fix --- docs/changelog/bytebase-3-17-0.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog/bytebase-3-17-0.mdx b/docs/changelog/bytebase-3-17-0.mdx index 38ef8d20..942287ae 100644 --- a/docs/changelog/bytebase-3-17-0.mdx +++ b/docs/changelog/bytebase-3-17-0.mdx @@ -12,7 +12,7 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - **Unified Plan lifecycle view** — the Plan detail page shows the full lifecycle of a database change, giving developers one place to follow a change from draft to deployment. - The three phases of a database change — change, review, deploy — are shown in sections, allowing developers to edit change, view approval result, and execute deployment in this single page. - - Issue page is now dedicated primarily for review and approval. Developer will need to go to plan page to edit changes and create rollout when needed. + - Issue page is now dedicated primarily for review and approval. Developers will need to go to the plan page to edit changes and create a rollout when needed. - **API breaking changes** — Worksheet API moves to project scope (`/v1/projects/{id}/worksheets`), `ListDatabases` now requires workspace ID (`/v1/workspaces/{id}/databases`), `branding_logo` moves from workspace profile setting to workspace message, `GRANT_REQUEST` issue type renamed to `ROLE_GRANT`, `UpdateSubscription` API deprecated in favor of `UploadLicense`, and classification description and level description fields removed with level type changed from string to number. See [Change Details](<#api-breaking-changes>). @@ -22,7 +22,7 @@ import InstallUpgrade from '/snippets/install/install-upgrade.mdx'; - **Remove Pro plan 20-user seat cap** — Pro plan no longer has a user limit. -- **Terraform provider** — Migrate for 3.17.0 API breaking changes. Support get, create, update, and list identity provider. See [Migration Guide](https://github.com/bytebase/terraform-provider-bytebase/blob/main/migration/3.17.0.md). +- **Terraform provider** — Updated for 3.17.0 API breaking changes. Supports get, create, update, and list identity providers. See [Migration Guide](https://github.com/bytebase/terraform-provider-bytebase/blob/main/migration/3.17.0.md). ## 🚀 Features