Fixes #123, but for Latitude signals.
Latitude asks for three read-only permissions and nothing else — Pull requests, Contents, and
Metadata. The app never comments on your PRs, pushes code, or changes anything in your repositories.
How it works
- You connect the Latitude GitHub App to your GitHub account and pick the repositories it can see.
- You tell Latitude which repository and branch to watch (an organization default, optionally overridden per project).
- When someone opens a PR whose title, description, or branch name references a signal slug, the PR shows up on that signal’s page.
- When the PR merges into the monitored branch, Latitude resolves the signal automatically (or reopens it, for a revert). A commit pushed directly to the branch does the same on landing.
Connect
Under Settings → Integrations, open the GitHub card and click Connect. GitHub asks you to install the Latitude app and choose All repositories or a selected subset, then sends you back to Latitude, which verifies you own the installation and binds it to your organization. One GitHub installation maps to one Latitude organization. To disconnect, use Disconnect on the same card (Latitude stops processing events; your linked PRs and commits are kept for history) or uninstall the app on GitHub — either does the same thing.Configure what to watch
On the GitHub manage page (Settings → Integrations → GitHub):- Default repository & branch — the repo/branch every project watches by default.
- What to watch — toggle pull requests and commits, and which text sources are scanned (PR title, PR description, branch name, commit message).
- Magic words — the keyword lists that decide the action (below).
Magic words
Latitude scans the enabled text sources for a keyword plus a signal slug in the same sentence or line. The keyword can come before or after the slug, and an optional# prefix is allowed.
All of these link
LAT-XY9Z and resolve it on merge:
Revert "Fix LAT-XY9Z" reopens). You can edit each
keyword list, or reset it to the defaults, on the manage page. (Custom regular expressions are not
supported.)
Use the slug shown on the signal page (for example LAT-XY9Z) — the three-letter prefix is derived
from your project, and slugs are unique across your organization, so one reference always points at
exactly one signal.
Let dispatched agents write it for you
If you use agent dispatch, the default prompt already tells the agent to name its branchfix/<slug>-… and title its PR Resolves <SLUG>: …. An agent-authored fix then
links on open and resolves the signal on merge with nobody typing a slug by hand.
See the links on a signal
A signal with linked PRs or commits shows a GitHub pill at the top of its detail page: the most relevant reference (a merged PR, the latest open PR, or the most recent commit) with its status. When there is more than one, the pill opens a list of them all, each linking out to GitHub, and shows which one resolved or reopened the signal.Troubleshooting
The manage page has a Recent deliveries table — every webhook GitHub sent, newest first, with its event, repository, status, and a detail column. If a merge didn’t resolve a signal, check here:- skipped
no-config— the repository or branch isn’t the one you’re watching. - skipped
suspended— the GitHub app is suspended for your account; unsuspend it on GitHub. - processed but the signal didn’t move — the text had no matching keyword next to the slug, or the slug doesn’t exist / was deleted. Re-check the magic words above.
Self-hosting
Latitude Cloud runs the GitHub App for you. Self-hosters register their own GitHub App and provide its credentials, so there is no dependency on Latitude’s app and no data leaves your control. When the credentials are unset, the integration stays hidden. Register a new GitHub App under GitHub → Settings → Developer settings → GitHub Apps → New GitHub App with:- Callback URL and Setup URL:
https://<your-web-host>/integrations/github/setup/callback, with “Request user authorization (OAuth) during installation” and “Redirect on update” checked. - Webhook URL:
https://<your-api-host>/v1/webhooks/github, and a high-entropy secret. - Repository permissions (read-only): Pull requests, Contents, Metadata.
- Subscribe to events: Pull request, Push.
LAT_GITHUB_APP_CLIENT_ID/_SECRET are the GitHub App’s own OAuth client, not your GitHub
single-sign-on credentials. For GitHub Enterprise Server, set LAT_GITHUB_BASE_URL to your GHES
host; every URL and API base is derived from it (best-effort support).