diff --git a/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php b/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php index f7b9550..e7ad193 100644 --- a/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php +++ b/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php @@ -26,6 +26,18 @@ class ManagedTenantsLanding extends Page public Workspace $workspace; + /** + * The Filament simple layout renders the topbar by default, which includes + * lazy-loaded database notifications. On this workspace-scoped landing page, + * those background Livewire requests currently 404. + */ + protected function getLayoutData(): array + { + return [ + 'hasTopbar' => false, + ]; + } + public function mount(Workspace $workspace): void { $this->workspace = $workspace; diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 27d50c4..fa93f01 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -163,9 +163,11 @@ public function panel(Panel $panel): Panel ) ->renderHook( PanelsRenderHook::BODY_END, - fn () => (bool) config('tenantpilot.bulk_operations.progress_widget_enabled', true) - ? view('livewire.bulk-operation-progress-wrapper')->render() - : '' + fn (): string => request()->routeIs('admin.workspace.managed-tenants.index') + ? '' + : ((bool) config('tenantpilot.bulk_operations.progress_widget_enabled', true) + ? view('livewire.bulk-operation-progress-wrapper')->render() + : '') ) ->resources([ TenantResource::class, diff --git a/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php b/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php index 65c2b4f..4edcca5 100644 --- a/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php +++ b/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php @@ -34,6 +34,12 @@ $html = $response->getContent(); + // This landing page must not include Livewire-driven panel widgets that + // trigger background updates (lazy-loaded database notifications, progress poller). + expect($html)->not->toContain('Filament\\Livewire\\DatabaseNotifications'); + expect($html)->not->toContain('__lazyLoad'); + expect($html)->not->toContain('opsUxProgressWidgetPoller'); + // 2. Extract the first Livewire component snapshot preg_match('/wire:snapshot="([^"]+)"/', $html, $snapshotMatch); expect($snapshotMatch)->not->toBeEmpty('No Livewire snapshot found in page HTML');