The IT Service Requests list tile still used the legacy StatusPill (violet
"DRAFT"); make it semantic like the detail header. Extract the ISR status ->
StatusKind mapping into a shared helper so list and detail stay in sync.
- New isr_status_kind.dart (public isrStatusKind); removed the private duplicate
from the detail screen.
- _RequestTile now uses StatusPill.kind(isrStatusKind(status), ...).
(The request cards were already content-dense; no layout change needed.)
Verified: flutter analyze lib clean; flutter build web green.
Co-Authored-By: claude-flow <ruv@ruv.net>
Reduce dead whitespace and align the Reports charts to the cyber card language.
Layout only — charts, data and PDF export untouched.
- report_card_wrapper.dart: flat tonal fill + hairline outline + token radius
(was surfaceContainerLow + hard 16 radius, no border); uppercase telemetry
card title to match section headers.
- status_charts.dart / request_distribution_charts.dart: donut charts now use a
fixed 150px donut with an Expanded legend beside it (was an Expanded donut +
cramped right legend, leaving a large central gap); card height 220 -> 180.
Verified: flutter analyze lib clean; flutter build web green; visual QA (Reports)
in dark.
Co-Authored-By: claude-flow <ruv@ruv.net>
Re-theme TasQ with a refined enterprise "Cyber/IT" identity on Material 3.
Functionality is unchanged — only color/shape tokens and a few state widgets.
Foundation:
- Hand-tuned light + dark ColorSchemes (deep-slate surfaces, azure/teal/violet
accents), tightened 12-16dp shape language, flat hairline-outlined cards.
- New AppStatusColors theme extension (success/warning/danger/info/neutral,
per-brightness) replacing scattered raw Colors.green/orange/red/grey so status
color is consistent and legible in dark mode.
- New TechChip mono primitive; StatusPill.kind; M3Card hairline variants;
tightened AppSurfaces radii.
Per-screen:
- Tokenized status colors + radii across dashboard, tickets, tasks, IT service
requests, attendance, whereabouts, network map, reports charts, auth, and
shared/admin screens. Added _ticketStatusKind/_taskStatusKind/_isrStatusKind
mappers so status carries meaning consistently.
- Fixed white pie-slice borders for dark mode; dropped ad-hoc dialog radius
overrides in favor of the theme default. Categorical palettes (leave-type
icons, team color picker, distribution charts) intentionally preserved.
Verified: flutter analyze lib clean; flutter build web green; visual QA in
light and dark (dashboard, tickets, attendance).
Co-Authored-By: claude-flow <ruv@ruv.net>
Adds comprehensive push notification reminders using pg_cron + pg_net:
- Shift check-in reminder (15 min before, with countdown banner)
- Shift check-out reminder (hourly, persistent until checkout)
- Overtime idle reminder (15 min without task)
- Overtime checkout reminder (30 min after task completion)
- IT service request event reminder (1 hour before event)
- IT service request evidence reminder (daily)
- Paused task reminder (daily)
- Backlog reminder (15 min before shift end)
- Pass slip expiry reminder (15 min before 1-hour limit, with countdown banner)
Database: Extended scheduled_notifications table to support polymorphic references
(schedule_id, task_id, it_service_request_id, pass_slip_id) with unique constraint
and epoch column for deduplication. Implemented 8 enqueue functions + master dispatcher.
Uses pg_cron every minute to enqueue and pg_net to trigger process_scheduled_notifications
edge function, eliminating need for external cron job. Credentials stored in vault with
GUC fallback for flexibility.
Flutter: Added ShiftCountdownBanner and PassSlipCountdownBanner widgets that display
persistent countdown timers for active shifts and pass slips. Both auto-dismiss when
user completes the action. FCM handler triggers shift countdown on start_15 messages.
navigate_to field in data payload enables flexible routing to any screen.
Edge function: Updated process_scheduled_notifications to handle all 9 types with
appropriate titles, bodies, and routing. Includes pass_slip_id in idempotency tracking.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>