The SMTP test email uses email-base-styled.tpl as its base template,
which contains {{platform}}, {{logoUrl}}, {{accentColor}}, and social/
legal link placeholders. These were never passed as template variables,
causing them to render as literal strings (e.g. "{{platform}} logo").
Inject the platform config and pass the variables to MailMessage,
matching the pattern used by OTP and magic-url email flows.
Co-Authored-By: Harsh Mahajan <harsh@appwrite.io>
These fields were already persisted on update but omitted from the response
model, causing them to disappear after a page refresh in the console.
Co-Authored-By: Harsh Mahajan <harsh@appwrite.io>
Drops the redundant Route::resolveParams() call. The matched path
params are now provided directly via the new frame-local 'params'
injection from utopia-php/http, avoiding a second URL parse.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The 'route' injection is frame-local and non-nullable inside a
matched action's hooks. Replaces \$utopia->match() lookups in api.php
and auth.php init hooks, drops the dead \$utopia inject from the
session shutdown hook, and removes the now-redundant null guards.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The 'route' injection introduced in utopia-php/http feat-safe-wildcards
is frame-local and non-nullable inside a matched action's hooks, so
the shutdown handlers in api.php and mock.php no longer need to call
match() and dereference a nullable result.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The documentsdb/vectorsdb routes are registered with
setHttpPath('/v1/documentsdb/...') with no aliases, so getPath()
returns a template containing the substring we're matching against
— and matches the prior getMatchedPath() semantics without depending
on the raw request URI.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adopts the new safe-wildcard dispatch primitive from
utopia-php/http#feat-safe-wildcards. Http::execute() is now the
re-entrant dispatch entry point and Http::match() is pure (returns
?RouteMatch). The removed Http::getRoute()/setRoute(),
Route::getMatchedPath(), Route::getPathValues() callsites are migrated
to the new API.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>