Repository navigation
Conversation
Add pure domain helpers for location geofence arming/triggering and time-window / snooze trigger resolution, without adapters or DI wiring.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Found one correctness issue in the time-window resolver. I reviewed the geofence state transition, time/snooze helpers, exports, and their downstream use in PR #199.
Verification note: npm run check could not run in this checkout because the installed eslint shim is not executable and the expected package binary is absent, so this review used source-level analysis of the locked SHA diff.
Use the runtime occurrence cursor for recurring schedules with before_start offset semantics, and return null until the cursor exists instead of falling back to the series start_time.
|
@fennoai /review |
Review Complete
The changed geofence and time-window helpers align with the domain types and backend reminder invariants. No actionable findings were identified. |
There was a problem hiding this comment.
No issues found in the locked 23f3e923...2e1a292 diff. The recurring reminder path now uses runtime.next_trigger_at and preserves before_start offset semantics, resolving the prior correctness finding.
Verification: GitHub’s frontend check passed for head 2e1a292. Local npm run check could not run because the checkout’s eslint shim is not executable and the expected TypeScript/Prettier package binaries are absent.
There was a problem hiding this comment.
No issues found in the reviewed changes. The geofence and time-window helpers are consistent with the declared domain types and backend reminder invariants; no actionable correctness, performance, security, or documentation findings were identified.
LocalReminderApplication imports these helpers; add them to this PR so typecheck and bundling no longer depend on 1024XEngineer#198 being merged first.
…199) * feat(reminder): add LocalReminderApplication and memory state store Introduce the local reminder coordinator and in-memory runtime state store, and align mock alarm/schedule adapters with the scheduled receipt and subscribe/notify contracts. * fix(reminder): align LocalReminderApplication with confirmed sync port Use ReminderConfirmedDisposition for submitConfirmed and default snooze minutes for presenter snooze actions. * fix(reminder): include geofence and time-window domain modules LocalReminderApplication imports these helpers; add them to this PR so typecheck and bundling no longer depend on #198 being merged first. * fix(reminder): isolate location events and tear down failed delivery Route watcher callbacks to the emitting schedule only, and best-effort dismiss already-started channels when a later delivery step fails. * fix(reminder): serialize coordinator lifecycle and drop stale registrations Tear down existing watchers/alarms when register() becomes unschedulable, and serialize start/stop/rebuild so a queued rebuild cannot reinstall resources after shutdown. * fix(reminder): cancel pre-shutdown work across restart generations Replace the shared stopRequested flag with a per-start generation token and wait for in-flight handlers during stop, so a delivery or time/location handler begun before shutdown cannot resume as live work after start(). --------- Co-authored-by: mac <mac@mac11MacBook-Pro.local>
Bring in 1024XEngineer#198/1024XEngineer#199/1024XEngineer#205/1024XEngineer#210/1024XEngineer#213/1024XEngineer#217 while keeping the local native reminder stack, strength delivery, and alarm event hydration.
Summary
geofence.ts(距离、arrive/return 中心点、armed→triggered 状态机)timeWindow.ts(at_time/before_start、snooze、有效触发时刻)domain/index导出上述能力;不含适配器与组合根接线Merge Order
Scope
frontend/src/features/reminder/domain/geofence.tsfrontend/src/features/reminder/domain/timeWindow.tsfrontend/src/features/reminder/domain/index.tsOut of scope
LocalReminderApplication与其它 application 实现createAppServices切换strengthDelivery等后续 domain 切片Verification
npm run checknpm ciCloses #212