Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 1 | import { type RouteConfig, index, route } from "@react-router/dev/routes"; |
| 2 | ||
| 3 | export default [ | |
| 4 | index("routes/home.tsx"), | |
| 5 | route("login", "routes/login.tsx"), | |
| Merge main (membership, two-factor, GitHub repo roles) into tokens | 6 | // The second step of signing in, for an account with two-factor authentication. |
| 7 | route("login/two-factor", "routes/login-two-factor.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 8 | route("register", "routes/register.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 9 | // An invite link: who sent it, then sign-up or joining. `invite` is reserved. |
| 10 | route("invite/:code", "routes/invite.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 11 | route("logout", "routes/logout.tsx"), |
| 12 | route("verify", "routes/verify.tsx"), | |
| Merge email confirmation gate: a code and a link, nothing until confirmed (identity 0036) | 13 | // Where an account confirms its email address, with the code from the |
| 14 | // email; every other page sends it here until it has (lib/confirm-gate.ts). | |
| 15 | route("confirm-email", "routes/confirm-email.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 16 | route("forgot", "routes/forgot.tsx"), |
| 17 | route("reset", "routes/reset.tsx"), | |
| 18 | route("device", "routes/device.tsx"), | |
| 19 | route("oauth/authorize", "routes/oauth-authorize.tsx"), | |
| 20 | route("new", "routes/new.tsx"), | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 21 | // GitHub: signing in with it, and bringing repositories across through |
| 22 | // g1t's GitHub App. `auth` and `integrations` are reserved names. | |
| 23 | route("new/github", "routes/new-github.tsx"), | |
| 24 | route("auth/github", "routes/auth-github.ts"), | |
| 25 | route("auth/github/callback", "routes/auth-github-callback.tsx"), | |
| 26 | route("auth/github/username", "routes/auth-github-username.tsx"), | |
| 27 | route("integrations/github/install", "routes/github-install.ts"), | |
| 28 | route("integrations/github/setup", "routes/github-setup.tsx"), | |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 29 | // Your own settings: one page each, so links can name the one they mean. |
| 30 | // `/settings` goes to the first; an old link's `#anchor` to its page. | |
| 31 | route("settings", "routes/settings/layout.tsx", [ | |
| 32 | index("routes/settings/index.tsx"), | |
| 33 | route("profile", "routes/settings/profile.tsx"), | |
| 34 | route("emails", "routes/settings/emails.tsx"), | |
| Inbox on the site: reasons, a reason filter, Subscribe, Watch and settings | 35 | route("notifications", "routes/settings/notifications.tsx"), |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 36 | route("invites", "routes/settings/invites.tsx"), |
| 37 | route("keys", "routes/settings/keys.tsx"), | |
| One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers | 38 | // Your access tokens: the list, a new one, and each one's page. |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 39 | route("tokens", "routes/settings/tokens.tsx"), |
| One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers | 40 | route("tokens/new", "routes/settings/token-new.tsx"), |
| 41 | route("tokens/:id", "routes/settings/token.tsx"), | |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 42 | route("github", "routes/settings/github.tsx"), |
| 43 | route("applications", "routes/settings/applications.tsx"), | |
| Integrations are a directory of connectors, for a workspace and for each person | 44 | route("integrations", "routes/settings/integrations.tsx"), |
| Merge main (membership, two-factor, GitHub repo roles) into tokens | 45 | route("two-factor", "routes/settings/two-factor.tsx"), |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 46 | route("security-log", "routes/settings/security-log.tsx"), |
| Merge account deletion: soft delete for 30 days, staff restore and purge, ghost for what remains (identity 0037) | 47 | route("account", "routes/settings/account.tsx"), |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 48 | ]), |
| 49 | // The account menu's header: name, primary email and invites left. | |
| 50 | route("settings/menu.json", "routes/settings-menu-json.ts"), | |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 51 | // People, apart from workspaces: `u` is a reserved name. |
| 52 | route("u/:username", "routes/user.tsx"), | |
| Merge commit authors and hovercards: commits show their accounts, every name opens a card (repos 0016) | 53 | // The card that opens over a person's name or avatar (lib/hovercard.ts). |
| 54 | // `-` is no workspace's name, so nothing else is ever found here. | |
| 55 | route("-/hovercard/user/:username", "routes/hovercard-user.ts"), | |
| Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002) | 56 | // Live notifications: each tab's feed socket, and the person's |
| 57 | // notification settings as JSON (services/notify). | |
| 58 | route("-/live", "routes/notify/live.ts"), | |
| Merge branch 'socket-tickets' | 59 | // A page opened with an access token asks here for each socket's |
| 60 | // short-lived ticket (lib/socket-ticket.ts). | |
| 61 | route("-/live/ticket", "routes/notify/ticket.ts"), | |
| Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002) | 62 | route("-/notify", "routes/notify/api.ts"), |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 63 | route("explore", "routes/explore.tsx", { id: "explore" }), |
| Prices keep themselves current with what g1t pays | 64 | route("pricing", "routes/pricing.tsx"), |
| Search across all of g1t, Explore, and a command palette | 65 | route("search", "routes/search.tsx"), |
| g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them. | 66 | // Each person's notifications, what the panel in the top bar fetches, |
| 67 | // and the address the page once had. | |
| 68 | route("notifications", "routes/notifications.tsx"), | |
| 69 | route("inbox", "routes/inbox-moved.ts"), | |
| Inbox: a bell in the top bar opens it beside the page, and /inbox holds it all | 70 | route("inbox.json", "routes/inbox-json.ts"), |
| Search across all of g1t, Explore, and a command palette | 71 | // What the command palette shows as someone types. |
| 72 | route("search.json", "routes/search-json.ts"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 73 | route("workspaces/new", "routes/workspace/new.tsx"), |
| Merge workspace invitations: nobody joins a workspace without saying yes, people are found by username, your own invites can bring someone in, and nobody is left without a workspace (identity 0040) | 74 | // Workspace invitations waiting for the person's answer. `invitations` is reserved. |
| 75 | route("invitations", "routes/invitations.tsx"), | |
| 76 | // People to invite, as the People page's invite form searches them. | |
| 77 | route("-/people.json", "routes/people-json.ts"), | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 78 | // Trust pages: reserved names, like the rest above. |
| 79 | route("policies", "routes/policies.tsx"), | |
| 80 | route("policies/:policy", "routes/policy.tsx"), | |
| 81 | route("security", "routes/security.tsx"), | |
| 82 | route("support", "routes/support.tsx"), | |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 83 | // Status moved to status.g1t.sh (apps/status); old links go there. |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 84 | route("status", "routes/status.tsx"), |
| 85 | route("status.json", "routes/status-json.ts"), | |
| 86 | route(".well-known/security.txt", "routes/security-txt.ts"), | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 87 | // For search engines: what may be crawled, and a map of the public pages. |
| 88 | route("robots.txt", "routes/robots-txt.ts"), | |
| 89 | route("sitemap.xml", "routes/sitemap-xml.ts"), | |
| The g1t CLI 0.1.0 is downloadable: g1t.sh/downloads/cli/latest/, five platforms with SHA256SUMS | 90 | // Releases of the self-hosted runner and the g1t CLI, from R2. |
| 91 | route("downloads/:tool/*", "routes/downloads-runner.ts"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 92 | // A workspace's own pages sit under `-`, which no repository can be named. |
| 93 | route(":owner", "routes/workspace/layout.tsx", [ | |
| 94 | index("routes/workspace/overview.tsx"), | |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 95 | // Its pages, each in the sidebar: Overview (above), Projects, People, Insights; Teams and Packages below. |
| Navigation: the workspace's own page with tabs, pins and recent in the sidebar | 96 | route("-/projects", "routes/workspace/projects.tsx"), |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 97 | route("-/people", "routes/workspace/people.tsx"), |
| Navigation: the workspace's own page with tabs, pins and recent in the sidebar | 98 | route("-/insights", "routes/workspace/tab-soon.tsx", { id: "routes/workspace/insights" }), |
| 99 | // Pinning its projects, for the person signed in. | |
| 100 | route("-/pins", "routes/workspace/pins.ts"), | |
| 101 | // Pages that moved: Members is People, and the overview is the workspace. | |
| 102 | route("-/members", "routes/workspace/moved.ts", { id: "routes/workspace/moved-members" }), | |
| Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002) | 103 | // Code's Overview: Mission control's code panels, for this workspace. |
| 104 | route("-/overview", "routes/workspace/code-overview.tsx"), | |
| 105 | // The workspace itself, at a glance: members, plan and spend. | |
| 106 | route("-/workspace", "routes/workspace/workspace-overview.tsx"), | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 107 | // Teams: the list, a new one, and each team's pages. |
| 108 | route("-/teams", "routes/workspace/teams.tsx"), | |
| 109 | route("-/teams/new", "routes/workspace/team-new.tsx"), | |
| 110 | route("-/teams/:team", "routes/workspace/team/layout.tsx", [ | |
| 111 | index("routes/workspace/team/members.tsx"), | |
| 112 | route("teams", "routes/workspace/team/teams.tsx"), | |
| 113 | route("repositories", "routes/workspace/team/repositories.tsx"), | |
| 114 | route("settings", "routes/workspace/team/settings.tsx"), | |
| 115 | ]), | |
| One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers | 116 | // The workspace's own access tokens: the list, a new one, and each one's page. |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 117 | route("-/tokens", "routes/workspace/tokens.tsx"), |
| One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers | 118 | route("-/tokens/new", "routes/workspace/token-new.tsx"), |
| 119 | route("-/tokens/:id", "routes/workspace/token.tsx"), | |
| Settings: fine-grained tokens, workspace token Admin, workspace personal access token rules | 120 | // Its rules for members' personal access tokens, and approving them. |
| 121 | route("-/personal-access-tokens", "routes/workspace/personal-access-tokens.tsx"), | |
| The Spend page says what a workspace spent, where it went and the budgets that hold it, in Workspace under Money: spent at price, agents' spend and the spend limit; by day; by agent, person, channel, model, kind of work and product; budgets from the workspace down to each person, agent and task, with what happens at 100%; the costliest tasks, each with a receipt of every session at the provider's price and what was charged; and how it's priced. Everyone sees what agents spent for them, and owners and billing managers the whole workspace; each person can have a monthly budget agents keep to, and the spend pill in the top bar shows your month or the workspace's against its limit. The spend guide says how. | 122 | // Spend, the front of its money: where it went, budgets, receipts; and the top bar's pill. |
| 123 | route("-/spend", "routes/workspace/spend.tsx"), | |
| 124 | route("-/spend/pill", "routes/workspace/spend-pill.ts"), | |
| 125 | route("-/spend/receipts/:id", "routes/workspace/spend-receipt.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 126 | route("-/usage", "routes/workspace/usage.tsx"), |
| Merge the AI Gateway: Anthropic's Messages API on a workspace's tokens | 127 | route("-/gateway", "routes/workspace/gateway.tsx"), |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 128 | route("-/billing", "routes/workspace/billing.tsx"), |
| The statement is a month at a time, a line per kind of charge | 129 | route("-/billing/entries", "routes/workspace/statement-entries.ts"), |
| 130 | route("-/billing/statement.csv", "routes/workspace/statement-csv.ts"), | |
| Integrations are a directory of connectors, for a workspace and for each person | 131 | // The integrations directory, and the setup page for each kind of |
| 132 | // provider connection: models, alerts, trackers (lib/integration-sections). | |
| 133 | route("-/integrations", "routes/workspace/integrations-directory.tsx"), | |
| 134 | route("-/integrations/:section", "routes/workspace/integrations.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 135 | route("-/webhooks", "routes/workspace/webhooks.tsx"), |
| Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002) | 136 | // The workspace's own emoji, for chat (components/emoji). |
| 137 | route("-/emoji", "routes/workspace/emoji.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 138 | route("-/secrets", "routes/workspace/secrets.tsx"), |
| Fast pages, required checks on the branch, self-hosted runners, honest incidents | 139 | route("-/runners", "routes/workspace/runners.tsx"), |
| Merge branch 'worktree-agent-a3abfcce648e87dca' | 140 | route("-/actions", "routes/workspace/actions-settings.tsx"), |
| Packages, with a container registry on g1t.sh; workspaces deleted whole and kept 30 days; Members for every member | 141 | route("-/packages", "routes/workspace/packages.tsx"), |
| 142 | route("-/packages/:ecosystem/*", "routes/workspace/package.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 143 | route("-/settings", "routes/workspace/settings.tsx"), |
| Chat controls, public profiles, shadcn selects, and no Docs tab in a project | 144 | // What members may do in chat: channels, emoji, default channels. |
| 145 | route("-/settings/chat", "routes/workspace/chat-settings.tsx"), | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 146 | route("-/repositories", "routes/workspace/repositories.tsx"), |
| Agents mode: an overview of every agent's work and spend, and each agent's sessions, memory, routines, spend, activity and versions | 147 | // Agents mode: the overview (budget, sessions, roster, spend) first, then |
| The docs folder is gone, and what it held lives where people read it: how a self-hosted g1t runs and how to deploy g1t to Cloudflare are pages on docs.g1t.sh under Run g1t yourself, and speed, rate limits and operating g1t.sh are sections of CONTRIBUTING.md; code that cited a file in docs/ now points to the page or section that covers it, or says what it means itself, and applied migrations and the runner images are left as they were. | 148 | // each of the workspace's own agents and its sessions. |
| Agents mode: an overview of every agent's work and spend, and each agent's sessions, memory, routines, spend, activity and versions | 149 | // `new` is no agent's handle. |
| Chat and workspace agents: channels, DMs and named agents you talk to | 150 | route("-/agents", "routes/workspace/agents/layout.tsx", [ |
| 151 | index("routes/workspace/agents.tsx"), | |
| 152 | route("new", "routes/workspace/agents/new.tsx"), | |
| 153 | route(":handle", "routes/workspace/agents/agent.tsx", [ | |
| Agents mode: an overview of every agent's work and spend, and each agent's sessions, memory, routines, spend, activity and versions | 154 | index("routes/workspace/agents/sessions.tsx"), |
| 155 | route("sessions/:id", "routes/workspace/agents/session.tsx"), | |
| 156 | route("memory", "routes/workspace/agents/memory.tsx"), | |
| 157 | route("routines", "routes/workspace/agents/routines.tsx"), | |
| Chat and workspace agents: channels, DMs and named agents you talk to | 158 | route("spend", "routes/workspace/agents/spend.tsx"), |
| 159 | route("activity", "routes/workspace/agents/activity.tsx"), | |
| Agents mode: an overview of every agent's work and spend, and each agent's sessions, memory, routines, spend, activity and versions | 160 | route("profile", "routes/workspace/agents/profile.tsx"), |
| Chat and workspace agents: channels, DMs and named agents you talk to | 161 | ]), |
| 162 | ]), | |
| 163 | // Chat mode: channels by name, direct messages by id, and what the page | |
| 164 | // calls as it runs: the live socket and the JSON for sending and reading. | |
| 165 | route("-/chat/live", "routes/workspace/chat/live.ts"), | |
| 166 | route("-/chat/api", "routes/workspace/chat/api.ts"), | |
| Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002) | 167 | // A person's card in Chat: their profile and teams here. |
| 168 | route("-/chat/person/:username", "routes/workspace/chat/person.ts"), | |
| Chat and workspace agents: channels, DMs and named agents you talk to | 169 | route("-/chat", "routes/workspace/chat/layout.tsx", [ |
| 170 | index("routes/workspace/chat/index.tsx"), | |
| 171 | route("browse", "routes/workspace/chat/browse.tsx"), | |
| 172 | route("dm/:id", "routes/workspace/chat/channel.tsx", { id: "routes/workspace/chat/dm" }), | |
| 173 | route(":channel", "routes/workspace/chat/channel.tsx"), | |
| 174 | ]), | |
| The docs folder is gone, and what it held lives where people read it: how a self-hosted g1t runs and how to deploy g1t to Cloudflare are pages on docs.g1t.sh under Run g1t yourself, and speed, rate limits and operating g1t.sh are sections of CONTRIBUTING.md; code that cited a file in docs/ now points to the page or section that covers it, or says what it means itself, and applied migrations and the runner images are left as they were. | 175 | // Artifacts mode (code says "folio"): what its |
| Artifacts is a mode in the rail, the shell and the phone's tab bar in place of Docs: its home lists everything you can open by day or as cards under All, Yours and Shared with you, with search, filters and tiles to start a doc (slides, designs and dashboards say they are coming soon), and its sidebar holds favorites, spaces, Private, Shared, projects' docs and the trash. | 176 | // pages call as they run (an artifact's live socket, JSON, comments, |
| 177 | // uploads, export), then Home, making one, templates, the trash, the | |
| 178 | // spaces, and each artifact by its address. Addresses are flat and end | |
| 179 | // in the id, so renaming or moving one keeps links working. | |
| 180 | route("-/artifacts/live", "routes/workspace/folios/live.ts"), | |
| 181 | route("-/artifacts/api", "routes/workspace/folios/api.ts"), | |
| 182 | route("-/artifacts/threads/:folio/*", "routes/workspace/folios/threads.ts"), | |
| 183 | route("-/artifacts/upload", "routes/workspace/folios/upload.ts"), | |
| 184 | route("-/artifacts/export", "routes/workspace/folios/export.ts"), | |
| 185 | route("-/artifacts", "routes/workspace/folios/layout.tsx", [ | |
| 186 | index("routes/workspace/folios/home.tsx"), | |
| 187 | route("new/:kind", "routes/workspace/folios/new.tsx"), | |
| 188 | route("templates", "routes/workspace/folios/templates.tsx"), | |
| 189 | route("trash", "routes/workspace/folios/trash.tsx"), | |
| 190 | // Artifacts possibly out of date, and a project's docs folder, read-only. | |
| 191 | route("stale", "routes/workspace/folios/stale.tsx"), | |
| 192 | route("spaces", "routes/workspace/folios/spaces.tsx"), | |
| 193 | route("spaces/new", "routes/workspace/folios/space-new.tsx"), | |
| 194 | route("spaces/:space", "routes/workspace/folios/space.tsx"), | |
| 195 | route("spaces/:space/settings", "routes/workspace/folios/space-settings.tsx"), | |
| 196 | route("repo/:repoOwner/:repoName/*", "routes/workspace/folios/repo-file.tsx"), | |
| 197 | route(":folio", "routes/workspace/folios/folio.tsx"), | |
| 198 | route(":folio/history", "routes/workspace/folios/history.tsx"), | |
| Docs: a workspace knowledge base people and agents write together | 199 | ]), |
| g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them. | 200 | // Today, the workspace's front page (`-/home` leads there), and every |
| 201 | // app in it you can use, with pinning them to your dock. | |
| 202 | route("-/today", "routes/workspace/home.tsx"), | |
| 203 | route("-/home", "routes/workspace/moved.ts", { id: "routes/workspace/moved-home" }), | |
| 204 | route("-/apps", "routes/workspace/apps.tsx"), | |
| The docs folder is gone, and what it held lives where people read it: how a self-hosted g1t runs and how to deploy g1t to Cloudflare are pages on docs.g1t.sh under Run g1t yourself, and speed, rate limits and operating g1t.sh are sections of CONTRIBUTING.md; code that cited a file in docs/ now points to the page or section that covers it, or says what it means itself, and applied migrations and the runner images are left as they were. | 205 | // What Code's pages say to a member without Code. |
| Chat and workspace agents: channels, DMs and named agents you talk to | 206 | route("-/code-access", "routes/workspace/code-access.tsx"), |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 207 | route("-/memory", "routes/workspace/memory.tsx"), |
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 208 | route("-/context", "routes/workspace/context.tsx"), |
| 209 | route("-/security", "routes/workspace/security.tsx"), | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 210 | route("-/security/patterns", "routes/workspace/security-patterns.tsx"), |
| 211 | route("-/security/bypass-requests", "routes/workspace/security-bypass.tsx"), | |
| 212 | route("-/security/settings", "routes/workspace/security-settings.tsx"), | |
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 213 | route("-/audit", "routes/workspace/audit.tsx"), |
| 214 | route("-/audit/export", "routes/workspace/audit-export.ts"), | |
| 215 | route("-/guardrails", "routes/workspace/guardrails.tsx"), | |
| Merge rulesets: branch and tag rules, agent-first, enforced on push and merge | 216 | route("-/rules", "routes/workspace/rules.tsx"), |
| 217 | route("-/rules/:id", "routes/workspace/ruleset.tsx"), | |
| A flat project menu with Code first, views as tabs, and Stripe for every owner | 218 | // What the workspace will have across its projects. |
| 219 | route("-/soon/:feature", "routes/workspace/soon.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 220 | ]), |
| 221 | // Why a line is the way it is, fetched by the blame view. | |
| 222 | route(":owner/:repo/why/:hash", "routes/repo/why.ts"), | |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 223 | // A project's agent runs as JSON, and stopping or messaging one. |
| 224 | route(":owner/:repo/agents.json", "routes/repo/agents-live.ts"), | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 225 | // Its branch names, for changing the branch a pull request merges into. |
| 226 | route(":owner/:repo/branches.json", "routes/repo/branch-names.ts"), | |
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 227 | // What a project's agent runs did, from the audit log, for the Agent panel. |
| 228 | route(":owner/:repo/audit.json", "routes/repo/audit-live.ts"), | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 229 | // An invitation to a repository, answered by someone who cannot see it yet. |
| 230 | route(":owner/:repo/invitations", "routes/repo/invitations.tsx"), | |
| Merge branch 'main' into worktree-agent-a69aeabc4b0deeb97 | 231 | // The Files page's About as JSON, asked again while it is first worked out. |
| 232 | route(":owner/:repo/about.json", "routes/repo/about-json.ts"), | |
| 233 | // Starring it, from the header's Star button. | |
| 234 | route(":owner/:repo/star", "routes/repo/star.ts"), | |
| Inbox on the site: reasons, a reason filter, Subscribe, Watch and settings | 235 | // Subscribing to its issues and pull requests, and watching it. |
| 236 | route(":owner/:repo/notifications", "routes/repo/notifications.ts"), | |
| Fast pages, required checks on the branch, self-hosted runners, honest incidents | 237 | // A starter CI workflow, opened as a pull request (components/add-ci.tsx). |
| 238 | route(":owner/:repo/add-ci", "routes/repo/add-ci.ts"), | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 239 | // A screenshot of a project's production, for its overview. |
| 240 | route(":owner/:repo/production.jpg", "routes/repo/production-screenshot.ts"), | |
| Merge g1tusercontent.com: registry answers run nothing in a browser, the site's pages run only their own scripts, repository files and avatars on their own origin, raw files rate limited per address | 241 | // A file as it is, sent on to the usercontent origin (lib/usercontent.ts). |
| 242 | route(":owner/:repo/raw/:ref/*", "routes/repo/raw.ts"), | |
| Projects: what a workspace builds and runs, first on every page | 243 | // A project: its overview first, its repository's code under Code. The |
| 244 | // 1:1 project of a repository has the repository's name, so every | |
| 245 | // repository address below keeps working. | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 246 | route(":owner/:repo", "routes/repo/layout.tsx", [ |
| Projects: what a workspace builds and runs, first on every page | 247 | index("routes/repo/overview.tsx"), |
| 248 | route("code", "routes/repo/code.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 249 | route("tree/:ref/*", "routes/repo/tree.tsx"), |
| 250 | route("blob/:ref/*", "routes/repo/blob.tsx"), | |
| Download ZIP from the Code button; a slimmer lifecycle panel; agent steps say what was done, not sandbox paths | 251 | route("archive/*", "routes/repo/archive.ts"), |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 252 | route("commits", "routes/repo/commits.tsx"), |
| Branches and Tags pages, each file's last commit, and the branch menu on files | 253 | route("branches", "routes/repo/branches.tsx"), |
| 254 | route("tags", "routes/repo/tags.tsx"), | |
| Merge branch 'main' into worktree-agent-a69aeabc4b0deeb97 | 255 | route("releases", "routes/repo/releases.tsx"), |
| 256 | route("releases/new", "routes/repo/release-new.tsx"), | |
| 257 | route("releases/tag/*", "routes/repo/release.tsx"), | |
| 258 | route("contributors", "routes/repo/contributors.tsx"), | |
| 259 | route("activity", "routes/repo/activity.tsx"), | |
| 260 | route("stargazers", "routes/repo/stargazers.tsx"), | |
| Compare: any two branches, the commits one has that the other does not, and the diff, with Open a pull request | 261 | route("compare/*", "routes/repo/compare.tsx", { id: "routes/repo/compare-range" }), |
| 262 | route("compare", "routes/repo/compare.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 263 | route("commit/:hash", "routes/repo/commit.tsx"), |
| Merge checks: statuses and check runs on every commit | 264 | // A check run reported on a commit: its report, annotations and buttons. |
| 265 | route("checks/:id", "routes/repo/check-run.tsx"), | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 266 | route("labels", "routes/repo/labels.tsx"), |
| 267 | route("milestones", "routes/repo/milestones.tsx"), | |
| 268 | route("milestones/:number", "routes/repo/milestone.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 269 | route("issues", "routes/repo/issues.tsx"), |
| 270 | route("issues/new", "routes/repo/issue-new.tsx"), | |
| 271 | route("issues/:number", "routes/repo/issue.tsx"), | |
| 272 | route("pulls", "routes/repo/pulls.tsx"), | |
| 273 | route("pulls/new", "routes/repo/pull-new.tsx"), | |
| 274 | route("pull/:number", "routes/repo/pull.tsx"), | |
| 275 | route("queue", "routes/repo/queue.tsx"), | |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 276 | route("agents", "routes/repo/agents.tsx"), |
| Usage, Billing settings and prepaid AI credit; fixes from the UX audit | 277 | route("usage", "routes/repo/usage.tsx"), |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 278 | route("agents/runs/:id", "routes/repo/agents-run.tsx"), |
| 279 | route("sessions", "routes/repo/sessions.tsx"), | |
| 280 | route("sessions/:number", "routes/repo/session.tsx"), | |
| 281 | route("memory", "routes/repo/memory.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 282 | route("actions", "routes/repo/actions.tsx"), |
| 283 | route("actions/runs/:id", "routes/repo/actions-run.tsx"), | |
| Actions: workflow_run, workflow.completed, artifacts on the run page, Node 24 | 284 | route("actions/runs/:id/artifacts/:name", "routes/repo/actions-artifact.ts"), |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 285 | route("actions/jobs/:job/log", "routes/repo/actions-log.ts"), |
| Merge Actions runs: summaries, attempts and re-runs, graceful cancel, log downloads, badges (actions 0009) | 286 | route("actions/jobs/:job/log.txt", "routes/repo/actions-job-log-download.ts"), |
| 287 | route("actions/runs/:id/logs.zip", "routes/repo/actions-logs-download.ts"), | |
| 288 | route("actions/workflows/:file/badge.svg", "routes/repo/actions-badge.ts"), | |
| Deployments: a preview for every pull request, production on g1t.page | 289 | route("deployments", "routes/repo/deployments.tsx"), |
| 290 | route("deployments/:id", "routes/repo/deployment.tsx"), | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 291 | // Security: an overview, then a page for each part. Old links to |
| 292 | // `security?tab=…` are sent on by the overview. | |
| 293 | route("security", "routes/repo/security-overview.tsx"), | |
| 294 | route("security/secret-scanning", "routes/repo/security-secrets.tsx"), | |
| 295 | route("security/secret-scanning/patterns", "routes/repo/security-patterns.tsx"), | |
| 296 | route("security/secret-scanning/:id", "routes/repo/security-secret.tsx"), | |
| 297 | route("security/code-scanning", "routes/repo/security-code.tsx"), | |
| 298 | route("security/code-scanning/setup", "routes/repo/security-code-setup.ts"), | |
| 299 | route("security/code-scanning/:number", "routes/repo/security-code-alert.tsx"), | |
| 300 | route("security/vulnerabilities", "routes/repo/security.tsx"), | |
| 301 | route("security/dependency-graph", "routes/repo/security-graph.tsx"), | |
| 302 | route("security/dependency-graph/sbom.json", "routes/repo/security-sbom.ts"), | |
| 303 | route("security/dependency-updates", "routes/repo/security-updates.tsx"), | |
| 304 | route("security/pulls/:number", "routes/repo/security-pull.tsx"), | |
| 305 | route("security/settings", "routes/repo/security-settings.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 306 | route("plans", "routes/repo/plans.tsx"), |
| 307 | route("plans/:id", "routes/repo/plan.tsx"), | |
| 308 | route("settings", "routes/repo/settings.tsx"), | |
| Projects: what a workspace builds and runs, first on every page | 309 | route("settings/repository", "routes/repo/settings-repository.tsx"), |
| Merge branch 'mirroring' into artifacts-mode | 310 | route("settings/mirroring", "routes/repo/settings-mirroring.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 311 | route("settings/access", "routes/repo/settings-access.tsx"), |
| Merge branch 'worktree-agent-a5a5de74d8863d554' into worktree-agent-a16631325aecf58ca | 312 | route("settings/keys", "routes/repo/settings-deploy-keys.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 313 | route("settings/branches", "routes/repo/settings-branches.tsx"), |
| Merge rulesets: branch and tag rules, agent-first, enforced on push and merge | 314 | route("settings/rules", "routes/repo/settings-rules.tsx"), |
| 315 | route("settings/rules/:id", "routes/repo/settings-ruleset.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 316 | route("settings/webhooks", "routes/repo/webhooks.tsx"), |
| 317 | route("settings/secrets", "routes/repo/secrets.tsx"), | |
| Merge branch 'worktree-agent-a3abfcce648e87dca' | 318 | route("settings/actions", "routes/repo/settings-actions.tsx"), |
| 319 | route("settings/environments", "routes/repo/settings-environments.tsx"), | |
| Fast pages, required checks on the branch, self-hosted runners, honest incidents | 320 | route("settings/runners", "routes/repo/settings-runners.tsx"), |
| Secrets and variables: one list, rows per environment, for workflows and deployments | 321 | route("settings/deployments", "routes/repo/settings-deployments.tsx"), |
| Agents and memory, checks and conflicts, profiles, slug renames, custom domains | 322 | route("settings/domains", "routes/repo/settings-domains.tsx"), |
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 323 | route("settings/guardrails", "routes/repo/settings-guardrails.tsx"), |
| 324 | route("settings/agents", "routes/repo/settings-agents.tsx"), | |
| A menu shaped by how g1t works, Soon pages for every promise, and sudo for sales | 325 | // What the project will have: one page for each Soon in its menu. |
| 326 | route("soon/:feature", "routes/repo/soon.tsx"), | |
| GitHub Actions on g1t, part three: .g1t/workflows, the pages, the docs | 327 | ]), |
| 328 | // Anything else: a 404 that still knows who is signed in. | |
| 329 | route("*", "routes/not-found.tsx"), | |
| 330 | ] satisfies RouteConfig; |
This file's history is long; its oldest lines are credited to the oldest commit read.