Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
syntaqxRepository pages update live while you sit on them. A signed-in tab on a repository page asks the site to watch it (POST /-/notify, watch_repo), which checks the person can read it and tells notify; notify keeps one topic per repository (a new Topic Durable Object, migration v3) of whose feeds are watching, for fifteen minutes at a time, renewed while the page stays open. The events service passes every event a page shows (pushes and deletions, pull requests, issues, comments, reviews, checks, statuses, runs, releases, deployments, security alerts) to notify as a small repo_changed note naming only its kind, ref, number, commit, run and commit count (g1t_contracts::live), one call per batch, and the actions service tells it of runs' jobs starting and finishing (run.updated, over a new optional NOTIFY binding). Notify hands each change to the watching feeds, which send it to their tabs as a `repo` event. On the page, useRepoLive (lib/use-repo-live.ts) revalidates the loader a second after the last matching change (five at most), never while someone is typing or a dialog is open, and at most once a minute in a hidden tab; signed out or with the socket down it refreshes on coming back into view (at most every 30 s) and once a minute while in view. Used on the overview, Files and folders, Commits (new commits wait under an "N new commits · Show" bar), Tags, the pull request and issue lists, a pull request and an issue (a reader at the bottom follows new timeline items), the Actions runs list (its 3 s poll becomes 30 s with the socket up) and a run (10 s for steps with the socket up), and the Security pages. The notifications guide has a new "Pages that update live" section.

README.md

g1t/detect

Says what a g1t.page build of the checkout would find, without building or deploying anything: the same rules g1t/deploy builds with.

steps:
  - uses: actions/checkout@v5
  - id: detect
    uses: g1t/detect@v1
  - if: steps.detect.outputs.kind == 'none'
    run: echo "::error::Nothing here would be served."
  - if: steps.detect.outputs.install != ''
    run: ${{ steps.detect.outputs.install }}
yaml

Inputs

InputDefault
root-dirThe checkoutWhere the project is in the checkout.
build-commandNoneA build command of your own, as g1t/deploy takes it.
output-dirNoneAn output folder of your own, as g1t/deploy takes it.

Outputs

Output
kindworkers (a wrangler.jsonc, wrangler.json or wrangler.toml), static (a site a build writes), html (the files as they are) or none.
installHow dependencies are installed, from the lockfile: npm ci, pnpm install --frozen-lockfile, and so on. Empty without a package.json.
buildWhat builds it: your command, npm run build for a package with a build script, or wrangler deploy --dry-run for Workers. Empty when nothing does.
output-dirThe folder served, relative to the project (. for the project itself): a Workers project's assets directory, or the first of dist, build, out, public, _site, .output/public that exists. Empty when a build has yet to write it.

It runs g1t-runner detect, found or downloaded as g1t/deploy finds it.