Merge dev-2026-03-22 into main #12
Reference in New Issue
Block a user
Delete Branch "dev-2026-03-22"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Backend: merge dev-2026-03-22 to main
- New dedicated meetings.py router with full CRUD (list/get/create/update/delete) - All endpoints accept meeting_code or numeric id - MeetingParticipant model for tracking meeting attendance - POST /meetings/{id}/attend adds current user to participant list - Serialization includes participants list, project_code, milestone_code - Creator auto-added as participant on meeting creation - Registered in main.py alongside existing routers- New GET /supports endpoint for listing all support tickets across projects - Supports optional ?status= and ?taken_by= (me|null|username) query params - Ordered by created_at descending - Complements the existing scoped /supports/{project_code}/{milestone_id} endpoint- Fix: /milestones?project_id= now accepts project_code (str) not just int - Add: built-in acc-mgr user created on wizard init (account-manager role, no login, undeletable) - Add: POST /users/{id}/reset-apikey with permission-based access control - Add: GET /auth/me/apikey-permissions for frontend capability check - Add: user.reset-self-apikey and user.reset-apikey permissions - Protect admin and acc-mgr accounts from deletion - Block acc-mgr from login (/auth/token returns 403)- All /tasks/{task_id} endpoints now accept both numeric id and task_code string - All /milestones/{milestone_id} endpoints (misc.py) now accept both numeric id and milestone_code - Added _resolve_task() and _resolve_milestone() helpers - GET /config/status reads initialization state from config volume (no wizard dependency) - MilestoneResponse schema now includes milestone_code field - Comments and worklog endpoints also accept task_code