Skip to content

Flag conflicting Partiful commitments before I RSVP #85

Description

@KalebCole

User scenario

I receive three Partiful invitations for the same Saturday. Before answering, I want the CLI to show which events overlap with commitments I have already marked Going, Maybe, or am hosting, so I can make an informed RSVP.

Problem

events list gives separate summaries and events rsvp writes one response, but neither compares time windows across the caller's Partiful schedule. I currently have to copy dates into my calendar or calculate overlaps manually.

Proposed experience

partiful events conflicts <eventId>
partiful events conflicts --upcoming
partiful events conflicts <eventId> --include-maybe --format json

Human output lists overlapping Partiful events with their RSVP/host state and a clearly labeled overlap window. JSON output returns the queried event or scan range, comparison policy, conflict records, and explicit unknown-duration cases. The default policy should be conservative and documented rather than silently treating missing end times as all-night events.

Scope boundaries

Only compare the authenticated user's permitted Partiful events. Do not read external calendars, change RSVPs, infer travel time, or expose other guests' schedules. This is decision support, not a recommendation to decline an invitation.

Discovery needed

Verified repo facts: events list returns start dates, optional end dates, myRsvp, and isHost; RSVP status values are documented in README and #68. Unknown: whether all invited events and their end times are available through list/detail reads, and the correct policy for absent end times. Establish the policy as a CLI contract and disclose unknowns instead of inventing availability.

Acceptance criteria

  • A specific-event query compares it against eligible Partiful commitments without mutating anything.
  • Default and opt-in RSVP-state policies are explicit in human and JSON output.
  • JSON provides stable conflict entries, overlap bounds when calculable, and unknown-duration reasons.
  • No conflicts and no eligible events are successful empty states.
  • Missing/malformed times, inaccessible events, and invalid event IDs return structured errors or explicit unknown states without false conflicts.
  • Tests cover full overlap, boundary-touching events, nested overlaps, timezone offsets, null end times, status filters, empty states, and JSON shape.

Related work

#19 is calendar synchronization and #18 is aggregate analytics. This issue is a real-time guest RSVP decision based only on the user's own Partiful commitments, not calendar integration or hosting statistics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions