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

58 lines1,958 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 {
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. */
55export 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}