36ac1d0df9
- Plugin routes now registered in create_app (sync context) before SPA catch-all - Previously plugin routes were added in lifespan (async) AFTER SPA catch-all - FastAPI matches routes in registration order — catch-all was shadowing plugin routes - Fixes: Calendar/Mail/DMS/Tags/Permissions returning 404 despite being in OpenAPI