Skip to content

Release 2.8.0#500

Merged
turegjorup merged 19 commits into
mainfrom
release/2.8.0
Jun 23, 2026
Merged

Release 2.8.0#500
turegjorup merged 19 commits into
mainfrom
release/2.8.0

Conversation

@turegjorup

Copy link
Copy Markdown
Contributor

Release 2.8.0.

Changes

  • #495 — Added app:utils:convert-env-to-3x, converting a running 2.x installation's loaded config (env vars + admin/client config.json) to 3.x environment configuration, with screen, dotenv and compose output. This is the canonical path for the upcoming 2.x → 3.0 upgrade.
  • #486 — Changed BRND feed area/facility filters to match on områdeId/facilitetsId instead of names (BRND API v2.0 only; the fields are hidden for v1.0 sources).
  • #444 — Renamed changed_idx indexes to <table>_changed_idx and quoted the user table identifier for cross-platform portability, with a Postgres CI gate.

Why

Cuts the 2.8.0 release from develop: finalises the CHANGELOG ([Unreleased][2.8.0]) and ships the convert-env helper so 2.x installations can prepare their 3.0 upgrade while still on the 2.x line.

turegjorup and others added 19 commits May 7, 2026 02:07
- Rename 15 `changed_idx` indexes to `<table>_changed_idx` (Postgres
  scopes index names schema-wide; MariaDB scopes per-table — the shared
  name collides on Postgres).
- Quote `user` table identifier in entity metadata
  (`#[ORM\Table(name: '`user`')]`). Doctrine emits the platform-native
  quote on every reference (`` `user` `` on MariaDB, `"user"` on
  Postgres), so no table rename is needed.
- Add `validate-doctrine-schema-postgres` CI job that applies entity
  metadata to a Postgres 16 service container via
  `doctrine:schema:update --force --complete` and then runs
  `doctrine:schema:validate`. Gates against future entity-level
  Postgres regressions.

Lands on 2.7 so the consolidated 3.0 migration (#441 / #442) can emit
the portable shape from the start, keeping `migrations:rollup` honest
for 2.x → 3.0 upgraders.

Verified locally on MariaDB: migration applies cleanly,
`doctrine:schema:validate` in sync, full PHPUnit suite green
(133 tests / 516 assertions, identical to pristine release/2.7.0).
Verified on Postgres 16: `doctrine:schema:update --force --complete`
applies the metadata in 265 queries, `doctrine:schema:validate` in
sync. down/up cycle of the new migration also verified.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
feat: prep db identifiers for cross-platform (Postgres) portability
Converts the configuration of a running 2.x installation to 3.x
environment configuration, treating the loaded values in the running
app as canonical (real env, compose environment blocks and dotenv
files alike).

- Maps every env var the 2.x app reads to its 3.x name (incl. the
  renames: APP_DEFAULT_DATE_FORMAT, APP_ACTIVATION_CODE_EXPIRE_INTERNAL,
  APP_KEY_VAULT_*, HTTP_CLIENT_LOG_LEVEL -> LOG_LEVEL_OUTBOUND_HTTP).
- Fetches admin/client config.json from the inferred app URL (OIDC
  redirect URIs or COMPOSE_DOMAIN, overridable via --app-url) and
  converts them to the 3.x ADMIN_*/CLIENT_* variables.
- Output as screen listing, dotenv file or compose environment block
  via --output (optionally --file).
- Advises where non-application variables (COMPOSE_*, PHP_*, NGINX_*,
  MARIADB_*/MYSQL_*) belong in a 3.x deployment.
- Test guards that every variable in .env stays covered by the map.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
In dockerised setups (e.g. os2display-docker-server) the command runs
inside the api container, so --file writes to the container filesystem
and does not survive a restart. The env/compose formats already send
the document to stdout and notes/warnings to stderr; this makes that
contract explicit:

- write() instead of writeln() so stdout is byte-exact (single
  trailing newline) when redirected to a host file.
- Regression test that a failing config.json fetch leaves stdout a
  clean, parseable dotenv document with the warning on stderr only.
- README documents the host-side redirect pattern
  (docker compose exec -T ... --output=env > env.3x) and notes that
  --file only makes sense on mounted volumes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fields-to-id

Changed filter to filter through IDs instead of name on Area and Faci…
- replace tautological test assertion with assertGreaterThan
- warn that screen output contains secrets
- cap config.json fetch at a 10s timeout
…mand

feat: add app:utils:convert-env-to-3x command
@turegjorup
turegjorup merged commit a12dbc4 into main Jun 23, 2026
14 checks passed
@turegjorup
turegjorup deleted the release/2.8.0 branch June 23, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants