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].':'; }