0000000000000000000000000000000000000000 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren 1779570695 -0500 branch: Created from HEAD ff7995ab323538cfab022488aa3d73531413c2b4 7716223ea4daf48de25519507038584303950830 rvanvuren 1779570717 -0500 commit: Spec 003 Phase 2: Mobile shared Ably scaffolding (Live app) 7716223ea4daf48de25519507038584303950830 e18ca328c4b44862cef498b54a59baf4982e67b1 rvanvuren 1779570774 -0500 commit: Spec 003 Phase 3: Live App Full Schedule (Day/Week/2W/Month + LWW + telemetry) e18ca328c4b44862cef498b54a59baf4982e67b1 a72cd121c07a808fdaac8f674fee5104a7db45bd rvanvuren 1779816293 -0500 commit: fix(repo): revert unrelated breakType removal from createClockOverride (unbreak compile) a72cd121c07a808fdaac8f674fee5104a7db45bd 5435e6cf65a188beadbd8dfae0907a1d9f3e8c66 rvanvuren 1779816489 -0500 commit: fix(screen): refetch schedule data on Day/Month navigation outside current week window 5435e6cf65a188beadbd8dfae0907a1d9f3e8c66 02338ac62d5e3fbee7557d618d7f99dd5217c845 rvanvuren 1779816634 -0500 commit: fix(reducer): properly clear publishedAt on unpublish via copyWith sentinel 02338ac62d5e3fbee7557d618d7f99dd5217c845 1ff8db0899becb0c216de62c92f6c2126ab0f572 rvanvuren 1779816689 -0500 commit: fix(ably): forward hasUnpublishedChange from Ably payload to Shift entity 1ff8db0899becb0c216de62c92f6c2126ab0f572 f90e7f81dd3f980fb271a0a20063a88486ae7941 rvanvuren 1779816869 -0500 commit: fix(edit): don't silently drop shift date changes in edit mode f90e7f81dd3f980fb271a0a20063a88486ae7941 7d98d34715eb516a604c60085d1d3b6110b64c72 rvanvuren 1779817061 -0500 commit: fix(edit): pass sameDayShifts into overlap validation so Save blocks on real overlaps 7d98d34715eb516a604c60085d1d3b6110b64c72 887d4f26972b96f837d70197886fdeda3293f322 rvanvuren 1779817249 -0500 commit: fix(lww): pass selfEmployeeId into reducer so own self-edits don't fire override toast 887d4f26972b96f837d70197886fdeda3293f322 4f5901dd11e4426e3abff4e11624f8104a9c0929 rvanvuren 1779829682 -0500 commit: fix(analytics): replace invalid Dart map shorthand with conditional if-entries (unbreak build) 4f5901dd11e4426e3abff4e11624f8104a9c0929 e49ef7205118edb8d4bfa42bccbea0a1a93f1867 rvanvuren 1779829816 -0500 commit: fix(ably): parse Ably broadcast payload shape (shiftStart/shiftEnd) not swap-flow shape e49ef7205118edb8d4bfa42bccbea0a1a93f1867 574623f8c100656fd3ed56f94d55174bb17738aa rvanvuren 1779829995 -0500 commit: fix(ably): await Ably initialization before subscribing in schedule-only sessions 574623f8c100656fd3ed56f94d55174bb17738aa cc8beb8d0003fe6aea945cb91c87c14dd9c0174a rvanvuren 1779830142 -0500 commit: fix(screen): invalidate twoWeek/weeklyScheduleProvider after local edits (don't rely on Ably for refresh) cc8beb8d0003fe6aea945cb91c87c14dd9c0174a 3cea5e06495dd8f634e279bef4a3461f884abf16 rvanvuren 1779830387 -0500 commit: fix(month-view): load full month via dedicated monthScheduleProvider (Month days outside 2-week window were blank) 3cea5e06495dd8f634e279bef4a3461f884abf16 be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 rvanvuren 1779830615 -0500 commit: fix(edit): preserve explicit null employeeId for open-shift toggle (don't drop the unassign) be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 0c38b4faa4c28c79421e5a93ab9338c7a7554ed0 rvanvuren 1779896970 -0500 commit: fix(invalidate): refresh monthScheduleProvider after saves and on manual sync (Month view was stale) 0c38b4faa4c28c79421e5a93ab9338c7a7554ed0 df67c9ac1198c588568b8f13b2d92fb896844eac rvanvuren 1779897236 -0500 commit: fix(validation): feed monthScheduleProvider into overlap check when view=Month (overlaps outside 2-week window were silently allowed) df67c9ac1198c588568b8f13b2d92fb896844eac ad4cf8efaa5ec216beb822780417dc1fbfccbcbd rvanvuren 1779898012 -0500 commit: fix(edit-sheet): watch employeeListProvider so picker opens after async load completes ad4cf8efaa5ec216beb822780417dc1fbfccbcbd 978b07551830cc00b867477649a28ad09d96290d rvanvuren 1779898113 -0500 commit: fix(validation): normalize overnight intervals before overlap detection (split at midnight) 978b07551830cc00b867477649a28ad09d96290d b6708a6b0f58b25504f403bf4c97ef1d18761e12 rvanvuren 1779898225 -0500 commit: fix(actions): check unpublish/clear return values before logging success + refreshing b6708a6b0f58b25504f403bf4c97ef1d18761e12 782f6c7f66033f083c679ffdbf429d660459e54a rvanvuren 1779898286 -0500 commit: fix(fab): default new-shift date to visible week/month range, not today 782f6c7f66033f083c679ffdbf429d660459e54a 57812c3cc974a7ffb309078f2bda9962d5eaac3f rvanvuren 1779898349 -0500 commit: fix(month-nav): clamp selectedScheduleDateProvider to new month on month-nav tap 57812c3cc974a7ffb309078f2bda9962d5eaac3f efea1171a4bb60a74e22c6e0653e8d7f5156548f rvanvuren 1779898474 -0500 commit: fix(status): use monthScheduleProvider for status-row totals in Month mode efea1171a4bb60a74e22c6e0653e8d7f5156548f 3b1de5ccddc62a7be9e8e0aa5c2168cd43049174 rvanvuren 1779898572 -0500 commit: fix(reducer): handle 4 in-window/out-of-window quadrants for shift date changes (twoWeek + month) 3b1de5ccddc62a7be9e8e0aa5c2168cd43049174 83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 rvanvuren 1779898642 -0500 commit: fix(date-nav): use calendar arithmetic for selectedScheduleDateProvider.offset() (DST-safe) 83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 bb44935f54ed9a09b8d2a00423571a05992b3172 rvanvuren 1779900100 -0500 commit: fix(validation): use absolute DateTime intervals for overlap, widen filter to include previous-day overnights bb44935f54ed9a09b8d2a00423571a05992b3172 96d96e4023d90466ed259a2a54b2cfa5779bd429 rvanvuren 1779900284 -0500 commit: fix(edit-sheet): auto-open employee picker after async load if requested during loading (one-tap UX) 96d96e4023d90466ed259a2a54b2cfa5779bd429 0e80cb96451f959d5cdc67ca2a2d32853934cca0 rvanvuren 1779900946 -0500 commit: fix(validation): drop date prefilter; rely on absolute-interval check for cross-day overlap (next-day case was missed) 0e80cb96451f959d5cdc67ca2a2d32853934cca0 f9582840bd61f9a8e4b1f4cb53318ab8d8999c5e rvanvuren 1779901020 -0500 commit: fix(date-arithmetic): use calendar constructors not Duration(days:) for overnight roll + prev-day key (DST-safe) f9582840bd61f9a8e4b1f4cb53318ab8d8999c5e e92a829bbb3cb117190b42cea49da989db29bd76 rvanvuren 1779903521 -0500 commit: fix(repo): calendar arithmetic for getTwoWeekSchedule week-B derivation + 14-day loop (DST-safe) e92a829bbb3cb117190b42cea49da989db29bd76 099e2ce723f74c2b41ba83d4e03855444d6ae905 rvanvuren 1779903569 -0500 commit: fix(repo): calendar enumeration for getMonthSchedule (handles DST months correctly) 099e2ce723f74c2b41ba83d4e03855444d6ae905 7465295b3515cdd3495f74dab178efc77c07b72f rvanvuren 1779903667 -0500 commit: fix(screen): calendar boundary for 14-day visible-window check (DST-safe) 7465295b3515cdd3495f74dab178efc77c07b72f 23c698db46548854f46eade281d5c175f838a339 rvanvuren 1779904580 -0500 commit: fix(dst-sweep): convert 1 Duration(days:) instance in lib/presentation/providers/scheduling/day_expansion_provider.dart to calendar arithmetic 23c698db46548854f46eade281d5c175f838a339 5e44a7ac484102aca9408db516013bc396461e3c rvanvuren 1779904616 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/providers/scheduling/month_schedule_provider.dart to calendar arithmetic 5e44a7ac484102aca9408db516013bc396461e3c 6c47b70365db3ae9863ad17701911464e8f6d72f rvanvuren 1779904673 -0500 commit: fix(dst-sweep): convert 3 Duration(days:) instances in lib/presentation/providers/scheduling/two_week_schedule_provider.dart to calendar arithmetic 6c47b70365db3ae9863ad17701911464e8f6d72f 44e7c3f7e309d59b1b4a5677d714f1ee7e1d7555 rvanvuren 1779904710 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/providers/scheduling/weekly_schedule_provider.dart to calendar arithmetic 44e7c3f7e309d59b1b4a5677d714f1ee7e1d7555 7fee986516e71298eb259f940dcdc83fb8fb9ae8 rvanvuren 1779904735 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/widgets/scheduling/two_week_view.dart to calendar arithmetic 7fee986516e71298eb259f940dcdc83fb8fb9ae8 1eda1e7cd45e4674f193179b8878b4ecfce68680 rvanvuren 1779904782 -0500 commit: fix(dst-sweep): convert 6 Duration(days:) instances in lib/presentation/widgets/scheduling/copy_week_dialog.dart to calendar arithmetic 1eda1e7cd45e4674f193179b8878b4ecfce68680 88e02598967279aa983b3806c206c1ad9c8d6f05 rvanvuren 1779904815 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/widgets/scheduling/edit_shift_sheet.dart to calendar arithmetic 88e02598967279aa983b3806c206c1ad9c8d6f05 d2db141d3db049d50c5782d6f9748cbcd2205c7d rvanvuren 1779904925 -0500 commit: fix(dst-sweep): convert 13 Duration(days:) instances in lib/presentation/screens/scheduling/schedule/full_schedule_screen.dart to calendar arithmetic d2db141d3db049d50c5782d6f9748cbcd2205c7d d32ebe38168182dd75e9be231b3027f4b12210aa rvanvuren 1779904962 -0500 commit: fix(dst-sweep): correct misleading file-level docstring in lib/presentation/providers/scheduling/week_start_provider.dart d32ebe38168182dd75e9be231b3027f4b12210aa a0ade0c15ead3a0191bc7bfa1f4dd87bd73b99e0 rvanvuren 1779909246 -0500 commit: fix(overflow): anchor Month-view overflow actions to selectedScheduleDateProvider's week, not month's first week (was destructive on wrong target) a0ade0c15ead3a0191bc7bfa1f4dd87bd73b99e0 800676da715b2ec6030b11a88869e4429c6353e5 rvanvuren 1779909381 -0500 commit: fix(provider): defer Ably subscription until initial fetch resolves so realtime updates aren't dropped during load 800676da715b2ec6030b11a88869e4429c6353e5 aaabf1e2d3f270412e47f60d14960f098f89753d rvanvuren 1779909745 -0500 commit: fix(reducer): add LWW serverTimestamp check before applying shift.updated/deleted (twoWeek + month) aaabf1e2d3f270412e47f60d14960f098f89753d 8e2ecb45f6388f36f63c95dff3c4d3ae48fce362 rvanvuren 1779910459 -0500 commit: fix(weekly-provider): defer Ably subscribe + add LWW serverTimestamp check (round-9 closeout) 8e2ecb45f6388f36f63c95dff3c4d3ae48fce362 1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 rvanvuren 1779911137 -0500 commit: fix(nav): clamp selectedScheduleDateProvider to new visible range on Week/2W chevron (overflow actions were targeting stale week) 1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 a60f642f1a7ea6381bf1c3acbb621cc2c2eeba88 rvanvuren 1779911561 -0500 commit: fix(clear-week): cover month-boundary days when clearing a week in Month mode (was leaving adjacent-month shifts) a60f642f1a7ea6381bf1c3acbb621cc2c2eeba88 540940db107a95f798d497a55f61e02b5bcfd8e4 rvanvuren 1779911667 -0500 commit: fix(repo): dedup by shiftId in two-week/month fan-out (overnight shifts were duplicated) 540940db107a95f798d497a55f61e02b5bcfd8e4 71b7199b40f11a5f7208da70252e49897dc6817e rvanvuren 1779911844 -0500 commit: fix(reducer): clear hasUnpublishedChange + publishedAt on schedule.unpublished events (EDITED badges were stuck) 71b7199b40f11a5f7208da70252e49897dc6817e 8c75b010ae896d7c8ed8a38502e153ebb0e49d00 rvanvuren 1779912493 -0500 commit: fix(reducer): bump summary counts on shift.created/shift.deleted (paired-event asymmetry) 8c75b010ae896d7c8ed8a38502e153ebb0e49d00 8b86c3766ec54d3ac1f7c880b968627d036c8e5e rvanvuren 1782484530 -0500 commit: Updating Everything 8b86c3766ec54d3ac1f7c880b968627d036c8e5e 66e541aeeee5efa326726363eab7ccf8f6c0da22 rvanvuren 1784236959 -0500 commit: feat(scheduling): shift-offer approvals in manager queue, employee week-start honoring 66e541aeeee5efa326726363eab7ccf8f6c0da22 018a149c5375a6413620cf316c8f5e39f90f5199 rvanvuren 1784307127 -0500 commit: feat(chat): attachment send + role-based moderation delete 018a149c5375a6413620cf316c8f5e39f90f5199 6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d rvanvuren 1784315895 -0500 commit: chore: bump version to 4.2.0+15 6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d 4737f9fba1c7685429bfae3a58f3756eadfc3c40 rvanvuren 1788021185 -0500 commit: chore: checkpoint pending scheduling work