diff --git a/resources/views/livewire/dashboard/dashboard-converter.blade.php b/resources/views/livewire/dashboard/dashboard-converter.blade.php
index b60b2b3..13661ec 100644
--- a/resources/views/livewire/dashboard/dashboard-converter.blade.php
+++ b/resources/views/livewire/dashboard/dashboard-converter.blade.php
@@ -191,8 +191,18 @@ class="flex items-center justify-between gap-4 rounded-[var(--ca-radius-md)] bor
Ready to convert {{ strtoupper($file->extension) }} to {{ strtoupper($selectedTargetFormat) }}
- Conversion will be available in Phase 9.
+
+
+ Convert Now
+ Starting…
+
@endif
diff --git a/tests/Feature/Livewire/DashboardConverterConvertTest.php b/tests/Feature/Livewire/DashboardConverterConvertTest.php
index f8380c3..4856bda 100644
--- a/tests/Feature/Livewire/DashboardConverterConvertTest.php
+++ b/tests/Feature/Livewire/DashboardConverterConvertTest.php
@@ -30,3 +30,22 @@
expect(ConversionJob::query()->count())->toBe(1);
});
+
+it('does not create duplicate conversion jobs on repeated convert calls', function () {
+ Queue::fake();
+ Storage::fake('local');
+
+ $user = User::factory()->create();
+
+ $component = Livewire::actingAs($user)
+ ->test(DashboardConverter::class)
+ ->set('upload', UploadedFile::fake()->image('avatar.png', 800, 600))
+ ->call('selectTargetFormat', 'jpg')
+ ->set('options.quality', 'high')
+ ->call('continueFromSettings');
+
+ $component->call('convert');
+ $component->call('convert');
+
+ expect(ConversionJob::query()->count())->toBe(1);
+});