Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
# Changelog

## v0.8.0 - 2026-05-06

### Added

- Renamed the server binary from `control-plane` to `pgedge-control-plane` to reduce conflicts with other system packages.
- Added PostgREST as a supported service type — Deploy the PostgREST REST API server alongside your database with automatic credential provisioning, upfront schema and role validation, and configurable connection pool settings.
- Added preliminary support for systemd as an alternative to Docker Swarm. This feature is currently in "preview" status. You can read more about it in the [systemd page](https://docs.pgedge.com/control-plane/installation/systemd) of our docs.
- Added the ability to run user-defined SQL scripts during database creation via the `scripts` field on the database spec.
- Added `connect_as` field for service credentials — Services can now explicitly specify which database user they authenticate as by referencing a `database_users` entry, replacing auto-generated service accounts with direct, auditable credential assignment.
- Added automatic role transfer when expanding a database cluster — PostgreSQL roles created outside the standard `database_users` configuration are now automatically transferred to new nodes when they join a database.
- Extended stable random port assignments to service instances — Ports assigned to MCP, PostgREST, and RAG services are now persisted and reused across restarts and database updates, consistent with the behaviour already in place for database instances.
- Added RAG as a supported service type — Deploy a retrieval-augmented generation server alongside your database with hybrid vector and keyword search, automatic credential provisioning, and support for OpenAI, Voyage AI, Anthropic, and Ollama providers.

### Changed

- **Breaking:** The `connect_as` field is now required when creating or updating services of any type (MCP, PostgREST, RAG) — requests that omit this field will be rejected with a validation error.
- **Breaking:** Database, host, cluster, and service identifiers are now validated to comply with RFC 1035 name requirements — IDs must be 1–36 characters, contain only lowercase letters, digits, and hyphens, and start and end with a letter or digit. The combined length of a database ID and service ID may not exceed 53 characters.
- Removed the `pgedge_application` and `pgedge_application_read_only` built-in database roles — These roles are no longer created for new databases. The names are no longer reserved and may be used freely for custom database users.
- Promoted Supporting Services from beta to generally available
- Enable Patroni's failsafe mode in single-host nodes to improve resilience in some Etcd outages. Failsafe mode is not enabled in nodes with more than one host.

### Fixed

- Fixed port conflicts between services on the same host producing opaque deployment errors — Port conflicts are now detected at creation time and rejected with a clear validation message.
- Fixed `extra_networks` specified in `orchestrator_opts` not being attached to service containers (MCP, PostgREST, RAG).
- Fixed upgrade path from v0.6.2 — Databases created before v0.7.0 that were missing replication slot resources are now automatically repaired during state migration.
- Fixed embedded etcd clients connecting to all cluster members instead of only their own endpoint — This could cause connectivity issues when cluster membership changed.

## v0.7.0 - 2026-03-25

### Added
Expand Down
2 changes: 1 addition & 1 deletion api/apiv1/gen/control_plane/service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/apiv1/gen/http/openapi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/apiv1/gen/http/openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/apiv1/gen/http/openapi3.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/apiv1/gen/http/openapi3.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.7.0
v0.8.0
3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260331-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260403-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260403-130000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260412-202528.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260414-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260417-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260417-130000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Added-20260422-004204.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Changed-20260421-130000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Changed-20260424-130000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Changed-20260501-104640.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Fixed-20260409-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Fixed-20260409-130000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Fixed-20260421-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Fixed-20260424-120000.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions changes/unreleased/Fixed-20260427-120000.yaml

This file was deleted.

27 changes: 27 additions & 0 deletions changes/v0.8.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## v0.8.0 - 2026-05-06

### Added

- Renamed the server binary from `control-plane` to `pgedge-control-plane` to reduce conflicts with other system packages.
- Added PostgREST as a supported service type — Deploy the PostgREST REST API server alongside your database with automatic credential provisioning, upfront schema and role validation, and configurable connection pool settings.
- Added preliminary support for systemd as an alternative to Docker Swarm. This feature is currently in "preview" status. You can read more about it in the [systemd page](https://docs.pgedge.com/control-plane/installation/systemd) of our docs.
- Added the ability to run user-defined SQL scripts during database creation via the `scripts` field on the database spec.
- Added `connect_as` field for service credentials — Services can now explicitly specify which database user they authenticate as by referencing a `database_users` entry, replacing auto-generated service accounts with direct, auditable credential assignment.
- Added automatic role transfer when expanding a database cluster — PostgreSQL roles created outside the standard `database_users` configuration are now automatically transferred to new nodes when they join a database.
- Extended stable random port assignments to service instances — Ports assigned to MCP, PostgREST, and RAG services are now persisted and reused across restarts and database updates, consistent with the behaviour already in place for database instances.
- Added RAG as a supported service type — Deploy a retrieval-augmented generation server alongside your database with hybrid vector and keyword search, automatic credential provisioning, and support for OpenAI, Voyage AI, Anthropic, and Ollama providers.

### Changed

- **Breaking:** The `connect_as` field is now required when creating or updating services of any type (MCP, PostgREST, RAG) — requests that omit this field will be rejected with a validation error.
- **Breaking:** Database, host, cluster, and service identifiers are now validated to comply with RFC 1035 name requirements — IDs must be 1–36 characters, contain only lowercase letters, digits, and hyphens, and start and end with a letter or digit. The combined length of a database ID and service ID may not exceed 53 characters.
- Removed the `pgedge_application` and `pgedge_application_read_only` built-in database roles — These roles are no longer created for new databases. The names are no longer reserved and may be used freely for custom database users.
- Promoted Supporting Services from beta to generally available
- Enable Patroni's failsafe mode in single-host nodes to improve resilience in some Etcd outages. Failsafe mode is not enabled in nodes with more than one host.

### Fixed

- Fixed port conflicts between services on the same host producing opaque deployment errors — Port conflicts are now detected at creation time and rejected with a clear validation message.
- Fixed `extra_networks` specified in `orchestrator_opts` not being attached to service containers (MCP, PostgREST, RAG).
- Fixed upgrade path from v0.6.2 — Databases created before v0.7.0 that were missing replication slot resources are now automatically repaired during state migration.
- Fixed embedded etcd clients connecting to all cluster members instead of only their own endpoint — This could cause connectivity issues when cluster membership changed.
8 changes: 4 additions & 4 deletions docs/api/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The Control Plane server serves a JSON OpenAPI v3 specification from the

You can also access offline copies of the OpenAPI specification in the pgEdge Control Plane repository. We generate a few versions of the specification to accommodate different tools and use cases:

- [OpenAPI v3 YAML](https://github.com/pgEdge/control-plane/blob/v0.7.0/api/apiv1/gen/http/openapi3.yaml)
- [OpenAPI v3 JSON](https://github.com/pgEdge/control-plane/blob/v0.7.0/api/apiv1/gen/http/openapi3.json)
- [OpenAPI v2 YAML](https://github.com/pgEdge/control-plane/blob/v0.7.0/api/apiv1/gen/http/openapi.yaml)
- [OpenAPI v2 JSON](https://github.com/pgEdge/control-plane/blob/v0.7.0/api/apiv1/gen/http/openapi.json)
- [OpenAPI v3 YAML](https://github.com/pgEdge/control-plane/blob/v0.8.0/api/apiv1/gen/http/openapi3.yaml)
- [OpenAPI v3 JSON](https://github.com/pgEdge/control-plane/blob/v0.8.0/api/apiv1/gen/http/openapi3.json)
- [OpenAPI v2 YAML](https://github.com/pgEdge/control-plane/blob/v0.8.0/api/apiv1/gen/http/openapi.yaml)
- [OpenAPI v2 JSON](https://github.com/pgEdge/control-plane/blob/v0.8.0/api/apiv1/gen/http/openapi.json)
2 changes: 1 addition & 1 deletion docs/api/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ hide:

</style>

<redoc src="https://raw.githubusercontent.com/pgEdge/control-plane/refs/tags/v0.7.0/api/apiv1/gen/http/openapi3.json"/>
<redoc src="https://raw.githubusercontent.com/pgEdge/control-plane/refs/tags/v0.8.0/api/apiv1/gen/http/openapi3.json"/>
28 changes: 28 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
# Changelog

## v0.8.0 - 2026-05-06

### Added

- Renamed the server binary from `control-plane` to `pgedge-control-plane` to reduce conflicts with other system packages.
- Added PostgREST as a supported service type — Deploy the PostgREST REST API server alongside your database with automatic credential provisioning, upfront schema and role validation, and configurable connection pool settings.
- Added preliminary support for systemd as an alternative to Docker Swarm. This feature is currently in "preview" status. You can read more about it in the [systemd page](https://docs.pgedge.com/control-plane/installation/systemd) of our docs.
- Added the ability to run user-defined SQL scripts during database creation via the `scripts` field on the database spec.
- Added `connect_as` field for service credentials — Services can now explicitly specify which database user they authenticate as by referencing a `database_users` entry, replacing auto-generated service accounts with direct, auditable credential assignment.
- Added automatic role transfer when expanding a database cluster — PostgreSQL roles created outside the standard `database_users` configuration are now automatically transferred to new nodes when they join a database.
- Extended stable random port assignments to service instances — Ports assigned to MCP, PostgREST, and RAG services are now persisted and reused across restarts and database updates, consistent with the behaviour already in place for database instances.
- Added RAG as a supported service type — Deploy a retrieval-augmented generation server alongside your database with hybrid vector and keyword search, automatic credential provisioning, and support for OpenAI, Voyage AI, Anthropic, and Ollama providers.

### Changed

- **Breaking:** The `connect_as` field is now required when creating or updating services of any type (MCP, PostgREST, RAG) — requests that omit this field will be rejected with a validation error.
- **Breaking:** Database, host, cluster, and service identifiers are now validated to comply with RFC 1035 name requirements — IDs must be 1–36 characters, contain only lowercase letters, digits, and hyphens, and start and end with a letter or digit. The combined length of a database ID and service ID may not exceed 53 characters.
- Removed the `pgedge_application` and `pgedge_application_read_only` built-in database roles — These roles are no longer created for new databases. The names are no longer reserved and may be used freely for custom database users.
- Promoted Supporting Services from beta to generally available
- Enable Patroni's failsafe mode in single-host nodes to improve resilience in some Etcd outages. Failsafe mode is not enabled in nodes with more than one host.

### Fixed

- Fixed port conflicts between services on the same host producing opaque deployment errors — Port conflicts are now detected at creation time and rejected with a clear validation message.
- Fixed `extra_networks` specified in `orchestrator_opts` not being attached to service containers (MCP, PostgREST, RAG).
- Fixed upgrade path from v0.6.2 — Databases created before v0.7.0 that were missing replication slot resources are now automatically repaired during state migration.
- Fixed embedded etcd clients connecting to all cluster members instead of only their own endpoint — This could cause connectivity issues when cluster membership changed.

## v0.7.0 - 2026-03-25

### Added
Expand Down
2 changes: 1 addition & 1 deletion docs/development/e2e-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ specifying `FIXTURE_CONTROL_PLANE_IMAGE` with the
`{deploy,update,reset}-{lima,ec2}-fixture` targets. For example:

```sh
make update-lima-fixture FIXTURE_CONTROL_PLANE_IMAGE='ghcr.io/pgedge/control-plane:v0.7.0-rc.1'
make update-lima-fixture FIXTURE_CONTROL_PLANE_IMAGE='ghcr.io/pgedge/control-plane:v0.8.0-rc.1'
```

### Fixture variants
Expand Down
10 changes: 5 additions & 5 deletions docs/installation/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ Given that output, the following stack definition file will deploy a single Cont
```yaml
services:
host-1:
image: ghcr.io/pgedge/control-plane:v0.7.0
image: ghcr.io/pgedge/control-plane:v0.8.0
command: run
environment:
- PGEDGE_HOST_ID=host-1
Expand All @@ -113,7 +113,7 @@ services:
constraints:
- node.id==vzou89zyd4n3xz6p6jvoohqxx
host-2:
image: ghcr.io/pgedge/control-plane:v0.7.0
image: ghcr.io/pgedge/control-plane:v0.8.0
command: run
environment:
- PGEDGE_HOST_ID=host-2
Expand All @@ -128,7 +128,7 @@ services:
constraints:
- node.id==5sa7m11ub62t1n22feuhg0mbp
host-3:
image: ghcr.io/pgedge/control-plane:v0.7.0
image: ghcr.io/pgedge/control-plane:v0.8.0
command: run
environment:
- PGEDGE_HOST_ID=host-3
Expand Down Expand Up @@ -191,7 +191,7 @@ For example:

```yaml
host-4:
image: ghcr.io/pgedge/control-plane:v0.7.0
image: ghcr.io/pgedge/control-plane:v0.8.0
command: run
environment:
- PGEDGE_HOST_ID=host-4
Expand Down Expand Up @@ -227,7 +227,7 @@ Paste the output below and click "Generate Stack." This generator is fully local

<textarea id="nodes" rows="8" style="width:100%; font-family:monospace;"></textarea>

<button id="generateBtn" data-input="nodes" data-output="global-output" data-version="v0.7.0" class="md-button yaml-generate">Generate Stack Definition</button>
<button id="generateBtn" data-input="nodes" data-output="global-output" data-version="v0.8.0" class="md-button yaml-generate">Generate Stack Definition</button>

``` yaml {#global-output}
# Once submitted, the generated stack will appear here.
Expand Down
Loading
Loading