feat: shift tags on staff upcoming-assignments (Slice 2 of calendar sync payload) #242
No reviewers
Labels
No labels
agent:hermes
bug
chore
dependency
feature
status:blocked
status:in-progress
status:needs-info
status:needs-review
status:ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
owlburtoe/Shiftd!242
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/calendar-sync-slice-2-assignment-tags"
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?
Slice 2 of the Calendar Sync Payload enrichment (spec: docs/superpowers/specs/2026-05-28-calendar-sync-payload-design.md, Section B). Adds shift tags to the staff upcoming-assignments payload so later slices (iOS EventKit sync, ICS feed) can render tag suffixes/notes. Runs parallel to merged Slice 1 (#225); no schema change.
Changes
repositories.ts):UpcomingAssignmentSummarygains a requiredtags: string[]. Tags are bulk-loaded for the returned shift IDs throughshift_tags → tags(reusinggetTagsForShifts), orderedlower(name) ASC, name ASC, id ASC. Shifts with no tags return[]. The deterministic ordering was added togetTagsForShiftsitself, so the schedule-grid consumer (getShiftsByScheduleId) also gets stable tag order.tagsadded toStaffUpcomingAssignmentas a required string array (empty when none).staff-upcoming-assignments.test.tscovering case-insensitive ordering, thename ASCtie-break (Mangobeforemango), and[]for untagged shifts.Test plan
tagsundefined) → implemented → greenpnpm tsc --noEmitcleantagspresent + requiredcheck:runtime-contracts,check:migration-orderingpassNo migration. No frontend change (additive field). Renderer + parity fixture land with Slices 3/4A per the spec slice table.