Skip to content

feat(events): support RSVP deadlines - #108

Merged
KalebCole merged 3 commits into
mainfrom
feat/rsvp-deadline
Aug 8, 2026
Merged

feat(events): support RSVP deadlines#108
KalebCole merged 3 commits into
mainfrom
feat/rsvp-deadline

Conversation

@KalebCole

@KalebCole KalebCole commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • add --rsvp-deadline to event create and update
  • encode Partiful's verified rsvpDeadline and allowResponsesAfterRsvpDeadline fields
  • expose deadline/capacity fields in events get for read-after-write verification
  • validate create deadlines occur before event start
  • document the new flag in machine-readable schemas

Contract evidence

Rubber-duck review initially recommended against a PR while the wire contract was unknown. Before implementation, Partiful's current first-party web bundle was inspected and confirmed these exact fields:

  • rsvpDeadline
  • allowResponsesAfterRsvpDeadline

A live hosted-event update was then exercised with this branch. Read-after-write returned the normalized deadline and allowResponsesAfterRsvpDeadline: false. No guessed field names.

Verification

  • npm test: 316 passed, 6 skipped
  • npm run typecheck: passed
  • live read-after-write: deadline 2026-08-20T19:00:00.000Z, responses-after-deadline false

Scope

This PR handles RSVP deadlines only. The create-time capacity persistence mismatch remains tracked in #107.

Closes RSVP-deadline portion of #107.

Summary by CodeRabbit

  • New Features
    • Added RSVP deadlines when creating or updating events.
    • Added timezone-aware parsing for natural-language RSVP deadlines.
    • Event details now show guest limits, RSVP deadlines, and whether responses remain available afterward.
    • Responses automatically close after the RSVP deadline.
  • Validation
    • RSVP deadlines must occur before the event starts.
    • Improved validation messages for deadline-related settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@KalebCole, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ac8ac147-0c09-4044-aa58-e2e6c141f7c1

📥 Commits

Reviewing files that changed from the base of the PR and between b60485f and 89ecea2.

📒 Files selected for processing (5)
  • skills/partiful/references/events.md
  • src/commands/events.ts
  • src/lib/dates.ts
  • tests/dates.test.js
  • tests/events-integration.test.js
📝 Walkthrough

Walkthrough

Event creation and updates now accept RSVP deadlines. The commands parse deadlines with timezone support, reject deadlines at or after event start, disable responses after the deadline, persist the fields, and show them in event details.

Changes

RSVP deadline handling

Layer / File(s) Summary
Deadline model and event creation
src/lib/api/endpoints.ts, src/lib/events.ts, src/commands/events.ts, tests/events-integration.test.js
Event payloads and options support RSVP deadlines. Creation parses and validates the deadline, stores it, disables post-deadline responses, and tests the behavior.
Deadline updates and command output
src/commands/events.ts, src/commands/schema.ts, tests/events-integration.test.js
Updates accept RSVP deadlines and timezones, persist Firestore timestamp and response-policy fields, expose deadline fields in event details, and update schema and validation messages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant EventBuilder
  participant Firestore
  CLI->>EventBuilder: submit event with rsvpDeadline and timezone
  EventBuilder->>EventBuilder: parse and validate deadline
  EventBuilder->>Firestore: persist deadline and disable post-deadline responses
  Firestore-->>CLI: return event data
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding RSVP deadline support to events.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/rsvp-deadline

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
tests/events-integration.test.js (2)

233-234: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover the update schema contract.

src/commands/schema.ts also adds --rsvp-deadline and --timezone to events.update, but this test checks only events.create. Add assertions for both update parameters to protect the machine-readable schema.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/events-integration.test.js` around lines 233 - 234, Extend the schema
assertions in the events integration test to cover the events.update command,
verifying that --rsvp-deadline and --timezone are present with their expected
required and type metadata, matching the existing events.create coverage.

39-51: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add a non-default timezone case.

The test uses the CLI default America/Los_Angeles and a hard-coded UTC timestamp. It does not prove that --timezone is applied, and the result can depend on the child-process timezone. Add a test with a different timezone, such as America/New_York, and set the test timezone explicitly.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/events-integration.test.js` around lines 39 - 51, Add a separate
RSVP-deadline integration test in the events create tests using a non-default
timezone such as America/New_York, explicitly set the test/process timezone, and
assert the corresponding UTC rsvpDeadline plus allowResponsesAfterRsvpDeadline
false. Keep the existing default-timezone coverage intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/commands/events.ts`:
- Around line 394-395: Update the date-handling logic in the event command so
both --date and --end-date pass opts['timezone'] to parseDateTime, matching the
documented --timezone behavior; keep the existing parsing flow otherwise
unchanged.

In `@src/lib/events.ts`:
- Around line 115-122: Update the RSVP deadline handling in src/lib/events.ts
lines 115-122 to use the timezone-aware shared parser with opts.timezone before
comparison and ISO serialization, and update src/commands/events.ts lines
421-422 to use that corrected parser for event update writes. Extend
tests/events-integration.test.js lines 39-51 with a non-default timezone case
and explicitly control the child-process timezone to verify the contract.

---

Nitpick comments:
In `@tests/events-integration.test.js`:
- Around line 233-234: Extend the schema assertions in the events integration
test to cover the events.update command, verifying that --rsvp-deadline and
--timezone are present with their expected required and type metadata, matching
the existing events.create coverage.
- Around line 39-51: Add a separate RSVP-deadline integration test in the events
create tests using a non-default timezone such as America/New_York, explicitly
set the test/process timezone, and assert the corresponding UTC rsvpDeadline
plus allowResponsesAfterRsvpDeadline false. Keep the existing default-timezone
coverage intact.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6d0a3077-1d5c-4d60-b6a2-7227de07987d

📥 Commits

Reviewing files that changed from the base of the PR and between 6b66dee and b60485f.

📒 Files selected for processing (5)
  • src/commands/events.ts
  • src/commands/schema.ts
  • src/lib/api/endpoints.ts
  • src/lib/events.ts
  • tests/events-integration.test.js

Comment thread src/commands/events.ts
Comment thread src/lib/events.ts
@KalebCole

Copy link
Copy Markdown
Owner Author

Addressed all CodeRabbit findings in 89ecea2, including update schema assertions and non-default timezone tests. Full verification: 321 passed, 6 skipped; npm run typecheck passed.

@KalebCole

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@KalebCole

Copy link
Copy Markdown
Owner Author

@copilot review

@KalebCole
KalebCole merged commit e6ff4a9 into main Aug 8, 2026
1 check passed
Copilot stopped work on behalf of KalebCole due to an error August 8, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant