{
  "name": "github",
  "kind": "registry",
  "title": "GitHub",
  "description": "Your pull requests, issues, repositories and notifications, and a search over all of GitHub. Signs in through the gh CLI or a token.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "svg": "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",
      "box": 24,
      "bg": "#181717"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/github@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/github",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "github",
    "title": "GitHub",
    "description": "Your pull requests, issues, repositories and notifications, and a search over all of GitHub. Signs in through the gh CLI or a token.",
    "keywords": [
      "gh"
    ],
    "version": "0.1.0",
    "multi": true,
    "icon": {
      "tile": {
        "svg": "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",
        "box": 24,
        "bg": "#181717"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "settings": [
      {
        "kind": "secret",
        "id": "token",
        "label": "Token",
        "description": "A personal access token (repo, notifications, read:org). Leave empty to use the gh CLI's login.",
        "placeholder": "ghp_...",
        "default": ""
      },
      {
        "kind": "text",
        "id": "default_org",
        "label": "Organisation",
        "description": "An organisation whose recently pushed repositories are listed, and an owner the Create repository form offers.",
        "placeholder": "acme",
        "default": ""
      },
      {
        "kind": "path",
        "id": "repos_root",
        "label": "Clones folder",
        "pick": "folder",
        "description": "Where your clones live (\u003croot\u003e/\u003cname\u003e or \u003croot\u003e/\u003cowner\u003e/\u003cname\u003e): enables Checkout on a pull request and Open in editor on a repository.",
        "placeholder": "~/proj",
        "default": ""
      },
      {
        "kind": "select",
        "id": "clone_protocol",
        "label": "Clone URL",
        "description": "What Copy clone URL copies.",
        "options": [
          {
            "id": "ssh",
            "title": "SSH (git@github.com:...)"
          },
          {
            "id": "https",
            "title": "HTTPS"
          }
        ],
        "default": "ssh"
      },
      {
        "kind": "number",
        "id": "merged_days",
        "label": "Merged within",
        "description": "How far back the Merged list of Pull Requests reaches.",
        "min": 1,
        "max": 90,
        "unit": "days",
        "default": 7
      },
      {
        "kind": "select",
        "id": "merge_method",
        "label": "Merge method",
        "description": "How the Merge action merges.",
        "options": [
          {
            "id": "merge",
            "title": "Merge commit"
          },
          {
            "id": "squash",
            "title": "Squash"
          },
          {
            "id": "rebase",
            "title": "Rebase"
          }
        ],
        "default": "merge"
      }
    ],
    "palettes": {
      "prs": {
        "title": "Pull Requests",
        "description": "Yours, the ones waiting on your review, and what merged lately.",
        "ttl": 300,
        "kind": "list",
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Open the pull request"
          },
          {
            "keys": "cmd+c",
            "title": "Copy its URL"
          },
          {
            "keys": "cmd+shift+o",
            "title": "Checkout the branch"
          },
          {
            "keys": "cmd+b",
            "title": "Copy the branch name"
          },
          {
            "keys": "cmd+shift+k",
            "title": "Open the checks"
          },
          {
            "keys": "cmd+shift+f",
            "title": "Open the files changed"
          },
          {
            "keys": "cmd+shift+r",
            "title": "Mark a draft ready for review"
          },
          {
            "keys": "cmd+shift+m",
            "title": "Merge"
          },
          {
            "keys": "tab",
            "title": "All, Mine, Review requested, Merged"
          }
        ]
      },
      "issues": {
        "title": "Issues",
        "description": "Assigned to you, mentioning you, opened by you; Create issue.",
        "ttl": 300,
        "kind": "list",
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Open the issue"
          },
          {
            "keys": "cmd+c",
            "title": "Copy its URL"
          },
          {
            "keys": "cmd+shift+x",
            "title": "Close it"
          },
          {
            "keys": "tab",
            "title": "All, Assigned, Mentioned, Created"
          }
        ]
      },
      "repos": {
        "title": "Repositories",
        "description": "Yours, starred, and your organisation's recently pushed.",
        "ttl": 300,
        "kind": "list",
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Open on GitHub"
          },
          {
            "keys": "cmd+e",
            "title": "Open the clone in the editor"
          },
          {
            "keys": "cmd+o",
            "title": "Open the clone's folder"
          },
          {
            "keys": "cmd+shift+c",
            "title": "Copy the clone URL"
          },
          {
            "keys": "cmd+p",
            "title": "Open the path typed in the bar"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the URL"
          },
          {
            "keys": "tab",
            "title": "All, Mine, Starred, Organisation"
          }
        ]
      },
      "notifications": {
        "title": "Notifications",
        "description": "Unread, by reason; opening one marks it read.",
        "ttl": 60,
        "kind": "live",
        "remember": false,
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Mark read and open"
          },
          {
            "keys": "cmd+shift+r",
            "title": "Mark as read"
          },
          {
            "keys": "cmd+shift+a",
            "title": "Mark all as read"
          },
          {
            "keys": "cmd+c",
            "title": "Copy its URL"
          }
        ]
      },
      "search": {
        "title": "Search GitHub",
        "description": "GitHub's search syntax over issues, pull requests, repositories and users, what you are involved in first.",
        "kind": "input",
        "keys": [
          {
            "keys": "enter",
            "title": "Open what was found"
          },
          {
            "keys": "cmd+c",
            "title": "Copy its URL"
          },
          {
            "keys": "tab",
            "title": "Everything, Issues and PRs, Repositories, Users"
          }
        ]
      }
    },
    "bar": {
      "prs": {
        "title": "Pull requests",
        "description": "Separate PR status item over your own pull requests: red needs attention, amber is awaiting review or checks, green is ready to merge, muted is waiting; a review asked of you is a blue count only with `review_requests` on. The popover shows every bucket, reviews included, with the PR title, repo, state and age.",
        "mocks": {
          "attention": {
            "title": "Needs attention, with review requests on",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "blocked",
                  "text": "×2",
                  "color": "red"
                },
                {
                  "id": "waiting",
                  "text": "·1",
                  "color": "muted"
                },
                {
                  "id": "reviews",
                  "icon": "",
                  "text": "2",
                  "color": "blue"
                }
              ],
              "tooltip": "5 open pull requests"
            }
          },
          "ready": {
            "title": "Ready to merge",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "ready",
                  "text": "✓1",
                  "color": "green"
                }
              ],
              "tooltip": "1 open pull request"
            }
          },
          "active": {
            "title": "Awaiting review or checks",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "active",
                  "text": "…2",
                  "color": "amber"
                }
              ],
              "tooltip": "2 open pull requests"
            }
          },
          "busy": {
            "title": "Every bucket at once",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "blocked",
                  "text": "×1",
                  "color": "red"
                },
                {
                  "id": "active",
                  "text": "…2",
                  "color": "amber"
                },
                {
                  "id": "ready",
                  "text": "✓1",
                  "color": "green"
                },
                {
                  "id": "waiting",
                  "text": "·3",
                  "color": "muted"
                }
              ],
              "tooltip": "7 open pull requests"
            }
          },
          "clear": {
            "title": "No open pull requests",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "",
                "tooltip": "No open pull requests"
              }
            }
          }
        },
        "refresh": {
          "every": 300,
          "on": [
            "show",
            "wake",
            "network"
          ]
        },
        "settings": [
          {
            "kind": "boolean",
            "id": "review_requests",
            "label": "Review requests on the strip",
            "text": "Count the pull requests waiting on your review",
            "description": "Off (the default) keeps the Pull requests item to your own PRs, whose checks and reviews are yours to act on; a review asked of you is someone else's work and sits in the popover's own bucket either way.",
            "default": false
          }
        ],
        "keys": [
          {
            "keys": "enter",
            "title": "Open the focused pull request on GitHub"
          },
          {
            "keys": "c",
            "title": "Copy the focused pull request's URL"
          },
          {
            "keys": "m",
            "title": "Mute the focused pull request: out of the lists, the count and this popover until unmuted from the palette's Muted filter"
          },
          {
            "keys": "r",
            "title": "Refresh pull requests"
          },
          {
            "keys": "p",
            "title": "Open the Pull Requests palette"
          },
          {
            "keys": "up",
            "title": "Move between pull requests (or j and k)"
          }
        ]
      },
      "issues": {
        "title": "Issues",
        "description": "Separate Issues status item: assigned, mentioned, and your own open issues use distinct colours. The popover shows those buckets with the issue title, repo, labels, comments and age.",
        "mocks": {
          "assigned": {
            "title": "Assigned and mentioned",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "assigned",
                  "text": "@2",
                  "color": "blue"
                },
                {
                  "id": "mentioned",
                  "text": "@1",
                  "color": "amber"
                }
              ],
              "tooltip": "3 open issues"
            }
          },
          "mine": {
            "title": "Your open issues",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "created",
                  "text": "·1",
                  "color": "muted"
                }
              ],
              "tooltip": "1 open issue"
            }
          },
          "clear": {
            "title": "No open issues",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "",
                "tooltip": "No open issues"
              }
            }
          }
        },
        "refresh": {
          "every": 300,
          "on": [
            "show",
            "wake",
            "network"
          ]
        },
        "keys": [
          {
            "keys": "enter",
            "title": "Open the focused issue on GitHub"
          },
          {
            "keys": "c",
            "title": "Copy the focused issue's URL"
          },
          {
            "keys": "m",
            "title": "Mute the focused issue: out of the lists, the count and this popover until unmuted from the palette's Muted filter"
          },
          {
            "keys": "r",
            "title": "Refresh issues"
          },
          {
            "keys": "p",
            "title": "Open the Issues palette"
          },
          {
            "keys": "up",
            "title": "Move between issues (or j and k)"
          }
        ]
      },
      "notifications": {
        "title": "Notifications",
        "description": "The unread count as a badge, hidden at zero; the popover lists the unread threads by repository with their reason, opens or marks them read, marks all read.",
        "mocks": {
          "unread": {
            "title": "Unread notifications",
            "item": {
              "icon": "",
              "badge": 4,
              "tooltip": "4 unread notifications"
            }
          },
          "one": {
            "title": "One notification",
            "item": {
              "icon": "",
              "badge": 1,
              "tooltip": "1 unread notification"
            }
          },
          "clear": {
            "title": "All caught up",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "",
                "tooltip": "No unread notifications"
              }
            }
          }
        },
        "refresh": {
          "every": 300,
          "on": [
            "show",
            "wake",
            "network"
          ]
        },
        "keys": [
          {
            "keys": "enter",
            "title": "Mark the thread read and open it on GitHub"
          },
          {
            "keys": "m",
            "title": "Mark the thread read, or every marked thread (⌘-click, ⇧-click, ⇧↑↓)"
          },
          {
            "keys": "a",
            "title": "Mark all read"
          },
          {
            "keys": "p",
            "title": "Open the Notifications palette"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the thread's URL"
          },
          {
            "keys": "up",
            "title": "Move between threads (or j and k)"
          }
        ]
      }
    },
    "license": "MIT",
    "store": {
      "tagline": "Pull requests, issues, repos and notifications in the panel",
      "category": "developer",
      "features": [
        "Your pull requests, the ones waiting on your review and what merged this week, with checks and review state; mute one, or ignore it until it changes",
        "A pull request or issue in full: the body, latest comments and reviews, every check, who approved",
        "Your repositories, your organisation's and your stars; `cmd+e` opens the local clone in the editor",
        "Notifications by reason; `enter` opens the thread and marks it read, `space` in the popover reads it first",
        "Search all of GitHub as you type, your own work first; `is:pr`, `author:` and `label:` work as on GitHub",
        "Create an issue or a repository, check out a branch or merge, without leaving the keyboard"
      ],
      "permissions": [
        "network",
        "token"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-prs.png",
          "caption": "Pull Requests: Mine, Review requested and Merged, with the checks and the review decision on each row"
        },
        {
          "file": "2-pr-detail.png",
          "caption": "The pane a pull request opens with: the body, the latest comments and reviews, every check by name"
        },
        {
          "file": "3-notifications.png",
          "caption": "Notifications by reason, newest first; the first row is the unread count"
        },
        {
          "file": "4-search.png",
          "caption": "Search GitHub: repositories, issues, pull requests and users for one query"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar: the GitHub glyph with the unread count beside it",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: the unread threads by repository with their reason and age; Enter opens one, m marks it read, a marks all read",
          "kind": "bar",
          "box": [
            434,
            64,
            840,
            960
          ]
        },
        {
          "file": "bar-popover-work.png",
          "caption": "A second account, named Work, gets its own crumb; the arrows walk the threads and the footer names what Enter does",
          "kind": "bar",
          "box": [
            434,
            64,
            840,
            856
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the glyph with the unread count as its label",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Open",
          "description": "The pull request, issue, repository, notification or profile on GitHub; a notification is marked read first.",
          "keys": "enter"
        },
        {
          "title": "Copy URL",
          "keys": "cmd+c"
        },
        {
          "title": "Checkout branch",
          "description": "gh pr checkout in the clone under repos_root.",
          "keys": "cmd+shift+o"
        },
        {
          "title": "Copy branch name",
          "keys": "cmd+b"
        },
        {
          "title": "Open checks",
          "keys": "cmd+shift+k"
        },
        {
          "title": "Open files changed",
          "keys": "cmd+shift+f"
        },
        {
          "title": "Copy reference",
          "description": "owner/repo#n."
        },
        {
          "title": "Mute / Unmute",
          "description": "Keeps an open pull request or issue out of the lists, the counts and the bar popovers; the Muted filter lists them to unmute.",
          "keys": "cmd+m"
        },
        {
          "title": "Mark ready for review",
          "description": "On a draft.",
          "keys": "cmd+shift+r"
        },
        {
          "title": "Merge",
          "description": "With merge_method; asks first.",
          "keys": "cmd+shift+m"
        },
        {
          "title": "Close issue",
          "description": "Asks first.",
          "keys": "cmd+shift+x"
        },
        {
          "title": "Create issue",
          "description": "A form: repository, title, body."
        },
        {
          "title": "Open in editor",
          "description": "The local clone, in code or the system opener.",
          "keys": "cmd+e"
        },
        {
          "title": "Open folder",
          "keys": "cmd+o"
        },
        {
          "title": "Copy clone URL",
          "description": "ssh or https, per clone_protocol.",
          "keys": "cmd+shift+c"
        },
        {
          "title": "Copy owner/name"
        },
        {
          "title": "Open issues"
        },
        {
          "title": "Open pull requests"
        },
        {
          "title": "Open path",
          "description": "The path typed in the bar (the repository row's argument) on the default branch; a form when picked without it.",
          "keys": "cmd+p"
        },
        {
          "title": "Create repository",
          "description": "A form: owner, name, description, private."
        },
        {
          "title": "Mark as read",
          "description": "Without opening.",
          "keys": "cmd+shift+r"
        },
        {
          "title": "Mark all as read",
          "description": "Asks first.",
          "keys": "cmd+shift+a"
        },
        {
          "title": "Open profile",
          "description": "A user found by Search.",
          "keys": "enter"
        },
        {
          "title": "Copy login",
          "keys": "cmd+c"
        },
        {
          "title": "Open repositories"
        }
      ]
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/github",
  "tagline": "Pull requests, issues, repos and notifications in the panel",
  "category": "developer",
  "screenshots": [
    "https://pal.cagdas.io/extensions/github/screenshots/1-prs-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/1-prs.png",
    "https://pal.cagdas.io/extensions/github/screenshots/2-pr-detail-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/2-pr-detail.png",
    "https://pal.cagdas.io/extensions/github/screenshots/3-notifications-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/3-notifications.png",
    "https://pal.cagdas.io/extensions/github/screenshots/4-search-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/4-search.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-work-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-work.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/github/screenshots/1-prs.png",
    "https://pal.cagdas.io/extensions/github/screenshots/2-pr-detail.png",
    "https://pal.cagdas.io/extensions/github/screenshots/3-notifications.png",
    "https://pal.cagdas.io/extensions/github/screenshots/4-search.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/github/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-work.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/github/screenshots/1-prs-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/2-pr-detail-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/3-notifications-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/4-search-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/github/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-work-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/github/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "prs",
      "title": "Pull requests",
      "description": "Separate PR status item over your own pull requests: red needs attention, amber is awaiting review or checks, green is ready to merge, muted is waiting; a review asked of you is a blue count only with `review_requests` on. The popover shows every bucket, reviews included, with the PR title, repo, state and age.",
      "refresh": {
        "every": 300,
        "on": [
          "show",
          "wake",
          "network"
        ]
      },
      "refresh_words": "every 5 min, when the panel shows, on wake, when the network is back"
    },
    {
      "id": "issues",
      "title": "Issues",
      "description": "Separate Issues status item: assigned, mentioned, and your own open issues use distinct colours. The popover shows those buckets with the issue title, repo, labels, comments and age.",
      "refresh": {
        "every": 300,
        "on": [
          "show",
          "wake",
          "network"
        ]
      },
      "refresh_words": "every 5 min, when the panel shows, on wake, when the network is back"
    },
    {
      "id": "notifications",
      "title": "Notifications",
      "description": "The unread count as a badge, hidden at zero; the popover lists the unread threads by repository with their reason, opens or marks them read, marks all read.",
      "refresh": {
        "every": 300,
        "on": [
          "show",
          "wake",
          "network"
        ]
      },
      "refresh_words": "every 5 min, when the panel shows, on wake, when the network is back"
    }
  ],
  "has_links": false,
  "links": [],
  "multi": true,
  "has_readme": true
}
