Repository navigation
2.5.4-dev.5 (nightly)
Pre-release
Pre-release
Source: Vateron-Media/XC_VM@b489c13
Nightly build from main. Untested — for test servers only.
Changes since ebd7576b9e1e
- fix(cluster): the bus's block must not be a fraction on an older phpredis (b6428fa7)
- docs(adr): what the fence's drain actually drains (014847de)
- feat(cluster): a node stops serving when its lease runs out, behind a switch (201aaaa0)
- docs(adr): the anchor on MAIN's clock the node now keeps (211847fa)
- docs(adr): which key verifies a lease, and what provisioning each choice needs (58a59b5d)
- docs(adr): the node keeps the lease, and what its enforcement may not assume (609f2f6f)
- feat(cluster): every token a node is handed carries its lease (0943627e)
- docs(adr): the status line names the phase-8 and phase-9 increments that landed (04ed21df)
- i18n: the cluster and dashboard keys in the seven other languages (583109b5)
- fix(ci): what phpcs, PHPStan and the test database caught on main (7e02443b)
- Update tests/Unit/ProcessRunnerTest.php (2497edd6)
- fix(security): launch the three background commands without a shell line (6a75d8a4)
- docs(modules): source drivers guide for module authors (37f88119)
- feat(cluster): ask the agent for the data plane's nonce window and digests (f70c22fa)
- feat(streams): source drivers — module-owned live sources with their own producer (ac2ad9fd)
- feat(cluster): give the legacy /api its own switch (680acedb)
- feat(cluster): show the cluster on the dashboard and the servers list (dce55b59)
- feat(cluster): let an operator rotate a node's token on request (515e5663)
- docs(cluster): the cluster API's protocol and operator guide (a2de2c2e)
- feat(cluster): carry the fleet's heartbeat in the transport policy (7b4c9084)
- feat(cluster): accept a token minted under the replaced viewer secret (2de2a6ca)
- test: fix proc_close exit code on PHP < 8.3 and isolate StreamRuntime store (154660a9)
- fix(cluster): one boot sequence, a disabled line's sessions, and dead settings (bb8e8981)
- fix(cluster): keep the daemons in one process instead of re-execing each pass (5914d8a7)
- ci(cluster): gate the crypto vectors and Core's reach into MAIN's domain (a5e97ecb)
- feat(cluster): let an operator require HTTPS, and prune what the settings say (95578251)
- feat(cluster): offer every node the agent version MAIN pinned (a1f7e2b3)
- feat(cluster): report a node's on-demand checks and closes over the API (01ba5c32)
- feat(cluster): keep a node's activity, status and reconciler off MAIN's database (230b601f)
- feat(cluster): serve a node's encoding queue over the API (ccd0a1c4)
- fix(cluster): stop fleet-wide jobs treating every node as MAIN (e6133297)
- feat(cluster): promote and demote a node's mode behind the cutover gate (52212ef7)
- feat(cluster): let an operator switch the CONFIG flow (71b6503c)
- docs(cluster): record the node system API's own inputs (a9eaf1d2)
- fix(security): confine the node system API's paths, probe targets and pids (0807d07a)
- docs(cluster): record the cache jobs and reloads without a shell (45de9bae)
- fix(security): run cache jobs, nginx reloads and flush without a shell (726637eb)
- docs(cluster): mark the agent's R2 and catalogue halves built (4ac672cb)
- fix(cluster): address the node's own store of its streams' state review (f7ce00bf)
- docs(cluster): record the node's own store of its streams' state (0e74684d)
- feat(cluster): read this node's streams from its replica and store (52e7cbf2)
- feat(cluster): keep the node's streams' runtime state in its own store (408e7492)
- fix(cluster): address the mode 2 signals daemon and cron:certbot review (8ccecc2c)
- docs(cluster): record the signals daemon and cron:certbot in mode 2 (32499953)
- feat(cluster): keep cron:certbot and certbot off MAIN's DB in mode 2 (66fe7ba6)
- feat(cluster): send a mode 2 node's cache jobs as node.cache commands (2bc74bce)
- chore(install): drop Debian 11 support (05470de9)
- chore(install): mark Debian 11 as EOL (06af366a)
- fix(security): test root's commands on full pipes and exit status (b9a8fd75)
- docs(cluster): record root's commands without a shell (bd110538)
- fix(security): run the artefact and module commands without a shell (647a1b05)
- deps: bump phpstan/phpstan in /src in the composer group (4bab1fd1)
- ci(security): drop nosemgrep-suppressed findings before SARIF upload (4de3d411)
- build: add make semgrep target mirroring the CI security scan (32583beb)
- docs(cluster): mark the agent contracts xc_vm_fanout has built (2258de05)
- fix(cluster): address the artefact op review (bf07fe2e)
- fix(cluster): let an acked command give up its dedupe key (c6cdbb45)
- fix(cluster): close root's artefact stage when it finds it open (7b46c5ce)
- docs(cluster): record the artefact op and its hash-checked staging (1f380bec)
- feat(cluster): grant artefacts and serve them through the artefact op (255b1cec)
- feat(cluster): stage and hash-check artefacts on the node (216012fa)
- docs(cluster): number the R2 node increment and order Phase 7 notes (3aaf80bd)
- fix(cluster): address the R2 streams section on the node review (3f20854e)
- docs(cluster): record the R2 streams section on the node (2315542f)
- fix(cluster): keep unverified stream records out of the node's caches (7749f27e)
- feat(cluster): replicate the bouquets and categories caches (c7fd1efd)
- feat(cluster): apply the R2 streams section to the node's stream caches (c25fe5b6)
- refactor(cluster): share the stream record reads with the node (3ebdb61c)
- fix(cluster): address the mode 1 replica boot review (7330648b)
- docs(cluster): record mode 1 booting from its replica (54a544a7)
- feat(cluster): boot a mode 1 node from its replica once CONFIG is on (1a784658)
- fix(cluster): address the mode 2 paths review (fbd295dc)
- docs(cluster): record the mode 2 paths moved off MAIN's database (4f00b147)
- feat(cluster): keep the watchdog, cleanup and shadow apply off MAIN (65a797c9)
- feat(cluster): run cron:root_signals from the replica in mode 2 (b4e90dea)
- feat(cluster): send root's system log lines through the agent (37dc48c7)
- fix(cluster): address the R2 streams section review (eca61b78)
- docs(cluster): record the R2 streams section on MAIN (d72b3b9b)
- feat(cluster): read the node's stored R2 streams section in PHP (f2782ce8)
- feat(cluster): serve the R2 streams section through the streams op (0f5d8632)
- feat(cluster): stamp each stream's R2 version at MAIN's config writers (7d7b0148)
- fix(cluster): address the bus authentication review (f4ace25b)
- docs(cluster): record authentication on the cluster bus (59da0c7c)
- perf(cluster): read MAIN's server row only for the ops that use it (86415329)
- feat(cluster): authenticate cluster requests from the cluster bus (b0a54822)
- refactor(cluster): share the bus marks through ClusterBus (1fdf1607)
- fix(cluster): address the settings-side endpoint change review (0e1936c2)
- docs(cluster): record the settings-side endpoint changes (fc561a00)
- fix(cluster): merge endpoint changes stored at the same moment (0a02361b)
- feat(cluster): keep the old URLs after a settings-side endpoint change (d8dac321)
- fix(cluster): address the mode-2 refusal and connect audit review (3e8a2957)
- docs(cluster): record the mode-2 refusal and the connect audit (819bd1e6)
- fix(cluster): run the blocklist flush from a node.root command (dea6f3fa)
- feat(cluster): keep each node's connect counters and show them (e59bc8bc)
- feat(cluster): refuse MAIN's database and Redis on a node in mode 2 (47d275f6)
- feat(cluster): count every connect to MAIN in modes 1 and 2, bounded (f38d4266)
- fix(cluster): address the ReplicaStage and settings-miss review (5087631b)
- docs(cluster): record ReplicaStage, boot from disk and settings misses (32455581)
- feat(cluster): report settings reads the replica would not answer (4566ecbd)
- feat(cluster): boot from the node replica with ReplicaStage (fd5ac539)
- feat(cluster): verify the stored replica for cluster:apply --from-disk (bbcd3617)
- fix(cluster): keep an old port for enrolments, https_required and mode 0 (c3c0d30d)
- docs(cluster): record the early release of old MAIN ports (335db219)
- feat(cluster): release an old port once every node uses the new URL (8a5e7ef0)
- feat(cluster): record the policy and MAIN port each node uses (c2eb84d6)
- fix(cluster): keep MAIN's old URLs only where nginx served them (cc1dcb2a)
- fix(cluster): keep serving an old HTTPS port while an API port is staged (a112e2fb)
- docs(cluster): record the announced HTTPS port and address changes (0a79eeaa)
- feat(cluster): announce MAIN's HTTPS port and address changes (80123771)
- fix(cluster): never sign a replica section built from a failed read (6872ca54)
- docs(cluster): record the secrets section and authoritative settings (33623fc4)
- feat(cluster): make the settings and secrets sections authoritative (d28d6af3)
- feat(cluster): serve the sealed secrets section of the node replica (8f0fd0ce)
- fix(cluster): keep one ingest permit for bulk, and one VOD per recording (cc84f1e2)
- docs(cluster): record the ingest permits on the cluster bus (c893a1dd)
- feat(cluster): take ingest permits on the bus, with a P0 reserve (7fb213e6)
- fix(cluster): ask again for a recording's VOD while MAIN is busy (ab3d7f9d)
- chore(security): annotate Semgrep false positives with nosemgrep (ce0cecec)
- fix(auth): verify TLS when calling reCAPTCHA siteverify (f70d509f)