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.
| Billing accounts, terms and enterprises; g1t is no longer free | 1 | import { type RouteConfig, index, route } from "@react-router/dev/routes"; |
| 2 | ||
| A menu shaped by how g1t works, Soon pages for every promise, and sudo for sales | 3 | import { soonItems } from "./lib/nav.ts"; |
| 4 | ||
| Billing accounts, terms and enterprises; g1t is no longer free | 5 | export default [ |
| A menu shaped by how g1t works, Soon pages for every promise, and sudo for sales | 6 | index("routes/overview.tsx"), |
| 7 | route("workspaces", "routes/workspaces.tsx"), | |
| Packages, with a container registry on g1t.sh; workspaces deleted whole and kept 30 days; Members for every member | 8 | route("workspaces/deleted", "routes/deleted-workspaces.tsx"), |
| Billing on Stripe's pages, month-end charges, warnings; sudo by workspace | 9 | route("workspaces/:slug", "routes/workspace.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 10 | route("users/:username", "routes/user.tsx"), |
| Billing on Stripe's pages, month-end charges, warnings; sudo by workspace | 11 | route("enterprises", "routes/enterprises.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 12 | route("invites", "routes/invites.tsx"), |
| Billing accounts, terms and enterprises; g1t is no longer free | 13 | route("enterprises/new", "routes/new-enterprise.tsx"), |
| Billing on Stripe's pages, month-end charges, warnings; sudo by workspace | 14 | route("enterprises/:id", "routes/enterprise.tsx"), |
| A menu shaped by how g1t works, Soon pages for every promise, and sudo for sales | 15 | route("reach-out", "routes/reach-out.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 16 | route("requests", "routes/requests.tsx"), |
| 17 | route("overages", "routes/overages.tsx"), | |
| 18 | route("velocity", "routes/velocity.tsx"), | |
| Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily | 19 | route("costs", "routes/costs.tsx"), |
| Costs: Cloudflare's subscriptions read from Cloudflare each day, the estimate only until then; sudo's costs split into Costs & margin and Bill & pricing | 20 | route("costs/bill", "routes/costs-bill.tsx"), |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 21 | route("abuse", "routes/abuse.tsx"), |
| sudo: Invoices, Audit log, and follow-ups due | 22 | route("invoices", "routes/invoices.tsx"), |
| Stripe webhooks, enterprise invoices, and sudo for both | 23 | route("stripe", "routes/stripe.tsx"), |
| sudo: Invoices, Audit log, and follow-ups due | 24 | route("audit", "routes/audit.tsx"), |
| Fast pages, required checks on the branch, self-hosted runners, honest incidents | 25 | route("timezone", "routes/timezone.tsx"), |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 26 | route("incidents", "routes/incidents.tsx"), |
| 27 | route("incidents/new", "routes/incident-new.tsx"), | |
| 28 | route("incidents/maintenance/new", "routes/maintenance-new.tsx"), | |
| 29 | route("incidents/maintenance/:id", "routes/maintenance.tsx"), | |
| 30 | route("incidents/:id", "routes/incident.tsx"), | |
| 31 | route("incidents/:id/postmortem", "routes/incident-postmortem.tsx"), | |
| A menu shaped by how g1t works, Soon pages for every promise, and sudo for sales | 32 | // What sudo will have: one placeholder page each, from lib/nav.ts. |
| 33 | ...soonItems().map((item) => route(item.to.slice(1), "routes/soon.tsx", { id: `soon${item.to.replace(/\//g, "-")}` })), | |
| Billing on Stripe's pages, month-end charges, warnings; sudo by workspace | 34 | // Before sudo was organised around workspaces, everything was an account. |
| 35 | route("accounts/*", "routes/legacy-accounts.tsx"), | |
| Billing accounts, terms and enterprises; g1t is no longer free | 36 | ] satisfies RouteConfig; |