0000000000000000000000000000000000000000 6b9e46b80ff9c5559abd11746b9cf3eda780a134 rvanvuren 1779570921 -0500 branch: Created from HEAD 6b9e46b80ff9c5559abd11746b9cf3eda780a134 5caa92162d098a98e759aa0c54ed09b8e67e8c53 rvanvuren 1779570942 -0500 commit: Spec 003 Phase 2: Mobile shared Ably scaffolding (Team app) 5caa92162d098a98e759aa0c54ed09b8e67e8c53 6355de8a54331ee922f75863e440d420b187ebf3 rvanvuren 1779570997 -0500 commit: Spec 003 Phase 4: Team app data layer + state providers + tap-to-chat 6355de8a54331ee922f75863e440d420b187ebf3 08e92511f5ecbbda84ef78d7e07ecdffa9a489f5 rvanvuren 1779571067 -0500 commit: Spec 003 Phases 5 + 6: Team app Full Schedule UI (My + Team scopes) 08e92511f5ecbbda84ef78d7e07ecdffa9a489f5 67c19f2828f6276f8933498753b70cd56b120392 rvanvuren 1779823090 -0500 commit: fix(router): strip onboarding imports/routes accidentally committed with spec-003 (unbreak clean-checkout build) 67c19f2828f6276f8933498753b70cd56b120392 a570bb2607c4d6cf82d19d61a33c0a806b302d13 rvanvuren 1779823420 -0500 commit: fix(model): default isPublished to null so missing publish state filters out (close draft leak) a570bb2607c4d6cf82d19d61a33c0a806b302d13 86a91dbf9fc3bd2735cf283f0a4455969da049a3 rvanvuren 1779823727 -0500 commit: fix(ably): parse Ably broadcast payload shape (shiftStart/shiftEnd/etc) not swap-flow shape 86a91dbf9fc3bd2735cf283f0a4455969da049a3 526b7262a9d0cf6ef86f8133cafb0eaa8a3a6986 rvanvuren 1779823960 -0500 commit: fix(ably): ensure Ably is connected before subscribing in schedule-only sessions 526b7262a9d0cf6ef86f8133cafb0eaa8a3a6986 6f3aa57d341a4fb0ae9f4eeec1a338e7c4901d88 rvanvuren 1779824290 -0500 commit: fix(my-scope): compare shifts to store.employeeId not central user.id 6f3aa57d341a4fb0ae9f4eeec1a338e7c4901d88 1530561a9a1e994c26479af40424b6304aa9b09f rvanvuren 1779824411 -0500 commit: fix(chat): pass central user id to chat resolver, not store-scheduling employee id 1530561a9a1e994c26479af40424b6304aa9b09f cb89d057d414df22fe43179425a460069a5e4928 rvanvuren 1779824529 -0500 commit: fix(error-handling): check AuthException type/status code, not exception toString() cb89d057d414df22fe43179425a460069a5e4928 9f8060333a5a96935be5726ab6dfb433adf1ec27 rvanvuren 1779829183 -0500 commit: fix(router): restore AppRoutes.onboarding constant + placeholder redirect (unbreak login_screen.dart compile) 9f8060333a5a96935be5726ab6dfb433adf1ec27 cb93fc3acb2ad949afd31d6cc5972ac4b28758f3 rvanvuren 1779829383 -0500 commit: fix(ably): gate schedule realtime behind teamScheduleRealtimeEnabledProvider until backend grants kiosk_{typeNum} capability cb93fc3acb2ad949afd31d6cc5972ac4b28758f3 a5b6a288fa45233fece3f99d2d7cde0d319cd2ce rvanvuren 1779829523 -0500 commit: fix(reducer): apply LWW check on shift.updated/shift.deleted Ably events (drop stale events) a5b6a288fa45233fece3f99d2d7cde0d319cd2ce 8a51e6577455e7d00e615e52403b0aae40d552ca rvanvuren 1779829728 -0500 commit: fix(ably): parse shiftStart/shiftEnd as UTC, convert to store-local for display (don't drift) 8a51e6577455e7d00e615e52403b0aae40d552ca 68a8f361be639474ca24d0423637a2907e7bf710 rvanvuren 1779905916 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/data/repositories/team_schedule_repository_impl.dart to calendar arithmetic 68a8f361be639474ca24d0423637a2907e7bf710 83b09450e086f6f0b229804b5e2e14a8f59fb49b rvanvuren 1779906015 -0500 commit: fix(dst-sweep): convert 6 Duration(days:) instances in lib/presentation/screens/schedule/full_schedule_screen.dart to calendar arithmetic 83b09450e086f6f0b229804b5e2e14a8f59fb49b c187e9ba359e968fd60d4017d7fc399d27b68765 rvanvuren 1779906097 -0500 commit: fix(dst-sweep): convert 2 Duration(days:) instances in lib/presentation/widgets/schedule/month_grid.dart to calendar arithmetic c187e9ba359e968fd60d4017d7fc399d27b68765 5c599b59605a28724334632daaebdeb000b21497 rvanvuren 1779916542 -0500 commit: fix(filter): treat null isPublished as trusted; only filter explicit false (unbreak empty schedule) 5c599b59605a28724334632daaebdeb000b21497 166eefbbc382ea34129073bce4c8f9484d18f786 rvanvuren 1779916623 -0500 commit: fix(reducer): upsert shifts that move INTO the visible range from outside (was dropped) 166eefbbc382ea34129073bce4c8f9484d18f786 e89216f2786bd7e4a36ce69209aa29ad6be27711 rvanvuren 1779916679 -0500 commit: fix(reducer): derive isOpenShift from employeeId nullability in realtime event parser e89216f2786bd7e4a36ce69209aa29ad6be27711 bd07552303229308eba18c309f0b071b714322f4 rvanvuren 1779916786 -0500 commit: fix(month-panel): render open shifts separately from coworker rows (was showing "Unknown teammate") bd07552303229308eba18c309f0b071b714322f4 28a00be83161fb0070087c0e4f4ddc47b7dd020a rvanvuren 1779916924 -0500 commit: fix(team-day): skip chat resolver on self-shift tap (backend was returning 400 self-chat) 28a00be83161fb0070087c0e4f4ddc47b7dd020a 625b3b819828680325539754d3f0016a7707ae72 rvanvuren 1779916997 -0500 commit: test(team-realtime): pass employeeId in T6.2.9 fixture (now required for assigned-shift rendering) 625b3b819828680325539754d3f0016a7707ae72 6e98b0090bd90908380812fa88dee0112105efc6 rvanvuren 1779982013 -0500 commit: fix(reducer): apply _eventIsStale LWW gate on move-out branch (was evicting fresh shifts on stale events) 6e98b0090bd90908380812fa88dee0112105efc6 f0f9c3cf10a43519ace431c41e263a901e2ef1e4 rvanvuren 1779982145 -0500 commit: fix(reducer): use range overlap not anchor equality for SchedulePublished/Unpublished in month provider f0f9c3cf10a43519ace431c41e263a901e2ef1e4 4ccfa1053acc0f1058d86d52985e6bfb270a2644 rvanvuren 1779982848 -0500 commit: feat(schedule): add PickupSheet + shared sheet building blocks (T7.3, T7.4) 4ccfa1053acc0f1058d86d52985e6bfb270a2644 f9698f9ae1dea2b487921e683ddf80a7a259191d rvanvuren 1779983153 -0500 commit: feat(schedule): add SwapSheet + wire PickupSheet/SwapSheet into screen (T7.5) f9698f9ae1dea2b487921e683ddf80a7a259191d 5f01862097fe01ddccfef3882b2e68a211e4d71c rvanvuren 1779983439 -0500 commit: feat(schedule): finalize tap-to-chat with loading spinner on ShiftRow (T7.6) 5f01862097fe01ddccfef3882b2e68a211e4d71c d342d49f5bc2625df40fb93857938cd07d869626 rvanvuren 1779983509 -0500 commit: docs(claude-md): describe Pickup + Swap sheets and tap-to-chat finalize (T7) d342d49f5bc2625df40fb93857938cd07d869626 690f949185da92d6f1818cef2cb52f8a58580a8f rvanvuren 1779984314 -0500 commit: fix(pickup): refresh BOTH week and month providers after claim (month was stale) 690f949185da92d6f1818cef2cb52f8a58580a8f 353d8cef7599a1b5bfb43839928c925a6ea709c5 rvanvuren 1779984574 -0500 commit: fix(swap): show one row per eligible shift (was collapsing multi-shift coworkers to first match) 353d8cef7599a1b5bfb43839928c925a6ea709c5 6ed292013677d9bba5e0c07a17863a4a4265dd20 rvanvuren 1779984794 -0500 commit: fix(sheets): block dismissal during in-flight pickup/swap; ensure success callbacks fire before pop 6ed292013677d9bba5e0c07a17863a4a4265dd20 39067c5b009cf712b608a04695f06403ddaef90e rvanvuren 1784236878 -0500 commit: feat(schedule): shift offers, Sunday-Saturday week support, Change Shift picker, chat button, swap fixes 39067c5b009cf712b608a04695f06403ddaef90e 6e8cb778a53e74b0b06696ea2fa672a4c016078a rvanvuren 1784307134 -0500 commit: feat(chat-package): Member.roleLevel + isStoreOwner for moderation gating 6e8cb778a53e74b0b06696ea2fa672a4c016078a d6798bd62b2f6302598e7c1d629dec1cbe91b931 rvanvuren 1784320113 -0500 commit: fix(schedule): month-view swap/offer wiring + swap eligibility filtering + real error messages d6798bd62b2f6302598e7c1d629dec1cbe91b931 42148719c5de3ab77a905bd9a74c477e0413fca6 rvanvuren 1784320198 -0500 commit: chore: bump version to 1.2.0+13 42148719c5de3ab77a905bd9a74c477e0413fca6 5ea68396586f5986e7a84cd142a90d435eb3f102 rvanvuren 1788021146 -0500 commit: Checkpoint Team onboarding and notification work