diff --git a/resources/views/livewire/plugins/recipes/settings.blade.php b/resources/views/livewire/plugins/recipes/settings.blade.php
index c83f52c..540af89 100644
--- a/resources/views/livewire/plugins/recipes/settings.blade.php
+++ b/resources/views/livewire/plugins/recipes/settings.blade.php
@@ -17,6 +17,8 @@ new class extends Component
public bool $alias = false;
+ public bool $use_trmnl_liquid_renderer = false;
+
public int $resetIndex = 0;
public function mount(): void
@@ -27,6 +29,7 @@ new class extends Component
$this->trmnlp_id = $this->plugin->trmnlp_id;
$this->uuid = $this->plugin->uuid;
$this->alias = $this->plugin->alias ?? false;
+ $this->use_trmnl_liquid_renderer = $this->plugin->preferred_renderer === 'trmnl-liquid';
}
public function saveTrmnlpId(): void
@@ -43,11 +46,13 @@ new class extends Component
->ignore($this->plugin->id),
],
'alias' => 'boolean',
+ 'use_trmnl_liquid_renderer' => 'boolean',
]);
$this->plugin->update([
'trmnlp_id' => empty($this->trmnlp_id) ? null : $this->trmnlp_id,
'alias' => $this->alias,
+ 'preferred_renderer' => $this->use_trmnl_liquid_renderer ? 'trmnl-liquid' : null,
]);
Flux::modal('trmnlp-settings')->close();
@@ -83,6 +88,16 @@ new class extends Component
Enable an Alias URL for this recipe. Your server does not need to be exposed to the internet, but your device must be able to reach the URL. Docs
+ @if(config('services.trmnl.liquid_enabled') && $plugin->markup_language === 'liquid')
+
+
+ trmnl-liquid is a Ruby-based renderer that matches the Core service’s Liquid behavior for better compatibility.
+
+ @endif
+
@if($alias)
Alias URL
diff --git a/tests/Feature/Livewire/Plugins/RecipeSettingsTest.php b/tests/Feature/Livewire/Plugins/RecipeSettingsTest.php
index c625262..e15ee8b 100644
--- a/tests/Feature/Livewire/Plugins/RecipeSettingsTest.php
+++ b/tests/Feature/Livewire/Plugins/RecipeSettingsTest.php
@@ -109,3 +109,43 @@ test('recipe settings can clear trmnlp_id', function (): void {
expect($plugin->fresh()->trmnlp_id)->toBeNull();
});
+
+test('recipe settings saves preferred_renderer when liquid enabled and recipe is liquid', function (): void {
+ config(['services.trmnl.liquid_enabled' => true]);
+
+ $user = User::factory()->create();
+ $this->actingAs($user);
+
+ $plugin = Plugin::factory()->create([
+ 'user_id' => $user->id,
+ 'markup_language' => 'liquid',
+ 'preferred_renderer' => null,
+ ]);
+
+ Livewire::test('plugins.recipes.settings', ['plugin' => $plugin])
+ ->set('use_trmnl_liquid_renderer', true)
+ ->call('saveTrmnlpId')
+ ->assertHasNoErrors();
+
+ expect($plugin->fresh()->preferred_renderer)->toBe('trmnl-liquid');
+});
+
+test('recipe settings clears preferred_renderer when checkbox unchecked', function (): void {
+ config(['services.trmnl.liquid_enabled' => true]);
+
+ $user = User::factory()->create();
+ $this->actingAs($user);
+
+ $plugin = Plugin::factory()->create([
+ 'user_id' => $user->id,
+ 'markup_language' => 'liquid',
+ 'preferred_renderer' => 'trmnl-liquid',
+ ]);
+
+ Livewire::test('plugins.recipes.settings', ['plugin' => $plugin])
+ ->set('use_trmnl_liquid_renderer', false)
+ ->call('saveTrmnlpId')
+ ->assertHasNoErrors();
+
+ expect($plugin->fresh()->preferred_renderer)->toBeNull();
+});