Files
famous-ly4-ev/.ai/rules/pages.md
T
Nyan Lin Paing b8d31e3dc4 Add bnfexpress signed admin client and AI Agent Filament UI
- Modules\Shared\Bnfexpress\BnfexpressAdminClient: HMAC-signed HTTP client
  for bnfexpress's admin API (EV FAQs, agent instructions, chat history),
  with a bnfexpress:smoke-test command and full unit coverage.
- New ai-agent module: Filament pages to manage EV FAQs, publish/roll back
  agent instruction versions, and browse EV chat history + transcripts.
- New manage_ai_agent permission (super_admin/admin).
- Recorded .ai/rules for the client's auth scheme and non-Resource
  Filament page/table testing gotchas.
2026-08-30 23:52:21 +07:00

1.4 KiB

paths
paths
app-modules/*/src/Filament/Pages/**

Pages

Non-Resource Filament pages need an explicit table-rendering view + deferLoading-aware tests

A Filament\Pages\Page implements HasTable (not a Resource) does NOT render its table automatically — it must set protected string $view = '<module>::filament.pages.<slug>'; pointing at a Blade file containing <x-filament-panels::page>{{ $this->table }}</x-filament-panels::page> (see ManageFaqs/ViewEvChatHistory/BookingsRevenueReport). Omitting this silently renders an empty page — no error, just a blank fi-page-content.

Filament v4 tables default to deferred loading. In Pest/Livewire tests, call ->loadTable() before any assertSee()/assertCanSeeTableRecords() on a freshly-mounted component, or the table body won't be in the rendered HTML yet.

For custom-data (->records()-backed, non-Eloquent) tables: use ->callTableAction($name, $record, data: [...]) / ->mountTableAction(...) (not the generic ->callAction(), which targets page-level actions and misses table header/record actions), and use ->assertMountedActionModalSee(...) to check ->modalContent() output — modal content is lazily rendered and won't appear in a plain ->html()/->assertSee() snapshot even after mounting the action. See [[project_internachi_modular]]-style module layout in app-modules/ai-agent.