{
  "name": "calendar",
  "kind": "bundled",
  "title": "Calendar",
  "description": "Your next days of events with the current one tagged: join the call, open it in Calendar, copy its details, delete it; a form adds one. EventKit on macOS, khal on Linux.",
  "version": "0.1.0",
  "icon": "󰃭",
  "author": "pal",
  "spec": "github:zcag/pal/extensions/calendar",
  "source": "https://github.com/zcag/pal/tree/HEAD/extensions/calendar",
  "commit": "a84c75d8e1ff65aae49fd8acc1cf888a84c8a465",
  "manifest": {
    "name": "calendar",
    "title": "Calendar",
    "description": "Your next days of events with the current one tagged: join the call, open it in Calendar, copy its details, delete it; a form adds one. EventKit on macOS, khal on Linux.",
    "version": "0.1.0",
    "icon": "󰃭",
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "list",
        "id": "calendars",
        "label": "Calendars",
        "placeholder": "Work",
        "description": "Calendar names (or ids) to show; empty shows every calendar. The filter dropdown narrows further.",
        "default": []
      },
      {
        "kind": "number",
        "id": "days",
        "label": "Days ahead",
        "description": "How many days from today to list.",
        "min": 1,
        "max": 90,
        "step": 1,
        "unit": "days",
        "default": 7
      },
      {
        "kind": "boolean",
        "id": "hide_declined",
        "label": "Hide declined",
        "text": "Leave out invitations you declined",
        "default": true
      }
    ],
    "store": {
      "tagline": "Your next days of events, one key to join the call",
      "category": "productivity",
      "features": [
        "Today, Tomorrow, This week and Later as sections; the current event tagged `now`, the next one `in 12 min`",
        "Every account Calendar.app has (iCloud, Google, Exchange) through EventKit on macOS; `khal` on Linux",
        "`enter` joins the call when the event has a Zoom, Meet, Teams or Webex link (found in the url, the location or the notes, Outlook safelinks unwrapped), else opens it in Calendar",
        "The calendar's colour as the row's dot, the head count and a `Join` tag on the right; a filter per calendar",
        "The detail pane: the notes as markdown, when, where, the organizer, every attendee with their reply, whether it repeats",
        "New event as a form: title, a day in words (`fri`, `next mon`, `20 sep`), start and end, all-day, the calendar, a location, notes",
        "Delete an event, or one occurrence of a repeating one, after a confirmation",
        "Live with a 60 s ttl: the list is fresh on every show without re-reading the store more than once a minute"
      ],
      "permissions": [
        "calendars"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-schedule.png",
          "caption": "Today and the days after, the running event tagged now, calls tagged Join"
        },
        {
          "file": "2-detail.png",
          "caption": "The detail pane: the notes as markdown, when, where, the call, the attendees with their replies"
        },
        {
          "file": "3-new.png",
          "caption": "New event: a title, a day in words, the times, the calendar"
        }
      ],
      "actions": [
        {
          "title": "Join call",
          "description": "Opens the meeting link; first when the event has one.",
          "keys": "enter"
        },
        {
          "title": "Open in Calendar",
          "description": "Shows the event in Calendar.app (macOS).",
          "keys": "enter"
        },
        {
          "title": "Copy conference link",
          "keys": "cmd+shift+c"
        },
        {
          "title": "Copy event details",
          "description": "Title, when, where and the link as text.",
          "keys": "cmd+c"
        },
        {
          "title": "Delete event",
          "description": "Asks first; on a repeating event only this occurrence goes (macOS).",
          "keys": "ctrl+x"
        },
        {
          "title": "New event",
          "description": "The form, then the event in the chosen calendar.",
          "keys": "enter"
        },
        {
          "title": "Grant access",
          "description": "On the permission row: the system prompt, or System Settings when it was denied.",
          "keys": "enter"
        }
      ]
    },
    "palettes": {
      "schedule": {
        "title": "My Schedule",
        "kind": "live",
        "ttl": 60,
        "description": "The next days' events in time order, sectioned by day, the current or next one tagged; a New event row at the end.",
        "keys": [
          {
            "keys": "enter",
            "title": "Join the call, else open in Calendar"
          },
          {
            "keys": "cmd+shift+c",
            "title": "Copy the conference link"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the event details"
          },
          {
            "keys": "ctrl+x",
            "title": "Delete the event"
          }
        ]
      }
    }
  },
  "updated_at": "2026-09-16T16:45:33Z",
  "url": "https://pal.cagdas.io/extensions/calendar",
  "tagline": "Your next days of events, one key to join the call",
  "category": "productivity",
  "screenshots": [
    "https://pal.cagdas.io/extensions/calendar/screenshots/1-schedule.png",
    "https://pal.cagdas.io/extensions/calendar/screenshots/2-detail.png",
    "https://pal.cagdas.io/extensions/calendar/screenshots/3-new.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/calendar/screenshots/1-schedule.png",
    "https://pal.cagdas.io/extensions/calendar/screenshots/2-detail.png",
    "https://pal.cagdas.io/extensions/calendar/screenshots/3-new.png"
  ],
  "bar_screenshots": [],
  "has_bar": false,
  "bar_items": [],
  "has_readme": true
}
