flagon-io/g1t

public

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t/apps/web/app/lib/changelog.ts

65 lines2,262 bytesCodeBlame

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 API1/**
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 */
6export 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
15export const CHANGELOG: ChangelogEntry[] = [
16 {
Catching up with main takes seconds when the two sides touched different files17 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 {
Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API24 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. */
62export 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}