0000000000000000000000000000000000000000 3d4e36b55c1594aafff6b74aab65419150e790b1 rvanvuren <ryan@buyerkiosk.com> 1765046242 -0600	commit (initial): Initial commit from Specify template
3d4e36b55c1594aafff6b74aab65419150e790b1 2dea65fa8ff423020c11bed5130398b2f620ce79 rvanvuren <ryan@buyerkiosk.com> 1765046713 -0600	commit: docs: establish constitution v1.0.0 and align templates
2dea65fa8ff423020c11bed5130398b2f620ce79 2dea65fa8ff423020c11bed5130398b2f620ce79 rvanvuren <ryan@buyerkiosk.com> 1765047582 -0600	checkout: moving from master to 001-bottom-nav
2dea65fa8ff423020c11bed5130398b2f620ce79 0d73637bff851c8cfc21646bfd149d1194414a0f rvanvuren <ryan@buyerkiosk.com> 1767202754 -0600	commit: feat: Add bottom navigation, scheduling module, and spec infrastructure
0d73637bff851c8cfc21646bfd149d1194414a0f 2dea65fa8ff423020c11bed5130398b2f620ce79 rvanvuren <ryan@buyerkiosk.com> 1767202769 -0600	checkout: moving from 001-bottom-nav to master
2dea65fa8ff423020c11bed5130398b2f620ce79 0d73637bff851c8cfc21646bfd149d1194414a0f rvanvuren <ryan@buyerkiosk.com> 1767202769 -0600	merge 001-bottom-nav: Fast-forward
0d73637bff851c8cfc21646bfd149d1194414a0f 0d73637bff851c8cfc21646bfd149d1194414a0f rvanvuren <ryan@buyerkiosk.com> 1767202778 -0600	checkout: moving from master to 003-unified-jwt-auth
0d73637bff851c8cfc21646bfd149d1194414a0f 18ae0df993ada631e1266c00bf7147c137fed329 rvanvuren <ryan@buyerkiosk.com> 1767485308 -0600	commit: docs: Add Staff Chat API breaking change notification
18ae0df993ada631e1266c00bf7147c137fed329 18ae0df993ada631e1266c00bf7147c137fed329 rvanvuren <ryan@buyerkiosk.com> 1770327362 -0600	reset: moving to HEAD
18ae0df993ada631e1266c00bf7147c137fed329 18ae0df993ada631e1266c00bf7147c137fed329 rvanvuren <ryan@buyerkiosk.com> 1772303599 -0600	reset: moving to HEAD
18ae0df993ada631e1266c00bf7147c137fed329 bec5c92057a0bfe23552973f4a9c2af8812b2842 rvanvuren <ryan@buyerkiosk.com> 1777991292 -0500	commit: feat: Unified JWT auth, store navigation, backstock CRUD, chat integration, and scheduling rewrite
bec5c92057a0bfe23552973f4a9c2af8812b2842 0491bf8a6789602347955e35007cb4cb2b41d3b2 rvanvuren <ryan@buyerkiosk.com> 1778188435 -0500	commit: fix(backstock): resolve mobile bin create false-error and broken search
0491bf8a6789602347955e35007cb4cb2b41d3b2 fa0ba39a3c0a2fad6f63604c62edfb7544d86bb4 rvanvuren <ryan@buyerkiosk.com> 1778193952 -0500	commit: fix(backstock): harden mobile bin create + search end-to-end
fa0ba39a3c0a2fad6f63604c62edfb7544d86bb4 5e6a16b4384c72881d5dd23e1d69f67b7e02bc38 rvanvuren <ryan@buyerkiosk.com> 1778252849 -0500	commit: chore(release): bump version to 4.0.2+11 for App Store / Play Store
5e6a16b4384c72881d5dd23e1d69f67b7e02bc38 288a6be0fd8ca981582cec08d5c6fcabe92ef0fe rvanvuren <ryan@buyerkiosk.com> 1778257655 -0500	commit: fix(ios): add NSMicrophoneUsageDescription for App Store validation (build 12)
288a6be0fd8ca981582cec08d5c6fcabe92ef0fe ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1778861441 -0500	commit: feat(release): Intercom chat + push integration, dashboard nav
ff7995ab323538cfab022488aa3d73531413c2b4 0d73637bff851c8cfc21646bfd149d1194414a0f rvanvuren <ryan@buyerkiosk.com> 1778872688 -0500	checkout: moving from 003-unified-jwt-auth to master
0d73637bff851c8cfc21646bfd149d1194414a0f ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1778872688 -0500	merge 003-unified-jwt-auth: Fast-forward
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779478103 -0500	reset: moving to HEAD
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779478788 -0500	reset: moving to HEAD
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779478810 -0500	reset: moving to HEAD
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779478928 -0500	reset: moving to HEAD
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779479053 -0500	reset: moving to HEAD
ff7995ab323538cfab022488aa3d73531413c2b4 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1779570695 -0500	checkout: moving from master to spec-003-schedule-visibility
ff7995ab323538cfab022488aa3d73531413c2b4 7716223ea4daf48de25519507038584303950830 rvanvuren <ryan@buyerkiosk.com> 1779570717 -0500	commit: Spec 003 Phase 2: Mobile shared Ably scaffolding (Live app)
7716223ea4daf48de25519507038584303950830 e18ca328c4b44862cef498b54a59baf4982e67b1 rvanvuren <ryan@buyerkiosk.com> 1779570774 -0500	commit: Spec 003 Phase 3: Live App Full Schedule (Day/Week/2W/Month + LWW + telemetry)
e18ca328c4b44862cef498b54a59baf4982e67b1 a72cd121c07a808fdaac8f674fee5104a7db45bd rvanvuren <ryan@buyerkiosk.com> 1779816293 -0500	commit: fix(repo): revert unrelated breakType removal from createClockOverride (unbreak compile)
a72cd121c07a808fdaac8f674fee5104a7db45bd 5435e6cf65a188beadbd8dfae0907a1d9f3e8c66 rvanvuren <ryan@buyerkiosk.com> 1779816489 -0500	commit: fix(screen): refetch schedule data on Day/Month navigation outside current week window
5435e6cf65a188beadbd8dfae0907a1d9f3e8c66 02338ac62d5e3fbee7557d618d7f99dd5217c845 rvanvuren <ryan@buyerkiosk.com> 1779816634 -0500	commit: fix(reducer): properly clear publishedAt on unpublish via copyWith sentinel
02338ac62d5e3fbee7557d618d7f99dd5217c845 1ff8db0899becb0c216de62c92f6c2126ab0f572 rvanvuren <ryan@buyerkiosk.com> 1779816689 -0500	commit: fix(ably): forward hasUnpublishedChange from Ably payload to Shift entity
1ff8db0899becb0c216de62c92f6c2126ab0f572 f90e7f81dd3f980fb271a0a20063a88486ae7941 rvanvuren <ryan@buyerkiosk.com> 1779816869 -0500	commit: fix(edit): don't silently drop shift date changes in edit mode
f90e7f81dd3f980fb271a0a20063a88486ae7941 7d98d34715eb516a604c60085d1d3b6110b64c72 rvanvuren <ryan@buyerkiosk.com> 1779817061 -0500	commit: fix(edit): pass sameDayShifts into overlap validation so Save blocks on real overlaps
7d98d34715eb516a604c60085d1d3b6110b64c72 887d4f26972b96f837d70197886fdeda3293f322 rvanvuren <ryan@buyerkiosk.com> 1779817249 -0500	commit: fix(lww): pass selfEmployeeId into reducer so own self-edits don't fire override toast
887d4f26972b96f837d70197886fdeda3293f322 4f5901dd11e4426e3abff4e11624f8104a9c0929 rvanvuren <ryan@buyerkiosk.com> 1779829682 -0500	commit: fix(analytics): replace invalid Dart map shorthand with conditional if-entries (unbreak build)
4f5901dd11e4426e3abff4e11624f8104a9c0929 e49ef7205118edb8d4bfa42bccbea0a1a93f1867 rvanvuren <ryan@buyerkiosk.com> 1779829816 -0500	commit: fix(ably): parse Ably broadcast payload shape (shiftStart/shiftEnd) not swap-flow shape
e49ef7205118edb8d4bfa42bccbea0a1a93f1867 574623f8c100656fd3ed56f94d55174bb17738aa rvanvuren <ryan@buyerkiosk.com> 1779829995 -0500	commit: fix(ably): await Ably initialization before subscribing in schedule-only sessions
574623f8c100656fd3ed56f94d55174bb17738aa cc8beb8d0003fe6aea945cb91c87c14dd9c0174a rvanvuren <ryan@buyerkiosk.com> 1779830142 -0500	commit: fix(screen): invalidate twoWeek/weeklyScheduleProvider after local edits (don't rely on Ably for refresh)
cc8beb8d0003fe6aea945cb91c87c14dd9c0174a 3cea5e06495dd8f634e279bef4a3461f884abf16 rvanvuren <ryan@buyerkiosk.com> 1779830387 -0500	commit: fix(month-view): load full month via dedicated monthScheduleProvider (Month days outside 2-week window were blank)
3cea5e06495dd8f634e279bef4a3461f884abf16 be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 rvanvuren <ryan@buyerkiosk.com> 1779830615 -0500	commit: fix(edit): preserve explicit null employeeId for open-shift toggle (don't drop the unassign)
be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 rvanvuren <ryan@buyerkiosk.com> 1779830679 -0500	reset: moving to HEAD
be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 rvanvuren <ryan@buyerkiosk.com> 1779830745 -0500	reset: moving to HEAD
be8f8e6f8ebff21499b3182e8e3b4f68e3e38a35 0c38b4faa4c28c79421e5a93ab9338c7a7554ed0 rvanvuren <ryan@buyerkiosk.com> 1779896970 -0500	commit: fix(invalidate): refresh monthScheduleProvider after saves and on manual sync (Month view was stale)
0c38b4faa4c28c79421e5a93ab9338c7a7554ed0 df67c9ac1198c588568b8f13b2d92fb896844eac rvanvuren <ryan@buyerkiosk.com> 1779897236 -0500	commit: fix(validation): feed monthScheduleProvider into overlap check when view=Month (overlaps outside 2-week window were silently allowed)
df67c9ac1198c588568b8f13b2d92fb896844eac ad4cf8efaa5ec216beb822780417dc1fbfccbcbd rvanvuren <ryan@buyerkiosk.com> 1779898012 -0500	commit: fix(edit-sheet): watch employeeListProvider so picker opens after async load completes
ad4cf8efaa5ec216beb822780417dc1fbfccbcbd 978b07551830cc00b867477649a28ad09d96290d rvanvuren <ryan@buyerkiosk.com> 1779898113 -0500	commit: fix(validation): normalize overnight intervals before overlap detection (split at midnight)
978b07551830cc00b867477649a28ad09d96290d b6708a6b0f58b25504f403bf4c97ef1d18761e12 rvanvuren <ryan@buyerkiosk.com> 1779898225 -0500	commit: fix(actions): check unpublish/clear return values before logging success + refreshing
b6708a6b0f58b25504f403bf4c97ef1d18761e12 782f6c7f66033f083c679ffdbf429d660459e54a rvanvuren <ryan@buyerkiosk.com> 1779898286 -0500	commit: fix(fab): default new-shift date to visible week/month range, not today
782f6c7f66033f083c679ffdbf429d660459e54a 57812c3cc974a7ffb309078f2bda9962d5eaac3f rvanvuren <ryan@buyerkiosk.com> 1779898349 -0500	commit: fix(month-nav): clamp selectedScheduleDateProvider to new month on month-nav tap
57812c3cc974a7ffb309078f2bda9962d5eaac3f efea1171a4bb60a74e22c6e0653e8d7f5156548f rvanvuren <ryan@buyerkiosk.com> 1779898474 -0500	commit: fix(status): use monthScheduleProvider for status-row totals in Month mode
efea1171a4bb60a74e22c6e0653e8d7f5156548f 3b1de5ccddc62a7be9e8e0aa5c2168cd43049174 rvanvuren <ryan@buyerkiosk.com> 1779898572 -0500	commit: fix(reducer): handle 4 in-window/out-of-window quadrants for shift date changes (twoWeek + month)
3b1de5ccddc62a7be9e8e0aa5c2168cd43049174 83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 rvanvuren <ryan@buyerkiosk.com> 1779898642 -0500	commit: fix(date-nav): use calendar arithmetic for selectedScheduleDateProvider.offset() (DST-safe)
83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 rvanvuren <ryan@buyerkiosk.com> 1779898832 -0500	reset: moving to HEAD
83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 rvanvuren <ryan@buyerkiosk.com> 1779898840 -0500	reset: moving to HEAD
83b1f5e7c7bf0822f021e40ff95b5b59e4df6666 bb44935f54ed9a09b8d2a00423571a05992b3172 rvanvuren <ryan@buyerkiosk.com> 1779900100 -0500	commit: fix(validation): use absolute DateTime intervals for overlap, widen filter to include previous-day overnights
bb44935f54ed9a09b8d2a00423571a05992b3172 96d96e4023d90466ed259a2a54b2cfa5779bd429 rvanvuren <ryan@buyerkiosk.com> 1779900284 -0500	commit: fix(edit-sheet): auto-open employee picker after async load if requested during loading (one-tap UX)
96d96e4023d90466ed259a2a54b2cfa5779bd429 0e80cb96451f959d5cdc67ca2a2d32853934cca0 rvanvuren <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 1779901020 -0500	commit: fix(date-arithmetic): use calendar constructors not Duration(days:) for overnight roll + prev-day key (DST-safe)
f9582840bd61f9a8e4b1f4cb53318ab8d8999c5e e92a829bbb3cb117190b42cea49da989db29bd76 rvanvuren <ryan@buyerkiosk.com> 1779903521 -0500	commit: fix(repo): calendar arithmetic for getTwoWeekSchedule week-B derivation + 14-day loop (DST-safe)
e92a829bbb3cb117190b42cea49da989db29bd76 099e2ce723f74c2b41ba83d4e03855444d6ae905 rvanvuren <ryan@buyerkiosk.com> 1779903569 -0500	commit: fix(repo): calendar enumeration for getMonthSchedule (handles DST months correctly)
099e2ce723f74c2b41ba83d4e03855444d6ae905 099e2ce723f74c2b41ba83d4e03855444d6ae905 rvanvuren <ryan@buyerkiosk.com> 1779903649 -0500	reset: moving to HEAD
099e2ce723f74c2b41ba83d4e03855444d6ae905 7465295b3515cdd3495f74dab178efc77c07b72f rvanvuren <ryan@buyerkiosk.com> 1779903667 -0500	commit: fix(screen): calendar boundary for 14-day visible-window check (DST-safe)
7465295b3515cdd3495f74dab178efc77c07b72f 7465295b3515cdd3495f74dab178efc77c07b72f rvanvuren <ryan@buyerkiosk.com> 1779903720 -0500	reset: moving to HEAD
7465295b3515cdd3495f74dab178efc77c07b72f 7465295b3515cdd3495f74dab178efc77c07b72f rvanvuren <ryan@buyerkiosk.com> 1779903735 -0500	reset: moving to HEAD
7465295b3515cdd3495f74dab178efc77c07b72f 23c698db46548854f46eade281d5c175f838a339 rvanvuren <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 1779904815 -0500	commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/widgets/scheduling/edit_shift_sheet.dart to calendar arithmetic
88e02598967279aa983b3806c206c1ad9c8d6f05 88e02598967279aa983b3806c206c1ad9c8d6f05 rvanvuren <ryan@buyerkiosk.com> 1779904898 -0500	reset: moving to HEAD
88e02598967279aa983b3806c206c1ad9c8d6f05 d2db141d3db049d50c5782d6f9748cbcd2205c7d rvanvuren <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 1779904962 -0500	commit: fix(dst-sweep): correct misleading file-level docstring in lib/presentation/providers/scheduling/week_start_provider.dart
d32ebe38168182dd75e9be231b3027f4b12210aa d32ebe38168182dd75e9be231b3027f4b12210aa rvanvuren <ryan@buyerkiosk.com> 1779905258 -0500	reset: moving to HEAD
d32ebe38168182dd75e9be231b3027f4b12210aa d32ebe38168182dd75e9be231b3027f4b12210aa rvanvuren <ryan@buyerkiosk.com> 1779905345 -0500	reset: moving to HEAD
d32ebe38168182dd75e9be231b3027f4b12210aa d32ebe38168182dd75e9be231b3027f4b12210aa rvanvuren <ryan@buyerkiosk.com> 1779909224 -0500	reset: moving to HEAD
d32ebe38168182dd75e9be231b3027f4b12210aa a0ade0c15ead3a0191bc7bfa1f4dd87bd73b99e0 rvanvuren <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 1779909381 -0500	commit: fix(provider): defer Ably subscription until initial fetch resolves so realtime updates aren't dropped during load
800676da715b2ec6030b11a88869e4429c6353e5 aaabf1e2d3f270412e47f60d14960f098f89753d rvanvuren <ryan@buyerkiosk.com> 1779909745 -0500	commit: fix(reducer): add LWW serverTimestamp check before applying shift.updated/deleted (twoWeek + month)
aaabf1e2d3f270412e47f60d14960f098f89753d 8e2ecb45f6388f36f63c95dff3c4d3ae48fce362 rvanvuren <ryan@buyerkiosk.com> 1779910459 -0500	commit: fix(weekly-provider): defer Ably subscribe + add LWW serverTimestamp check (round-9 closeout)
8e2ecb45f6388f36f63c95dff3c4d3ae48fce362 1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 rvanvuren <ryan@buyerkiosk.com> 1779911137 -0500	commit: fix(nav): clamp selectedScheduleDateProvider to new visible range on Week/2W chevron (overflow actions were targeting stale week)
1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 rvanvuren <ryan@buyerkiosk.com> 1779911517 -0500	reset: moving to HEAD
1ce7eff32e6372ee1c15f1a0cb12b27d5bbc5171 a60f642f1a7ea6381bf1c3acbb621cc2c2eeba88 rvanvuren <ryan@buyerkiosk.com> 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 <ryan@buyerkiosk.com> 1779911667 -0500	commit: fix(repo): dedup by shiftId in two-week/month fan-out (overnight shifts were duplicated)
540940db107a95f798d497a55f61e02b5bcfd8e4 71b7199b40f11a5f7208da70252e49897dc6817e rvanvuren <ryan@buyerkiosk.com> 1779911844 -0500	commit: fix(reducer): clear hasUnpublishedChange + publishedAt on schedule.unpublished events (EDITED badges were stuck)
71b7199b40f11a5f7208da70252e49897dc6817e 8c75b010ae896d7c8ed8a38502e153ebb0e49d00 rvanvuren <ryan@buyerkiosk.com> 1779912493 -0500	commit: fix(reducer): bump summary counts on shift.created/shift.deleted (paired-event asymmetry)
8c75b010ae896d7c8ed8a38502e153ebb0e49d00 8b86c3766ec54d3ac1f7c880b968627d036c8e5e rvanvuren <ryan@buyerkiosk.com> 1782484530 -0500	commit: Updating Everything
8b86c3766ec54d3ac1f7c880b968627d036c8e5e 66e541aeeee5efa326726363eab7ccf8f6c0da22 rvanvuren <ryan@buyerkiosk.com> 1784236959 -0500	commit: feat(scheduling): shift-offer approvals in manager queue, employee week-start honoring
66e541aeeee5efa326726363eab7ccf8f6c0da22 018a149c5375a6413620cf316c8f5e39f90f5199 rvanvuren <ryan@buyerkiosk.com> 1784307127 -0500	commit: feat(chat): attachment send + role-based moderation delete
018a149c5375a6413620cf316c8f5e39f90f5199 6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d rvanvuren <ryan@buyerkiosk.com> 1784315895 -0500	commit: chore: bump version to 4.2.0+15
6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d 4737f9fba1c7685429bfae3a58f3756eadfc3c40 rvanvuren <ryan@buyerkiosk.com> 1788021185 -0500	commit: chore: checkpoint pending scheduling work
4737f9fba1c7685429bfae3a58f3756eadfc3c40 ff7995ab323538cfab022488aa3d73531413c2b4 rvanvuren <ryan@buyerkiosk.com> 1788021306 -0500	checkout: moving from spec-003-schedule-visibility to master
ff7995ab323538cfab022488aa3d73531413c2b4 6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d rvanvuren <ryan@buyerkiosk.com> 1788021306 -0500	merge origin/master: Fast-forward
6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d 6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d rvanvuren <ryan@buyerkiosk.com> 1788021306 -0500	checkout: moving from master to fix/scheduling-integrity
6fda1dd4180017bc3b83c7e1bd072fd2a4d7603d 8986e900d1aa15cc74d18f1a21053c8e15116f15 rvanvuren <ryan@buyerkiosk.com> 1788023330 -0500	commit: fix: align scheduling API contracts
8986e900d1aa15cc74d18f1a21053c8e15116f15 a029eac47576fe732808dfc20e7822522579930c rvanvuren <ryan@buyerkiosk.com> 1788378730 -0500	commit: [verified] fix: harden scheduling manager workflows
