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 | { | |
| 17 | date: "2026-10-04", | |
| 18 | title: "Agents and memory", | |
| 19 | about: "Watch every agent run live, stop or message it, and see what agents learned about each project.", | |
| 20 | href: "/{workspace}/-/agents", | |
| 21 | }, | |
| 22 | { | |
| 23 | date: "2026-10-04", | |
| 24 | title: "Checks and conflicts", | |
| 25 | about: "Workflow statuses on every pull request, and conflicts found before you press merge.", | |
| 26 | href: "https://docs.g1t.sh/guides/pull-requests/", | |
| 27 | }, | |
| 28 | { | |
| 29 | date: "2026-10-04", | |
| 30 | title: "Profiles", | |
| 31 | about: "Your name, bio and everything you opened, in one place.", | |
| 32 | href: "/settings", | |
| 33 | }, | |
| 34 | { | |
| 35 | date: "2026-10-04", | |
| 36 | title: "Custom domains", | |
| 37 | about: "Serve production on your own domain, with its certificate handled for you.", | |
| 38 | href: "https://docs.g1t.sh/guides/deployments/", | |
| 39 | }, | |
| 40 | { | |
| 41 | date: "2026-10-04", | |
| 42 | title: "Rename a workspace", | |
| 43 | about: "Old addresses redirect for 90 days, so links and clones keep working.", | |
| 44 | href: "/{workspace}/-/settings", | |
| 45 | }, | |
| 46 | { | |
| 47 | date: "2026-10-04", | |
| 48 | title: "Workspace names and icons", | |
| 49 | about: "Give a workspace a display name and an icon of its own.", | |
| 50 | href: "/{workspace}/-/settings", | |
| 51 | }, | |
| 52 | ]; | |
| 53 | ||
| 54 | /** An entry's link, with the workspace filled in; null when it needs one and there is none. */ | |
| 55 | export function changelogHref(entry: ChangelogEntry, workspace: string | null): string | null { | |
| 56 | if (!entry.href.includes("{workspace}")) return entry.href; | |
| 57 | return workspace ? entry.href.replaceAll("{workspace}", workspace) : null; | |
| 58 | } |