Require a due date on all reminder creation (v0.1.0:103)

A date-less reminder has no urgency — it lands in the "Later"/"No date" bucket,
out of the overdue/today/this-week rollups and the daily digest — so every
create flow now pre-fills the due date to +1 week (editable) and blocks an empty
save. Shared reminderDefaultDue() helper; edit paths also pre-fill the default
for legacy date-less reminders.

Surfaces:
- Mobile: add-investor sheet (date auto-fills when you start the optional
  reminder), standalone Reminders "New reminder", Grid-detail "Set a reminder".
- Desktop: Reminders page "+ New reminder", grid reminder modal.

Server still accepts a null due_date by design (bot/automation callers); this is
a human-UI requirement. Frontend-only; no schema/migration/dependency change.
This commit is contained in:
Keysat
2026-06-20 16:51:03 -05:00
parent fea88b6557
commit d6250f74d0
5 changed files with 53 additions and 18 deletions
+21
View File
@@ -0,0 +1,21 @@
import { VersionInfo } from '@start9labs/start-sdk'
// Reminders require a due date (Grant feedback). A date-less reminder has no urgency — it falls
// to the "Later"/"No date" bucket, out of the overdue/today/this-week rollups and the daily
// digest — so every create flow now pre-fills the due date to +1 week (editable) and blocks an
// empty save. Applies to ALL create surfaces via a shared reminderDefaultDue() helper — mobile:
// the add-investor sheet (the date auto-fills the moment you start the optional reminder), the
// standalone Reminders "New reminder" sheet, the Grid-detail "Set a reminder" card; desktop: the
// Reminders page "+ New reminder" and the grid reminder modal. Edit paths also pre-fill the
// default for legacy date-less reminders. Frontend-only; no schema, migration, or dependency change.
export const v_0_1_0_103 = VersionInfo.of({
version: '0.1.0:103',
releaseNotes: {
en_US: [
'Reminders now always have a due date: every create flow on mobile pre-fills it to a week',
'out (editable) and wont save without one, so a reminder cant slip into a no-date state',
'that hides it from the Overdue / Today / This week views and the daily digest.',
].join(' '),
},
migrations: { up: async () => {}, down: async () => {} },
})