AI Overview button on client, project, and board detail pages — opens a streaming conversation modal powered by Anthropic Claude; summarises current state and answers follow-up questions
AI Diagnostics page for admins at /admin/ai — free-form conversation about system state, user counts, time entry volumes, and application behaviour
PM Consultant check-in AI button on the Capacity Planner — ask questions about a consultant's workload and allocation
Settings → AI section — admin can enable AI and enter the Anthropic API key without a redeploy; key stored in the database (never in env vars)
app/services/ai_context.py — context builders for client, project, board, admin, and consultant entities; uses only metadata (no encrypted card bodies)
app/api/ai.py — POST /api/v1/ai/chat streaming SSE endpoint; requires authenticated session; respects ai_enabled flag
Migration 0046: ai_enabled and anthropic_api_key columns on settings table
v1.5.02026-05-01
Added
Capacity Planner at /program/capacity — 8-week forward grid per consultant showing committed allocation hours plus estimated card demand (estimate_days × 8h bucketed by due date), colour-coded green/amber/red against weekly capacity; hover tooltip shows breakdown
Capacity Planner linked from Program Dashboard header
Milestone forecast — projected completion date calculated from estimate velocity (days completed in done swimlanes over last 4 weeks ÷ 4) shown on milestone detail header and milestones list alongside the target end date
Milestones list flags projected dates that overshoot the end date in red
v1.4.02026-05-01
Added
Card estimates — estimate_days (Float, 0.5-day steps) field on every card; editable in the card edit form and displayed as a badge on card detail and board task tables
Estimate vs Actual section on project Reports tab — per-card estimate, logged hours, and variance; totals row; note when no cards have estimates yet
v1.3.02026-05-01
Added
Decision model — create, view, and archive decisions per client or project with encrypted content; Decisions tab on client and project detail pages
Lessons Learned — freetext field on projects; visible on project detail Overview tab
Meeting Note card type — new card_type option alongside Epic, Task, Subtask, Risk, Assumption, Issue, Dependency
Swimlane management UI — rename, reorder, and toggle is_done on swimlanes from Board Settings
Standup job updated to skip meeting_note cards in daily summary output
v1.2.02026-05-01
Added
Program Dashboard at /program — cross-client portfolio view for PMs and admins: engagement health grid, upcoming milestones (next 14 days), open RAID inbox, and pending approval count
User-scoped weekly report accessible from My Timesheets
v1.1.12026-05-01
Added
iCal feed at /calendars/<token>.ics — personal read-only calendar with standup occurrences and due-date card events; token generated from Preferences page
v1.1.02026-05-01
Added
Email notification transport — per-user opt-in via Settings; SMTP configured globally in Settings → Notifications
Slack notification transport — webhook URL configured in Settings → Notifications
Stakeholder weekly digest — email sent to client contacts with notify_weekly=true; includes hours logged, open RAID items, and upcoming milestones; configurable send day/hour per client and per contact; dedup prevents duplicate sends within an ISO week
Digest CLI command: flask send-digest [--force]
Digest Preview tab on client detail
Unsubscribe endpoint at /unsubscribe/<token> — no auth required
Board status and Archived tabs on board detail
Fixed
Alpine.js single-quote collision in boardStatus x-data attribute
Milestone query in digest preview returning wrong results
v1.0.02026-04-30
Added
Production baseline release — all v0.x features stable and deployed to cluster
v0.5.82026-04-30
Added
Board-level PM and Consultant assignment — set in Board Settings, shown in the board header panel and on each board card in the client overview
v0.5.72026-04-30
Added
Client detail header now shows an Assigned panel (PM and Consultants) in the top-right corner
v0.5.62026-04-30
Added
Dashboard Due Dates section — cards assigned to you with due dates, split into Overdue (red), Due Soon (amber), and Upcoming (gray) groups
Due soon window preference in Preferences — configurable 1–90 days, default 3; controls the amber Due Soon threshold
v0.5.52026-04-30
Fixed
Board grant access failing with 500 — services.board_grants was not importable (broken import pattern)
Revoke grant button calling wrong API URL (used user_id instead of grant_id)
v0.5.42026-04-30
Added
Web and worker pods automatically restart after a successful restore — no manual kubectl rollout restart needed
RBAC Role extended to allow the app ServiceAccount to patch Deployments in its own namespace
v0.5.32026-04-30
Fixed
Restore failing with encryption_key_id mismatch on backups that pre-date key ID tracking — check now skipped when manifest has no key ID set
v0.5.22026-04-30
Added
Settings → Demo Data section: seed the Globex dataset (8 users, 15 projects, 12-month history) from the UI without a CLI hop
Seed runs as a background thread with live spinner and status polling — won't timeout the web request
Clickable version badge opens full changelog modal
v0.5.12026-04-30
Added
Clickable version badge under logo opens a changelog modal with colour-coded Added/Fixed/Changed sections
v0.5.02026-04-30
Added
Backup file download from Admin → Backups
Backup import — upload a previously downloaded .enc file and restore from it
Upload progress bar in the import modal
Flux Image Automation — pushes to main now trigger automatic cluster rollouts without manual kubectl restarts
Fixed
Backup storage path resolved to ./storage instead of /app/storage, causing 500 errors on download
Upload size limit raised to 512 MB to accommodate backup file imports
ImageUpdateAutomation template updated to .Changed.Changes API (Flux v2.8+ requirement)
v0.4.02026-04-30
Added
Role assumption — admin can assume any non-admin user; PM can assume consultants (read-only)
Amber banner on all pages when an assumption session is active
Exit assumed role button in banner
Audit log filter for assumed-role activity only
All activity during assumption is logged under the real actor with _assumed_as metadata
Version number displayed under the kanban-time logo
Changed
Nav bar reorganised into Management and Admin dropdown groups
PM assumption sessions are read-only — all mutation API calls blocked
v0.3.02026-04-29
Added
Admin can edit user permission sets (admin / PM roles)
Founding admin (first created user) is permanently protected — permissions cannot be changed
System role badges (Admin / PM / Consultant) shown on profile page
Per-project consultant titles assignable by PM on the client detail page (inline click-to-edit)
v0.2.02026-04-28
Added
Backup and restore system with encrypted .tar.gz.enc files
Separate BACKUP_ENCRYPTION_KEY — independent from MASTER_KEY so backups survive cluster loss
Admin → Backups page with live status polling and log viewer modal
Ad-hoc backup trigger from the UI
Restore confirmation modal with data-loss warning
Scheduled backup CronJob support (chart-level, cadence configurable in Settings)
Optional S3 mirror for backup files
DEMO_MODE support — seeds Globex dataset on first-user setup and creates a restorable demo baseline
Fixed
Backup log modal no longer closes on status poll refresh
Backup directory created automatically before encrypt step in backup.sh
v0.1.02026-04-20
Added
Kanban board management with columns and cards
Time tracking — start/pause/stop timers per card
Timecard views and weekly reports
Client and project management
Consultant utilisation reports
First-user setup page — no kubectl exec required to bootstrap admin
Standup report generation
Role-based access: Admin, Program Manager, Consultant