Follows utopia-php/http#249 migration guide to drop usage of the shims
kept for one-minor-release compat. Affected call sites switch to:
- Handler / hook context: inject 'route' (Route|null from the per-request
DI container) instead of $utopia->getRoute().
- Resource factories (init/resources/request.php): Router::matchRoute()
returning ?RouteMatch instead of $utopia->match($request).
- Error path in app/http.php: $app->getResource('routeMatch')?->route,
guarded with try/catch for the pre-dispatch error case.
- GraphQL resolver inner-request pattern (Resolvers.php): capture
getResource('routeMatch') as the original, Router::matchRoute() for
the inner URL, rebind 'route' / 'routeMatch' on the resolver container
in finally instead of setRoute($original). Http::execute() shim is
retained — the guide explicitly keeps it for this hand-built-route
case.
Redundant re-match in shared/api.php storage-cache branch removed; the
injected $route is already the current one.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pin utopia-php/http to the refactor/coroutine-safe-dispatch branch, which
extracts per-request state into a Dispatcher + immutable RouteMatch so the
shared Http/Router/Route objects are no longer mutated under concurrent
coroutines.
Appwrite-side adjustments:
- app/controllers/shared/api.php: Route::getMatchedPath() was removed from
the library; use Route::getPath() for the /documentsdb vs /vectorsdb
substring check. Both the registered pattern and the matched path contain
the literal segment, so the behaviour is preserved.
- app/controllers/general.php: drop four $route->label('router', true)
writes. The sole reader in the wildcard 404 handler was deleted in
40beecdddc (Feb 2025); the writes were orphaned and mutated the shared
Route definition, which is now frozen under the new dispatch model.
Deprecated shims for Http::match(), Http::getRoute(), Http::setRoute() are
still honoured by the library; remaining call sites can migrate in a
follow-up pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Cache write hook now checks HTTP status code before writing to prevent
failed AVIF (or any other) conversions from poisoning the cache.
Bumps utopia-php/image to 0.8.5 which fixes AVIF/HEIC output by using
native Imagick instead of the deprecated magick convert shell command.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add ProviderRepositoryFrameworkList and ProviderRepositoryRuntimeList
model classes with conditions and type field so the listRepositories
endpoint's oneOf response gets a discriminator on the type property.
Merge conflict in Resolvers.php between the coroutine lock
(fix/graphql-coroutine-safe-response) and the otel route restore
(fix-gql-route-reset from 1.9.x). Both changes are needed:
the lock serialises concurrent resolvers while the route restore
prevents otel span clobbering.