Skip to content

Commit 31beeaf

Browse files
turegjorupclaude
andcommitted
chore(release): 3.0.0-rc5
Condense the Unreleased entries to the terser prior-release style and roll them into the 3.0.0-rc5 section; keep an empty Unreleased header for ongoing work. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 45851bf commit 31beeaf

1 file changed

Lines changed: 21 additions & 45 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,52 +4,28 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7-
- Added Symfony AI Mate (`symfony/ai-mate`, dev-only) as a project-aware MCP server for AI coding
8-
agents; wired in `.mcp.json` to run inside the `phpfpm` container via `docker compose exec`.
9-
Includes the Monolog bridge (`symfony/ai-monolog-mate-extension`) exposing log search/tail tools.
10-
- Sped up the Playwright CI job: it now runs in parallel (3 workers, sized to the 4-vCPU public
11-
GitHub runner) instead of the default 2, added `ipc: host` to the `playwright` Compose
12-
service so parallel Chromium does not exhaust Docker's default 64 MB `/dev/shm`, pulls the
13-
container images once up front in parallel instead of on demand serially across steps
14-
(~90s of pulls overlapped), and dropped the redundant `playwright install --with-deps` step
15-
(the pinned Playwright image already ships the matching browsers).
16-
- Pre-pull the `phpfpm` and `mariadb` images in parallel in the PHPUnit, Doctrine and API-spec
17-
CI jobs (running `phpfpm` starts `mariadb` via `depends_on`, so the two were otherwise pulled
18-
serially on demand). The Doctrine Postgres job is unaffected — it builds `phpfpm` locally.
19-
- Removed a dead statement in `MediaRepository::getPaginator()` that referenced the undefined
20-
variables `$page` and `$itemsPerPage`; the computed value was never used.
21-
- Fixed inverted user-type guard in `UserService::activateExternalUser()`: the "user is not of
22-
external type" check could never trigger due to a stray negation (`=== !$user->getUserType()`).
23-
The endpoint was still protected by `ExternalUserAuthenticator`, so this restores the intended
24-
defense-in-depth at the service layer. Added unit tests.
25-
- Enabled PHPStan's `reportIgnoresWithoutComments`: inline `@phpstan-ignore` annotations must
26-
carry a comment explaining the suppression.
27-
- Added structured, channel-split application logging (ADR 011): per-domain Monolog channels
28-
(`auth`, `screen`, `media`, `feed`, `interactive`, `cache`) with per-channel prod handlers
29-
thresholded by `LOG_LEVEL_<CHANNEL>` (falling back to a global `LOG_LEVEL`), a configurable
30-
`LOG_PATH` output destination (default `php://stderr`), request/identity/trace-context
31-
processors, request-id propagation via `X-Request-Id`, and an auth-event logging subscriber.
32-
- Renamed the outbound-HTTP-client log channel `app_http``outbound_http` and silenced
33-
Symfony's redundant native `http_client` channel logging (a `NullLogger` decorates it), so
34-
`LoggingHttpClient` is the single source of outbound-HTTP logs (no duplicate request logging).
35-
- Adopted OpenTelemetry semantic-convention field names for log records: request/identity
36-
context (`http.route`, `url.path`, `client.address`, `user.id` XOR `screen.id`,
37-
`tenant.key`) plus the HTTP client's `http.request.method` / `url.full` /
38-
`http.response.status_code` / `http.client.request.duration`. Added GDPR-safe
39-
client-address truncation and secret-key redaction (`SensitiveDataProcessor`), and
40-
structured exception serialization (`type`, `message`, …) under the `exception` context
41-
key (`ExceptionContextProcessor`). See `docs/logging.md`.
42-
The HTTP client now logs completed requests at `info` and failures at `error` on the
43-
`outbound_http` channel, thresholded by the new `LOG_LEVEL_OUTBOUND_HTTP` like every
44-
other channel; the `HTTP_CLIENT_LOG_LEVEL` env var is removed (use `LOG_LEVEL_OUTBOUND_HTTP`).
7+
## [3.0.0-rc5] - 2026-06-10
8+
9+
- Added structured, channel-split application logging (ADR 011): per-domain Monolog channels with
10+
per-channel prod thresholds (`LOG_LEVEL_<CHANNEL>`, falling back to `LOG_LEVEL`), a configurable
11+
`LOG_PATH`, request/identity/trace context processors, `X-Request-Id` propagation and an
12+
auth-event subscriber. See `docs/logging.md`.
13+
- Adopted OpenTelemetry semantic-convention log field names, with GDPR-safe client-address
14+
truncation, secret-key redaction and structured exception serialization; renamed the
15+
outbound-HTTP channel `app_http``outbound_http` (thresholded by `LOG_LEVEL_OUTBOUND_HTTP`;
16+
`HTTP_CLIENT_LOG_LEVEL` removed) and silenced Symfony's redundant native `http_client` logging.
17+
- Added a `database` log channel and a DBAL middleware that logs MariaDB connection failures
18+
(by driver error code; `critical`/`error`), so operators without DB access get a signal.
4519
- Enforced the logging conventions in CI with three project-local PHPStan rules
46-
(`logging.silentCatch`, `logging.interpolatedLogMessage`, `logging.exceptionContextKey`) and
47-
migrated the previously silent catch sites to log the exception, surface it, or be explicitly
48-
annotated as intentional.
49-
- Added a `database` log channel and a DBAL driver middleware that logs MariaDB
50-
connection-establishment failures (classified by raw driver error code; connection
51-
pressure/unreachability at `critical`, other failures at `error`) so operators without database
52-
access get a failure signal. Logging-only — no reconnect/retry.
20+
(`logging.silentCatch`, `logging.interpolatedLogMessage`, `logging.exceptionContextKey`).
21+
- Enabled PHPStan's `reportIgnoresWithoutComments`: inline `@phpstan-ignore` must carry a comment.
22+
- Added Symfony AI Mate (`symfony/ai-mate`, dev-only): a project-aware MCP server run in the
23+
`phpfpm` container, with a Monolog log-search bridge.
24+
- Sped up the Playwright CI job: parallel workers (`ipc: host` for shared `/dev/shm`), up-front
25+
parallel image pulls and removal of the redundant `playwright install` step; also pre-pull
26+
`phpfpm`/`mariadb` in parallel in the PHPUnit, Doctrine and API-spec jobs.
27+
- Fixed an inverted user-type guard in `UserService::activateExternalUser()`.
28+
- Removed a dead, undefined-variable statement in `MediaRepository::getPaginator()`.
5329

5430
## [3.0.0-rc4] - 2026-06-04
5531

0 commit comments

Comments
 (0)