Skip to content

feat: --remind-at sets Linear's issue reminder on create and update - #61

Merged
muqsitnawaz merged 2 commits into
mainfrom
feat/remind-at
Oct 7, 2026
Merged

muqsitnawaz merged 2 commits into
mainfrom
feat/remind-at

Conversation

@muqsitnawaz

Copy link
Copy Markdown
Contributor

Refs PHNX-4269 (AGI Menu). The owner asked to set an exact time on a to-do ("I want to be able to select the exact time… increments of 10").

Why a reminder

  • The due date can't hold a time. Linear's Issue.dueDate is a TimelessDate (date only).
  • The reminder can. The schema has issueReminder(id, reminderAt: DateTime), Linear's "Remind me", which notifies the user at an exact moment. That's where a to-do's time belongs, with the date still in dueDate.

Change

  • One new option: linear create … --remind-at <time> and linear update <ID> --remind-at <time>.
  • Accepted input: YYYY-MM-DDTHH:MM (a space works in place of the T), with seconds and a zone optional. No zone means local time, and it's sent to Linear as UTC.
  • Refused input: a date with no time, or text that isn't a time, is refused before anything is created.
  • create: sets the reminder on the new issue's identifier, and exits 1 if that step fails.
  • update: sets it on the issue it resolved.

Verification

  • python3 -m unittest test_linear: 231 tests, OK (4 skipped). New RemindAtTest: zoned times go out as UTC, local and space-separated input both parse, and a date-only value or junk text is refused.
  • Live check of the mutation, with nothing written: I sent the mutation for an issue that doesn't exist (PHNX-999999), and Linear answered:
    {"data": null, "errors": [{"message": "Entity not found: Issue", "code": "INPUT_ERROR"}]}
    
    That's a not-found error rather than a GraphQL validation error, so the mutation's shape and types are accepted, and an identifier is accepted as the id.
  • Not done: I didn't set a real reminder, which would have sent the owner a notification.

Docs

  • A skill.md example and a CHANGELOG entry under Unreleased.

🤖 Generated with Claude Code

muqsitnawaz and others added 2 commits October 7, 2026 08:50
AGI Menu's to-do needs an exact time (owner, 2026-10-06), and Linear's
dueDate is a TimelessDate. Linear's issueReminder(id, reminderAt: DateTime)
is the time-bearing slot: it notifies the user at that moment.

- parse_remind_at: YYYY-MM-DDTHH:MM (or a space), seconds and zone optional;
  no zone is local time; sent as UTC. A date alone is refused.
- create validates it before creating, then sets the reminder on the new
  identifier and exits 1 if that fails; update sets it on the resolved issue.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- update parses --remind-at once, up front, before any mutation (a typo no
  longer leaves a half-applied update or exits mid-batch).
- create refuses --remind-at with --from-file instead of dropping it.
- create selects the new issue's id and passes it to issueReminder, as
  update does; a failed reminder names the retry command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@muqsitnawaz

Copy link
Copy Markdown
Contributor Author

Independent review (non-author subagent): APPROVE, no blocking findings.

The reviewer ran RemindAtTest and drove parse_remind_at under both UTC and America/Los_Angeles:

  • Zoned input converts correctly, for example +05:30 gives 03:40Z.
  • Z, a space separator, seconds and microseconds all work.
  • Date-only, 09:10, Tomorrow and empty input are refused.
  • The DST gap and DST overlap hours resolve sensibly.
  • create and update have no --json mode, so there's no output contract to break.

All three of its suggestions are applied in the follow-up commit:

  1. create refuses --remind-at together with --from-file, instead of silently dropping it.
  2. update parses --remind-at once, before any change is made. A typo can no longer leave a half-applied update or exit partway through a batch.
  3. create now requests the new issue's id and passes it to issueReminder, as update does. A failed reminder prints the exact retry command, linear update <ID> --remind-at ….

Re-run after the follow-ups: python3 -m unittest test_linear, 231 tests OK.

@muqsitnawaz
muqsitnawaz merged commit df68a4f into main Oct 7, 2026
5 checks passed
@muqsitnawaz
muqsitnawaz deleted the feat/remind-at branch October 7, 2026 08:54
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