Feature: Relationship milestones + countdowns for romantic partners (#46 slice 3) #49

Closed
opened 2026-05-30 14:15:08 +00:00 by Mark · 1 comment
Owner

Goal

Add relationship milestone tracking for romantic partners — predefined milestone types plus custom ones, with countdown timers and reminders.

Scope

  • Milestone types: first_date, first_trip, moving_in, engagement, wedding, custom
  • Display milestones on Person detail page for romantic-type partners
  • Countdown to upcoming milestones (next anniversary, next planned event)
  • Milestone CRUD: add, edit, delete milestones from Person detail
  • Integration with existing DateEvent system — milestones are a subset of dates
  • Optional reminder days before milestone date

Data Model

Uses Person.romanceFields.milestones from #47:

interface RomanceMilestone {
  type: string;   // "first_date" | "first_trip" | "moving_in" | "engagement" | "wedding" | "custom"
  date: string;   // ISO date string
  label: string;  // user-visible label
}

Acceptance Criteria

  • Milestone list renders on romantic partner's detail page
  • Add/edit/delete milestone flows work
  • Countdown displays for future milestones
  • Anniversary auto-detects from first_date milestone
  • Milestones with past dates show "X years ago" display
  • Typecheck passes

Dependencies

  • Requires #47 (romantic relationship type + romanceFields)

Decomposed from #46

## Goal Add relationship milestone tracking for romantic partners — predefined milestone types plus custom ones, with countdown timers and reminders. ## Scope - Milestone types: `first_date`, `first_trip`, `moving_in`, `engagement`, `wedding`, `custom` - Display milestones on Person detail page for romantic-type partners - Countdown to upcoming milestones (next anniversary, next planned event) - Milestone CRUD: add, edit, delete milestones from Person detail - Integration with existing DateEvent system — milestones are a subset of dates - Optional reminder days before milestone date ## Data Model Uses `Person.romanceFields.milestones` from #47: ```typescript interface RomanceMilestone { type: string; // "first_date" | "first_trip" | "moving_in" | "engagement" | "wedding" | "custom" date: string; // ISO date string label: string; // user-visible label } ``` ## Acceptance Criteria - [ ] Milestone list renders on romantic partner's detail page - [ ] Add/edit/delete milestone flows work - [ ] Countdown displays for future milestones - [ ] Anniversary auto-detects from first_date milestone - [ ] Milestones with past dates show "X years ago" display - [ ] Typecheck passes ## Dependencies - Requires #47 (romantic relationship type + romanceFields) --- _Decomposed from #46_
Author
Owner

✅ Completed. Changes made:

  • Added Relationship Milestones section on Person detail page for romantic partners
  • Milestone types: first_date, first_trip, moving_in, engagement, wedding, custom
  • Countdown displays for future milestones (days until)
  • Past milestones show "X years ago" display
  • Edit/Delete buttons for each milestone
  • MilestoneDrawer component for CRUD operations
  • All typechecks pass
✅ Completed. Changes made: - Added Relationship Milestones section on Person detail page for romantic partners - Milestone types: first_date, first_trip, moving_in, engagement, wedding, custom - Countdown displays for future milestones (days until) - Past milestones show "X years ago" display - Edit/Delete buttons for each milestone - MilestoneDrawer component for CRUD operations - All typechecks pass
Mark closed this issue 2026-05-30 16:46:32 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/kimi_agent_kin_app_sync#49
No description provided.