diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index da4c573..ef067d7 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '8.3' + php-version: '8.4' extensions: curl, json, mbstring tools: composer:v2 coverage: none diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index efbe95f..5062463 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -19,7 +19,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '8.3' + php-version: '8.4' extensions: curl, json, mbstring tools: composer:v2 coverage: none diff --git a/PLAN.md b/PLAN.md index 993903e..5bcba5e 100644 --- a/PLAN.md +++ b/PLAN.md @@ -586,7 +586,7 @@ Phase 1 turns the spike into the smallest dev-mode-only framework that can repla | Qt module URI | `PhpQml.Bridge` | | C++ namespace | `PhpQml::Bridge` | | Symfony minimum | `^8.0` | -| PHP minimum | `^8.3` | +| PHP minimum | `^8.4` (Symfony 8 enforces this) | | Qt minimum | `6.5 LTS` (build), `6.11` is what's on the dev box | **Directory layout (additions over Phase 0):** diff --git a/examples/todo/symfony/composer.json b/examples/todo/symfony/composer.json index 14f3309..09930f0 100644 --- a/examples/todo/symfony/composer.json +++ b/examples/todo/symfony/composer.json @@ -3,7 +3,7 @@ "license": "proprietary", "minimum-stability": "stable", "require": { - "php": "^8.3", + "php": "^8.4", "symfony/framework-bundle": "^8.0", "symfony/runtime": "^8.0", "symfony/dotenv": "^8.0", diff --git a/framework/php/composer.json b/framework/php/composer.json index ab43fe4..93b1215 100644 --- a/framework/php/composer.json +++ b/framework/php/composer.json @@ -4,7 +4,7 @@ "type": "symfony-bundle", "license": "proprietary", "require": { - "php": "^8.3", + "php": "^8.4", "symfony/framework-bundle": "^8.0", "symfony/mercure": "^0.7", "symfony/security-bundle": "^8.0", diff --git a/framework/qml/src/BackendConnection.h b/framework/qml/src/BackendConnection.h index 6435a72..52c0d4c 100644 --- a/framework/qml/src/BackendConnection.h +++ b/framework/qml/src/BackendConnection.h @@ -67,6 +67,17 @@ public: /// hits Retry on the Offline overlay). Dev mode: re-probe. Q_INVOKABLE void restart(); + /// Bundled mode: ask the bundled `AppImageUpdate.AppImage` sidecar + /// whether a newer release is available. Dev mode: emits + /// `updateCheckFailed` with an explanatory string. Result is signalled + /// via updatesAvailable / noUpdatesAvailable / updateCheckFailed. + Q_INVOKABLE void checkForUpdates(); + + /// Bundled mode: invoke the sidecar to download and apply the + /// available update in place. The user has to restart the app + /// after this completes; emits `updateApplied` / `updateApplyFailed`. + Q_INVOKABLE void applyUpdate(); + signals: void urlChanged(); void tokenChanged(); @@ -77,6 +88,12 @@ signals: /// MercureClient pick the new value up on next request (ยง3 *Edge cases*). void tokenRotated(const QString& newToken); + void updatesAvailable(); + void noUpdatesAvailable(); + void updateCheckFailed(const QString& reason); + void updateApplied(); + void updateApplyFailed(const QString& reason); + private slots: void probe(); void onProbeFinished(); diff --git a/framework/skeleton/symfony/composer.json b/framework/skeleton/symfony/composer.json index 1aacea4..5a8b2d6 100644 --- a/framework/skeleton/symfony/composer.json +++ b/framework/skeleton/symfony/composer.json @@ -3,7 +3,7 @@ "license": "proprietary", "minimum-stability": "stable", "require": { - "php": "^8.3", + "php": "^8.4", "symfony/framework-bundle": "^8.0", "symfony/runtime": "^8.0", "symfony/dotenv": "^8.0",