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