tomatophp/filament-bookmarks-menu
A Filament plugin that adds a bookmarks menu to your admin panel, letting users save and quickly revisit favorite pages, resources, and records from a convenient header dropdown.
The v5.0.0 release is primarily a compatibility and correctness release: it adds Filament v5 / Laravel 12–13 support (fixing the Filament v4 install error, #2) and tightens visibility rules around private bookmark folders.
First steps:
v3 branch — do not pull v5.0.0.->plugins([...])), then publish and run migrations so ownership columns exist before creating folders.Where to look first: the published migration (ownership column and indexes), the plugin config (navigation group, sort, label), and the bookmark folder resource/page — that is where visibility, actions, and redirect behavior are enforced.
Ownership as the source of truth. Private folders are now filtered by owner in the sidebar, the page, and the actions. Treat the ownership column as authoritative and backfill existing rows deliberately: null (or whatever the package uses for shared) means visible to everyone, a user id means private. Do the backfill in the same deploy as the migration, before users hit the page.
Scope in queries, not just UI. If you build any custom listing, report, export, or dashboard widget over bookmark folders, add the same owner constraint the plugin uses. The v5 fixes cover the plugin's own surfaces; they do not cover your custom queries.
Multi-panel and tenancy. Register the plugin per panel and decide whether folders are shared across panels or namespaced per panel. If you use Filament tenancy, add the tenant key alongside the owner column and put a unique index on (owner_id, tenant_id, name)-style combinations to avoid duplicate folders per tenant.
Programmatic bookmarks. Creating folders/links from seeders, onboarding flows, or "save this page" buttons is fine via the models — just always set the owner explicitly. A missing owner silently produces a shared folder, which is the most common way private data leaks in this pattern.
Actions and authorization. Keep policy/permission checks in your policies so the plugin's actions and your custom actions agree. v5 makes removing a link touch only folders the user can see — if any internal workflow depended on "remove everywhere" semantics, replace it with an explicit admin path.
Dynamic link targets. Store the panel-relative URL or route name rather than an absolute URL when you generate bookmarks in code; panel path changes otherwise leave dead links. Keep labels and icons as data, not markup.
Redirect reliance. The no-id redirect to first visible folder is convenient for navigation menu entries — point your "Bookmarks" nav item at the page without an id and let the plugin resolve the destination.
Upgrade validation. The new test suite is the fastest way to confirm behavior on your Filament version. Run it in your app's CI context (or mirror its cases) against your database driver before rollout.
^5.0 only where Filament v5 is present; keep v3 apps on the v3 branch and note it in your upgrade docs.down() and that ownership columns/indexes are dropped cleanly before deploying to production — this release adds schema you will want to reverse safely.How can I help you explore Laravel packages today?