v3.69.0 (2025-12-19)
๐ Features
- modular dashboards - widgets (#13683) (f111624)
- adds cursor rules and AGENTS.md to templates (#14889) (19fcf99)
Modular Dashboards with Widgets
Introduces customizable admin dashboards with draggable, resizable widgets. Build personalized dashboard layouts with full keyboard accessibility for reordering and resizing. Future updates will add widget fields (props) for configurable widgets and dashboard presets for sharing layouts. #13683
Screen.Recording.2025-11-28.at.17.13.14.mov
See the RFC discussion for background and roadmap.
AI Development Resources (templates)
All templates now ship with AGENTS.md and .cursor/rules/ directory for improved AI-assisted development with tools like Copilot and Cursor. #14889
See more about AGENTS.md
๐ Bug Fixes
- basePath not working properly with admin routes (#14967) (fa6b503)
- get field by path for blocks (#14984) (519a3c6)
- improves upload security for PDFs and SVGs (#14929) (61298c6)
- missing range headers (#14887) (ec7c192)
- next: status component incorrectly shows as published status on new documents saved as drafts when readVersions permissions are false (#14950) (394c024)
- plugin-mcp: adds collection and strategy to user (#14981) (042d7eb)
- plugin-multi-tenant: relationTo arrays inflating filterOptions where query size (#14944) (98b6791)
- richtext-lexical: blocksFeature with relationship exposes other tenants (#14985) (3025377)
- storage-s3: encode filename in generated URL (#14438) (86855e1)
- ui: use portals for popup to prevent clipping, improve keyboard navigation (#14910) (af09932)
๐ Refactors
๐ Documentation
- fix duplicate anchor links (#14976) (4c91d04)
- update screenshot for fields/rich-text (#14979) (2117dbf)
๐งช Tests
- migrate to
vitest(#14337) (4e45432) - move mongodb to different port to avoid port conflicts (#14993) (b4abd04)
- improve database test setup (#14982) (e3c512a)
- multi-tenant login tiles (#14940) (47f63fa)
๐ก Chores
๐ค Contributors
- Sasha (@r1tsuu)
- Alessio Gravili (@AlessioGr)
- Sean Zubrickas (@zubricks)
- Jarrod Flesch (@JarrodMFlesch)
- German Jablonski (@GermanJablo)
- Kendell (@kendelljoseph)
- Jake (@jacobsfletch)
- Jessica Rynkar (@jessrynkar)
- Paul (@paulpopus)
- Jens Becker (@jhb-dev)
- Patrik (@PatrikKozak)