g1t/apps/web/app/lib/changelog.ts
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.
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 1 | /** |
| 2 | * What is new on g1t, newest first, for the corner of mission control that | |
| 3 | * says so. Short and specific: what changed, and where to see it. Add an | |
| 4 | * entry in the same change that ships the feature. | |
| 5 | */ | |
| 6 | export type ChangelogEntry = { | |
| 7 | /** `YYYY-MM-DD`. */ | |
| 8 | date: string; | |
| 9 | title: string; | |
| 10 | about: string; | |
| 11 | /** Docs, or a page on g1t; `{workspace}` and `{project}` are filled in where known. */ | |
| 12 | href: string; | |
| 13 | }; | |
| 14 | ||
| 15 | export const CHANGELOG: ChangelogEntry[] = [ | |
| 16 | { | |
| Catching up with main takes seconds when the two sides touched different files | 17 | date: "2026-10-05", |
| Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put | 18 | title: "Browse public projects in the sidebar", |
| 19 | about: | |
| 20 | "Public projects, Explore, Search and profiles use the sidebar whether you are signed in or not. A page you cannot see says so plainly, the same for private and missing, with a way to sign in or switch account.", | |
| 21 | href: "https://docs.g1t.sh/guides/git/#browsing-without-an-account", | |
| 22 | }, | |
| 23 | { | |
| 24 | date: "2026-10-05", | |
| 25 | title: "The Team plan, and free open source", | |
| 26 | about: | |
| 27 | "Team is $20 a month per workspace, never per person, with $5 of usage credit, 50 GB of private storage and a year of audit log. Work on public repositories is paid by g1t's open-source pool first, trials renew monthly, and no card is charged under $5.", | |
| 28 | href: "/pricing", | |
| 29 | }, | |
| 30 | { | |
| 31 | date: "2026-10-05", | |
| Prices are what g1t pays plus 20%, from the first second | 32 | title: "Cost plus 20%, on everything", |
| 33 | about: | |
| 34 | "Sandbox time is charged at cost plus 20% from the first second, with no free minutes. Runs on your own model provider no longer carry a $0.10 fee: they pay only their sandbox time.", | |
| 35 | href: "/pricing", | |
| 36 | }, | |
| 37 | { | |
| 38 | date: "2026-10-05", | |
| Catching up with main takes seconds when the two sides touched different files | 39 | title: "Catch up in seconds", |
| 40 | about: | |
| 41 | "Catch up with main merges it in at once when the two changed different files. When they overlap, the merge box shows g1t-agent at work, step by step.", | |
| 42 | href: "https://docs.g1t.sh/guides/pull-requests/#catching-up", | |
| 43 | }, | |
| 44 | { | |
| Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API | 45 | date: "2026-10-04", |
| 46 | title: "Agents and memory", | |
| 47 | about: "Watch every agent run live, stop or message it, and see what agents learned about each project.", | |
| 48 | href: "/{workspace}/-/agents", | |
| 49 | }, | |
| 50 | { | |
| 51 | date: "2026-10-04", | |
| 52 | title: "Checks and conflicts", | |
| 53 | about: "Workflow statuses on every pull request, and conflicts found before you press merge.", | |
| 54 | href: "https://docs.g1t.sh/guides/pull-requests/", | |
| 55 | }, | |
| 56 | { | |
| 57 | date: "2026-10-04", | |
| 58 | title: "Profiles", | |
| 59 | about: "Your name, bio and everything you opened, in one place.", | |
| 60 | href: "/settings", | |
| 61 | }, | |
| 62 | { | |
| 63 | date: "2026-10-04", | |
| 64 | title: "Custom domains", | |
| 65 | about: "Serve production on your own domain, with its certificate handled for you.", | |
| 66 | href: "https://docs.g1t.sh/guides/deployments/", | |
| 67 | }, | |
| 68 | { | |
| 69 | date: "2026-10-04", | |
| 70 | title: "Rename a workspace", | |
| 71 | about: "Old addresses redirect for 90 days, so links and clones keep working.", | |
| 72 | href: "/{workspace}/-/settings", | |
| 73 | }, | |
| 74 | { | |
| 75 | date: "2026-10-04", | |
| 76 | title: "Workspace names and icons", | |
| 77 | about: "Give a workspace a display name and an icon of its own.", | |
| 78 | href: "/{workspace}/-/settings", | |
| 79 | }, | |
| 80 | ]; | |
| 81 | ||
| 82 | /** An entry's link, with the workspace filled in; null when it needs one and there is none. */ | |
| 83 | export function changelogHref(entry: ChangelogEntry, workspace: string | null): string | null { | |
| 84 | if (!entry.href.includes("{workspace}")) return entry.href; | |
| 85 | return workspace ? entry.href.replaceAll("{workspace}", workspace) : null; | |
| 86 | } |