From 9f524104b94ea341858ae797522b9a3ff3eb3a12 Mon Sep 17 00:00:00 2001 From: magdev Date: Sun, 3 May 2026 15:52:20 +0200 Subject: [PATCH] plan: fix version-section ordering + bring v0.1.1 entry up to date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The v0.1.2 section had been prepended above v0.1.1 instead of inserted after it; reads strictly chronologically now (v0.1.0 → v0.1.1 → v0.1.2 → v0.2.0 → …). Also brought v0.1.1's heading and bullet list up to current reality: - heading: "ready to tag" → "shipped 2026-05-03" (it was tagged earlier today) - added the cache-wipe-on-bundled-launch fix, which actually landed in v0.1.1 (rotated into the tag) but was missing from PLAN.md's summary (CHANGELOG already had it) Top-of-file status line: "v0.1.1 ready to tag" → "v0.1.0 + v0.1.1 shipped 2026-05-03; v0.1.2 in progress on dev". Co-Authored-By: Claude Opus 4.7 (1M context) --- PLAN.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/PLAN.md b/PLAN.md index 0685086..2600e5b 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,6 +1,6 @@ # php-qml — Plan for a Symfony/FrankenPHP + Qt/QML Desktop Framework -> **Status (2026-05):** v0.1.0 shipped 2026-05-03 (LGPL-3.0-or-later). v0.1.1 ready to tag — closes the four shakedown follow-ups. Planning is version-based — see §13. +> **Status (2026-05):** v0.1.0 + v0.1.1 shipped 2026-05-03 (LGPL-3.0-or-later). v0.1.2 in progress on `dev`. Planning is version-based — see §13. > > **Where else to look:** > @@ -531,20 +531,19 @@ Per-phase scope detail is preserved in `CHANGELOG.md` (per-version summary) and First public preview. Linux AppImage. Full entry in `CHANGELOG.md`; binaries at . -### v0.1.2 — next bugfix +### v0.1.1 — shipped 2026-05-03 -In-flight on `dev`: - -- **Bundled supervisor: clean child shutdown.** The destructor's `teardownChild()` only ran during stack unwinding *after* `app.exec()` returned, by which point Qt's event loop was already mid-shutdown — so `QProcess::waitForFinished` couldn't reliably reap the child and Qt warned `QProcess: Destroyed while process is still running`, leaving an orphan frankenphp + its workers behind. Fix: connect `QCoreApplication::aboutToQuit` to `teardownChild` in the constructor, so the child is SIGTERM'd while the event loop is still active. Bundled-supervisor integration test gained a clean-shutdown assertion (no Qt warning, no orphan frankenphp under the host's PGID after SIGTERM). - -### v0.1.1 — bugfix release (ready to tag) - -All four shakedown follow-ups landed: +Closed the four shakedown follow-ups identified during v0.1.0 shipping: - **perfsmoke gap closed.** `HealthController` now constructor-injects `Publisher`; `/healthz` returns 200 only when `BridgeBundle` is fully container-resolvable. The `bundle` field in the response is the canary value perfsmoke + the bundled-mode integration test both check. - **Bundled-mode supervisor integration test.** `examples/todo/tests/bundled-supervisor.sh` (run via `make integration-bundled`) stages a fake AppImage layout in `/tmp` and exercises the whole supervisor codepath (`resolveFrankenphpBin` → `runMigrations` → `spawnChild` → cache/log redirect to user data dir) without needing a real `.AppImage` build. Wired into ci.yml. Catches every v0.1.0 shakedown bug. - **Skeleton AppImage parity.** `framework/skeleton/Makefile` gains `staging-symfony` + `appimage` targets mirroring the example's; `framework/skeleton/packaging/` ships starter `.desktop` + `.png`; `bin/php-qml-init` rewrites `BUNDLE_SRC` / `PACKAGING` Make variables and renames packaging files at scaffold time. `--vendor` mode also vendors `packaging/linux/` to `.bridge-packaging/`. Scaffolded apps inherit a working `make appimage` flow. - **Caddyfile fmt.** `framework/skeleton/Caddyfile` and `examples/todo/Caddyfile` reformatted per `caddy fmt`; the "Caddyfile input is not formatted" boot warning is gone. +- **Cache-wipe on bundled launch** (added during v0.1.1 shakedown). Symfony bakes `kernel.project_dir` into its compiled cache; the AppImage's FUSE mount path changes per launch, so cache from launch N is stale by N+1. Supervisor now wipes `var/cache/` on every `initBundledMode`. Build-time cache warmup is the v0.2.0 follow-up. + +### v0.1.2 — in progress on `dev` + +- **Bundled supervisor: clean child shutdown.** The destructor's `teardownChild()` only ran during stack unwinding *after* `app.exec()` returned, by which point Qt's event loop was already mid-shutdown — so `QProcess::waitForFinished` couldn't reliably reap the child and Qt warned `QProcess: Destroyed while process is still running`, leaving an orphan frankenphp + its workers behind. Fix: connect `QCoreApplication::aboutToQuit` to `teardownChild` in the constructor, so the child is SIGTERM'd while the event loop is still active. Bundled-supervisor integration test gained a clean-shutdown assertion (no Qt warning, no orphan frankenphp under the host's PGID after SIGTERM). ### v0.2.0 — next minor