Skip to content

Expose Reminders 'Sections' (custom sections within a list) in JSON/plain output #14

@jzakirov

Description

@jzakirov

Hi!

Apple Reminders supports custom Sections inside a list (e.g. in list “Books”: sections “Non-fiction”, etc.). When using remindctl, the JSON output for an item (and list output) does not include any field that corresponds to the section, so it's impossible to read or place reminders into specific sections via the CLI.

Current behavior

remindctl uses EventKit (EKEventStore / EKReminder). ReminderItem currently includes:

  • id, title, notes, isCompleted, completionDate, priority, dueDate, listID, listName

No section information is exposed.

Request

  1. Add an optional field to ReminderItem outputs (JSON/plain), e.g.:
  • sectionName (string)
  • sectionID (string)
  1. (Optional) allow setting/moving a reminder into a section, e.g.:
  • remindctl edit <id> --section "Non-fiction"

Investigation / feasibility notes

From what I can tell, EventKit's public EKReminder API does not expose list sections (no obvious property in EKReminder docs), so this likely means one of the following:

  1. The data is present but only accessible via private keys / KVC on EKReminder (e.g. value(forKey:)), or via an undocumented property.
  2. Sections are not represented in EventKit at all and require using a private Reminders framework/model (Reminders / ReminderKit / REM* classes) rather than EKReminder.
  3. As a last resort, sections could be read from the Reminders local store (SQLite in the group container), but that’s obviously less desirable and may be brittle/sandbox-restricted.

Possible approach (if you’re open to it)

  • Add a best-effort optional field on ReminderItem, populated via:
    • probing a small set of KVC keys on EKReminder (guarded, non-fatal), OR
    • an optional compilation path using a private framework (if acceptable for the project), OR
    • runtime introspection to discover a section identifier/name if it exists.

Even just reading the section name/identifier (without write support) would unlock a lot of automation workflows.

Happy to help test on a list with sections (macOS Reminders).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions