Compare commits

...

3 commits

Author SHA1 Message Date
Benjamin Nussbaum
31ca919ba9 chore: show update menu only if app.version is set
Some checks failed
tests / ci (push) Has been cancelled
2026-01-23 20:14:10 +01:00
Benjamin Nussbaum
dfdc4e0730 chore: update dependencies 2026-01-23 19:55:14 +01:00
Benjamin Nussbaum
f42dc03247 fix: update password field binding in config modal and add test for saving password values 2026-01-23 19:54:10 +01:00
5 changed files with 69 additions and 38 deletions

60
composer.lock generated
View file

@ -62,16 +62,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.369.17",
"version": "3.369.18",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "8bdccd2f8e54c5cd170b22f52414171e19226fd1"
"reference": "48d809eda94dd528ef539cff827e7542ac01cce6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/8bdccd2f8e54c5cd170b22f52414171e19226fd1",
"reference": "8bdccd2f8e54c5cd170b22f52414171e19226fd1",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/48d809eda94dd528ef539cff827e7542ac01cce6",
"reference": "48d809eda94dd528ef539cff827e7542ac01cce6",
"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.369.17"
"source": "https://github.com/aws/aws-sdk-php/tree/3.369.18"
},
"time": "2026-01-21T19:09:32+00:00"
"time": "2026-01-22T19:05:57+00:00"
},
{
"name": "bacon/bacon-qr-code",
@ -2626,16 +2626,16 @@
},
{
"name": "league/flysystem",
"version": "3.30.2",
"version": "3.31.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277"
"reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
"reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1717e0b3642b0df65ecb0cc89cdd99fa840672ff",
"reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff",
"shasum": ""
},
"require": {
@ -2703,22 +2703,22 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
"source": "https://github.com/thephpleague/flysystem/tree/3.30.2"
"source": "https://github.com/thephpleague/flysystem/tree/3.31.0"
},
"time": "2025-11-10T17:13:11+00:00"
"time": "2026-01-23T15:38:47+00:00"
},
{
"name": "league/flysystem-local",
"version": "3.30.2",
"version": "3.31.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-local.git",
"reference": "ab4f9d0d672f601b102936aa728801dd1a11968d"
"reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ab4f9d0d672f601b102936aa728801dd1a11968d",
"reference": "ab4f9d0d672f601b102936aa728801dd1a11968d",
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079",
"reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079",
"shasum": ""
},
"require": {
@ -2752,9 +2752,9 @@
"local"
],
"support": {
"source": "https://github.com/thephpleague/flysystem-local/tree/3.30.2"
"source": "https://github.com/thephpleague/flysystem-local/tree/3.31.0"
},
"time": "2025-11-10T11:23:37+00:00"
"time": "2026-01-23T15:30:45+00:00"
},
{
"name": "league/mime-type-detection",
@ -3128,16 +3128,16 @@
},
{
"name": "livewire/flux",
"version": "v2.11.0",
"version": "v2.11.1",
"source": {
"type": "git",
"url": "https://github.com/livewire/flux.git",
"reference": "163fd7333468d527153da6100f3c8e8e402a8f90"
"reference": "3ada3b2644215fd1ccb7003ce8e6bc185c22e70a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/livewire/flux/zipball/163fd7333468d527153da6100f3c8e8e402a8f90",
"reference": "163fd7333468d527153da6100f3c8e8e402a8f90",
"url": "https://api.github.com/repos/livewire/flux/zipball/3ada3b2644215fd1ccb7003ce8e6bc185c22e70a",
"reference": "3ada3b2644215fd1ccb7003ce8e6bc185c22e70a",
"shasum": ""
},
"require": {
@ -3188,22 +3188,22 @@
],
"support": {
"issues": "https://github.com/livewire/flux/issues",
"source": "https://github.com/livewire/flux/tree/v2.11.0"
"source": "https://github.com/livewire/flux/tree/v2.11.1"
},
"time": "2026-01-21T09:22:09+00:00"
"time": "2026-01-21T17:09:56+00:00"
},
{
"name": "livewire/livewire",
"version": "v4.0.2",
"version": "v4.0.3",
"source": {
"type": "git",
"url": "https://github.com/livewire/livewire.git",
"reference": "57fd2f193072560f8615e513972db5fb9dc93501"
"reference": "11afe7b36dbb1d98e073551c217f87b2b6911f81"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/livewire/livewire/zipball/57fd2f193072560f8615e513972db5fb9dc93501",
"reference": "57fd2f193072560f8615e513972db5fb9dc93501",
"url": "https://api.github.com/repos/livewire/livewire/zipball/11afe7b36dbb1d98e073551c217f87b2b6911f81",
"reference": "11afe7b36dbb1d98e073551c217f87b2b6911f81",
"shasum": ""
},
"require": {
@ -3258,7 +3258,7 @@
"description": "A front-end framework for Laravel.",
"support": {
"issues": "https://github.com/livewire/livewire/issues",
"source": "https://github.com/livewire/livewire/tree/v4.0.2"
"source": "https://github.com/livewire/livewire/tree/v4.0.3"
},
"funding": [
{
@ -3266,7 +3266,7 @@
"type": "github"
}
],
"time": "2026-01-21T09:09:58+00:00"
"time": "2026-01-23T06:13:46+00:00"
},
{
"name": "maennchen/zipstream-php",

View file

@ -70,12 +70,14 @@
<flux:menu.radio.group>
<flux:menu.item href="{{ route('settings.preferences') }}" wire:navigate icon="cog">Settings</flux:menu.item>
<flux:menu.item href="{{ route('settings.support') }}" wire:navigate icon="heart">Support</flux:menu.item>
<flux:menu.item href="{{ route('settings.update') }}" wire:navigate icon="arrow-down-circle">
<div class="flex items-center gap-2">
<span>Updates</span>
<livewire:update-badge />
</div>
</flux:menu.item>
@if(config('app.version'))
<flux:menu.item href="{{ route('settings.update') }}" wire:navigate icon="arrow-down-circle">
<div class="flex items-center gap-2">
<span>Updates</span>
<livewire:update-badge />
</div>
</flux:menu.item>
@endif
</flux:menu.radio.group>
<flux:menu.separator/>

View file

@ -240,7 +240,7 @@ new class extends Component
<flux:description>{!! $safeDescription !!}</flux:description>
<flux:input
type="password"
wire:model="local_configuration.{{ $fieldKey }}"
wire:model="configuration.{{ $fieldKey }}"
value="{{ $currentValue }}"
viewable
/>

View file

@ -8,7 +8,9 @@
<flux:navlist.item :href="route('user-password.edit')" wire:navigate>{{ __('Password') }}</flux:navlist.item>
@endif
<flux:navlist.item :href="route('settings.support')" wire:navigate>{{ __('Support') }}</flux:navlist.item>
<flux:navlist.item :href="route('settings.update')" wire:navigate>{{ __('Updates') }}</flux:navlist.item>
@if(config('app.version'))
<flux:navlist.item :href="route('settings.update')" wire:navigate>{{ __('Updates') }}</flux:navlist.item>
@endif
</flux:navlist>
</div>

View file

@ -121,3 +121,30 @@ test('config modal dispatches update event for parent warning refresh', function
->call('saveConfiguration')
->assertDispatched('config-updated');
});
test('config modal saves password field values correctly', function (): void {
$user = User::factory()->create();
$this->actingAs($user);
$plugin = Plugin::create([
'uuid' => Str::uuid(),
'user_id' => $user->id,
'name' => 'Test Plugin',
'data_strategy' => 'static',
'configuration_template' => [
'custom_fields' => [[
'keyname' => 'api_key',
'field_type' => 'password',
'name' => 'API Key',
]],
],
'configuration' => [],
]);
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->set('configuration.api_key', 'my-secret-password-123')
->call('saveConfiguration')
->assertHasNoErrors();
expect($plugin->fresh()->configuration['api_key'])->toBe('my-secret-password-123');
});