diff --git a/app/Liquid/Tags/TemplateTag.php b/app/Liquid/Tags/TemplateTag.php
index 279b67e..94e08c1 100644
--- a/app/Liquid/Tags/TemplateTag.php
+++ b/app/Liquid/Tags/TemplateTag.php
@@ -39,7 +39,7 @@ class TemplateTag extends TagBlock
$templateNameExpression = $context->params->expression();
$this->templateName = match (true) {
- is_string($templateNameExpression) => trim($templateNameExpression),
+ is_string($templateNameExpression) => mb_trim($templateNameExpression),
is_numeric($templateNameExpression) => (string) $templateNameExpression,
$templateNameExpression instanceof VariableLookup => (string) $templateNameExpression,
default => throw new SyntaxException('Template name must be a string, number, or variable'),
diff --git a/app/Models/Plugin.php b/app/Models/Plugin.php
index e2b3260..72da730 100644
--- a/app/Models/Plugin.php
+++ b/app/Models/Plugin.php
@@ -111,11 +111,11 @@ class Plugin extends Model
if ($this->polling_header) {
// Resolve Liquid variables in the polling header
$resolvedHeader = $this->resolveLiquidVariables($this->polling_header);
- $headerLines = explode("\n", trim($resolvedHeader));
+ $headerLines = explode("\n", mb_trim($resolvedHeader));
foreach ($headerLines as $line) {
$parts = explode(':', $line, 2);
if (count($parts) === 2) {
- $headers[trim($parts[0])] = trim($parts[1]);
+ $headers[mb_trim($parts[0])] = mb_trim($parts[1]);
}
}
}
diff --git a/app/Services/OidcProvider.php b/app/Services/OidcProvider.php
index 2da8c84..e6cda63 100644
--- a/app/Services/OidcProvider.php
+++ b/app/Services/OidcProvider.php
@@ -46,7 +46,7 @@ class OidcProvider extends AbstractProvider implements ProviderInterface
if (str_ends_with($endpoint, '/.well-known/openid-configuration')) {
$this->baseUrl = str_replace('/.well-known/openid-configuration', '', $endpoint);
} else {
- $this->baseUrl = rtrim($endpoint, '/');
+ $this->baseUrl = mb_rtrim($endpoint, '/');
}
$this->scopes = $scopes ?: ['openid', 'profile', 'email'];
diff --git a/app/Services/PluginExportService.php b/app/Services/PluginExportService.php
index 3c2c3d0..9f08d76 100644
--- a/app/Services/PluginExportService.php
+++ b/app/Services/PluginExportService.php
@@ -144,7 +144,7 @@ class PluginExportService
$markup = preg_replace('/^
\s*/', '', $markup);
$markup = preg_replace('/\s*<\/div>\s*$/', '', $markup);
- return trim($markup);
+ return mb_trim($markup);
}
/**
diff --git a/composer.lock b/composer.lock
index 58435b1..79f70e1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -62,16 +62,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.356.3",
+ "version": "3.356.5",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "9c61b26408664c76d51101381bb64feda9bcfe2e"
+ "reference": "5872ccb5100c4afb0dae3db0bd46636f63ae8147"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9c61b26408664c76d51101381bb64feda9bcfe2e",
- "reference": "9c61b26408664c76d51101381bb64feda9bcfe2e",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5872ccb5100c4afb0dae3db0bd46636f63ae8147",
+ "reference": "5872ccb5100c4afb0dae3db0bd46636f63ae8147",
"shasum": ""
},
"require": {
@@ -153,9 +153,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.356.3"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.356.5"
},
- "time": "2025-08-22T18:13:45+00:00"
+ "time": "2025-08-26T18:05:04+00:00"
},
{
"name": "bnussbau/laravel-trmnl-blade",
@@ -1691,16 +1691,16 @@
},
{
"name": "laravel/framework",
- "version": "v12.25.0",
+ "version": "v12.26.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20"
+ "reference": "56c5fc46cfb1005d0aaa82c7592d63edb776a787"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20",
- "reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/56c5fc46cfb1005d0aaa82c7592d63edb776a787",
+ "reference": "56c5fc46cfb1005d0aaa82c7592d63edb776a787",
"shasum": ""
},
"require": {
@@ -1742,7 +1742,7 @@
"symfony/mime": "^7.2.0",
"symfony/polyfill-php83": "^1.31",
"symfony/polyfill-php84": "^1.31",
- "symfony/polyfill-php85": "^1.31",
+ "symfony/polyfill-php85": "^1.33",
"symfony/process": "^7.2.0",
"symfony/routing": "^7.2.0",
"symfony/uid": "^7.2.0",
@@ -1904,7 +1904,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2025-08-18T22:20:52+00:00"
+ "time": "2025-08-26T18:04:56+00:00"
},
{
"name": "laravel/prompts",
@@ -2857,16 +2857,16 @@
},
{
"name": "livewire/flux",
- "version": "v2.2.4",
+ "version": "v2.2.6",
"source": {
"type": "git",
"url": "https://github.com/livewire/flux.git",
- "reference": "af81b5fd34c6490d5b5e05ed0f8140c0250e5069"
+ "reference": "a0e8f33a5cd54ead4d8e27721961425ccbae2e33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/livewire/flux/zipball/af81b5fd34c6490d5b5e05ed0f8140c0250e5069",
- "reference": "af81b5fd34c6490d5b5e05ed0f8140c0250e5069",
+ "url": "https://api.github.com/repos/livewire/flux/zipball/a0e8f33a5cd54ead4d8e27721961425ccbae2e33",
+ "reference": "a0e8f33a5cd54ead4d8e27721961425ccbae2e33",
"shasum": ""
},
"require": {
@@ -2878,6 +2878,9 @@
"php": "^8.1",
"symfony/console": "^6.0|^7.0"
},
+ "conflict": {
+ "livewire/blaze": "<0.1.0"
+ },
"type": "library",
"extra": {
"laravel": {
@@ -2914,9 +2917,9 @@
],
"support": {
"issues": "https://github.com/livewire/flux/issues",
- "source": "https://github.com/livewire/flux/tree/v2.2.4"
+ "source": "https://github.com/livewire/flux/tree/v2.2.6"
},
- "time": "2025-08-09T01:46:51+00:00"
+ "time": "2025-08-27T02:05:01+00:00"
},
{
"name": "livewire/livewire",
@@ -9103,16 +9106,16 @@
},
{
"name": "pestphp/pest",
- "version": "v4.0.2",
+ "version": "v4.0.3",
"source": {
"type": "git",
"url": "https://github.com/pestphp/pest.git",
- "reference": "7f11ace329581ca168f99d9d7f70556c191d2be8"
+ "reference": "e54e4a0178889209a928f7bee63286149d4eb707"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest/zipball/7f11ace329581ca168f99d9d7f70556c191d2be8",
- "reference": "7f11ace329581ca168f99d9d7f70556c191d2be8",
+ "url": "https://api.github.com/repos/pestphp/pest/zipball/e54e4a0178889209a928f7bee63286149d4eb707",
+ "reference": "e54e4a0178889209a928f7bee63286149d4eb707",
"shasum": ""
},
"require": {
@@ -9124,12 +9127,12 @@
"pestphp/pest-plugin-mutate": "^4.0.1",
"pestphp/pest-plugin-profanity": "^4.0.1",
"php": "^8.3.0",
- "phpunit/phpunit": "^12.3.5",
+ "phpunit/phpunit": "^12.3.6",
"symfony/process": "^7.3.0"
},
"conflict": {
"filp/whoops": "<2.18.3",
- "phpunit/phpunit": ">12.3.5",
+ "phpunit/phpunit": ">12.3.6",
"sebastian/exporter": "<7.0.0",
"webmozart/assert": "<1.11.0"
},
@@ -9203,7 +9206,7 @@
],
"support": {
"issues": "https://github.com/pestphp/pest/issues",
- "source": "https://github.com/pestphp/pest/tree/v4.0.2"
+ "source": "https://github.com/pestphp/pest/tree/v4.0.3"
},
"funding": [
{
@@ -9215,7 +9218,7 @@
"type": "github"
}
],
- "time": "2025-08-22T10:34:24+00:00"
+ "time": "2025-08-24T14:17:23+00:00"
},
{
"name": "pestphp/pest-plugin",
@@ -10366,16 +10369,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "12.3.5",
+ "version": "12.3.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "f10ba5f12a256026ad3c7ee4894ffe47f60d7dc7"
+ "reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f10ba5f12a256026ad3c7ee4894ffe47f60d7dc7",
- "reference": "f10ba5f12a256026ad3c7ee4894ffe47f60d7dc7",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2cab3224f687150ac2f3cc13d99b64ba1e1d088",
+ "reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088",
"shasum": ""
},
"require": {
@@ -10395,7 +10398,7 @@
"phpunit/php-text-template": "^5.0.0",
"phpunit/php-timer": "^8.0.0",
"sebastian/cli-parser": "^4.0.0",
- "sebastian/comparator": "^7.1.2",
+ "sebastian/comparator": "^7.1.3",
"sebastian/diff": "^7.0.0",
"sebastian/environment": "^8.0.3",
"sebastian/exporter": "^7.0.0",
@@ -10443,7 +10446,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.5"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.6"
},
"funding": [
{
@@ -10467,7 +10470,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-16T05:20:09+00:00"
+ "time": "2025-08-20T14:43:23+00:00"
},
{
"name": "sebastian/cli-parser",
diff --git a/routes/api.php b/routes/api.php
index 435ee7d..36c7aa0 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -514,7 +514,7 @@ Route::post('custom_plugins/{plugin_uuid}', function (string $plugin_uuid) {
})->name('api.custom_plugins.webhook');
Route::get('plugin_settings/{trmnlp_id}/archive', function (Request $request, string $trmnlp_id) {
- if (! $trmnlp_id || trim($trmnlp_id) === '') {
+ if (! $trmnlp_id || mb_trim($trmnlp_id) === '') {
return response()->json([
'message' => 'trmnlp_id is required',
], 400);
diff --git a/tests/Feature/PluginArchiveTest.php b/tests/Feature/PluginArchiveTest.php
index bfd987c..9a7f66c 100644
--- a/tests/Feature/PluginArchiveTest.php
+++ b/tests/Feature/PluginArchiveTest.php
@@ -287,7 +287,7 @@ it('maintains correct yaml field order', function () {
$fieldLines = [];
foreach ($lines as $line) {
- $line = trim($line);
+ $line = mb_trim($line);
if (preg_match('/^([a-zA-Z_]+):/', $line, $matches)) {
$fieldLines[] = $matches[1].':';
}