- Add api_call_machine() function for GANTT_MACHINE_TOKEN auth
- Update api_call() to use machine token when available
- Same pattern applied to both api_client.sh and gantt.sh
- Allows cron jobs to authenticate without cookie-based login
- No breaking changes - cookie auth still works for interactive use
- Sprint tasks in main Kanban view now sorted by updatedAt descending
- Fixes issue where Done column tasks weren't sorted properly
- Matches sorting in SprintBoard.tsx and BacklogView.tsx
- BacklogView: Sort current sprint tasks, backlog, and other sprint tasks by last updated
- SprintBoard: Sort sprint tasks by updatedAt descending
- Ensures latest updated tasks appear at top of each section
- Sprint end dates now treated as end-of-day (23:59:59) to handle timezone issues
where sprints appeared empty before local midnight
- Added auto-rollover: when a sprint ends, incomplete tasks automatically
move to the next sprint, ended sprint marked as completed
- Applied fix to both main page and BacklogView
Removed public CRUD for internal tables:
- Deleted /api/meta - internal key-value store
- Deleted /api/users - use auth endpoints instead
- Removed CLI commands: user admin and meta operations
Core app tables with CRUD:
✅ tasks - Full CRUD
✅ projects - Full CRUD (list, get, create, update, delete)
✅ sprints - Full CRUD (list, get, create, update, delete)
Auth tables (internal, no public CRUD):
- users - Managed via /api/auth/* endpoints
- sessions - Managed by auth system
- password_reset_tokens - Managed by forgot/reset flow
- meta - Internal use only
New API endpoints:
- GET /api/projects/[id] - Get single project
- GET /api/sprints/[id] - Get single sprint
New CLI commands:
- project get <id> - Get specific project
- sprint get <id> - Get specific sprint
Project and Sprint CRUD now complete:
✅ list, get, create, update, delete
New API endpoints:
- /api/meta (GET, POST, DELETE) - Meta key-value store CRUD
- /api/users (GET, PATCH, DELETE) - User admin CRUD
New CLI commands:
- user get/update/delete - Admin user management
- meta list/get/set/delete - Meta key-value management
Tables now with full CRUD:
✅ tasks - Full CRUD
✅ projects - Full CRUD
✅ sprints - Full CRUD
✅ users - Full CRUD (list, get, create via register, update, delete)
✅ meta - Full CRUD (list, get, set/create/update, delete)
Internal tables (no public CRUD needed):
- sessions - Managed by auth system
- password_reset_tokens - Managed by forgot/reset password flows