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.

syntaqxYou can clear your conversation with @g1t, for good. "New conversation" only leaves a mark that Ask reads back from; Clear conversation (the ⋯ menu in the Ask panel and in the @g1t direct message's header, or /clear in either composer, after a confirming dialog) deletes it: every message in your direct message with g1t, thread replies and the empty rows deleted messages left, g1t's answers with their steps, tool reads and sources, the pages questions were asked from, their reactions, and the read mark and last activity that pointed at them, in one D1 batch; the room's pending answer job and an answer still being written (which is thrown away, never sent to the provider, and never notifies); and your kept notifications and unread counts from it (notify's forget_conversation, which also drops a late notification about a message from before the clear). Only the one person in their own direct message with g1t can clear it: any other conversation is refused, someone else's is not found, and owners cannot clear another person's. Clearing again deletes nothing (cleared: 0). The empty direct message and its members stay, so Ask and Chat open it as before; chat_meter (counts with no text or person, for billing), issues, pull requests and sessions an answer started, what the workspace's AI provider already received and pushes already shown on a device stay. Open tabs and the mobile app empty the conversation on channel.cleared. Each answer job now carries the question it read and is dropped if that question is gone. The Ask guide has "Clear the conversation" with what is deleted and kept. Deploy notify before chat. Checked: chat's 75 tests (new: scoping, clearing only that conversation, clearing twice, Ask's context after a clear) and typecheck, notify's 49 and typecheck, contracts' 48, the site's typecheck (tsc -b --force), its tests and a production build, mobile's typecheck and the docs build.

README.md

g1t/deploy

Builds the checkout a g1t Actions job is in and puts it on g1t.page: production when the run is on the project's production branch, the pull request's preview for a pull request's run, and the branch's preview for a run on any other branch.

name: Deploy

on:
  push:
    branches: [main]
  pull_request:

permissions:
  contents: read
  deployments: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - id: deploy
        uses: g1t/deploy@v1
      - run: echo "Live at ${{ steps.deploy.outputs.url }}"
yaml

The project must have Deployments on, and the workspace's plan must include them. The guide, Deploying from a workflow, says what is built and when.

Inputs

InputDefault
projectThe repository's one project with Deployments onThe project's slug. Needed when the repository has several.
root-dirThe project's settingWhere the project is in the checkout.
build-commandThe project's setting, else what the build findsWhat builds it.
output-dirThe project's setting, else the folder the framework writes, else the first of dist, build, out, public, _site, .output/publicThe folder a static build writes.
build-asThe project's setting, else autoWhat it is built as: auto, static, workers or docker. A container is built with the docker on the job's PATH.
dockerfileThe project's setting, else Dockerfile or ContainerfileThe Dockerfile a container is built from, relative to the project.
shaThe run's commitThe commit this is a build of, for its g1t / deploy check.
token${{ github.token }}The job's own token. It needs deployments: write; any other token is refused.

Outputs

Output
urlWhere the app is served.
deployment-idThe build's id, dpl_….
kindproduction or preview.

How it works

  1. It calls POST /repos/{owner}/{repo}/deployments/builds with the job's token. g1t checks the plan and the spend limit, decides production or preview from the run, sets the commit's g1t / deploy check to pending, and answers with a token for this build alone and the project's variables and secrets for builds of that kind.
  2. It masks that token and every secret with ::add-mask::.
  3. It runs g1t-runner deploy in the checkout, which installs, builds and uploads the app exactly as g1t's own builds do, and reports to g1t with the build's token. The build's log is in the step's.

A pull request from a fork or from someone without the Write role, and a run that had to be approved, build without the project's secrets. The build's time is the job's Actions time; it is not charged again.

g1t-runner is on g1t's machines. Elsewhere (a self-hosted runner), the action uses the one on PATH, or downloads the newest release from https://g1t.sh/downloads/runner/latest/ and checks it against the release's SHA256SUMS. It runs on Linux and macOS, with curl and either jq or python3.