Skip to content

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.sh
3,278 linesCodeBlameRaw

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.

Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1import {
2 Activity,
3 BarChart3,
4 Building2,
5 MessagesSquare,
6 Bell,
7 BookMarked,
8 BookOpen,
9 Bookmark,
10 Blocks,
11 Bot,
12 Box,
13 Check,
14 ChevronDown,
15 ChevronLeft,
16 ChevronRight,
17 CircleDot,
18 GripVertical,
19 CircleUserRound,
20 Code2,
21 Coins,
22 Compass,
23 CreditCard,
24 Fingerprint,
25 GanttChart,
26 Gauge,
27 GitBranch,
28 GitPullRequest,
29 Globe,
30 History,
31 KanbanSquare,
32 Keyboard,
33 KeyRound,
34 Layers,
35 LayoutDashboard,
36 LayoutGrid,
37 LifeBuoy,
38 ListTree,
39 Lock,
40 LogOut,
41 Mail,
42 MonitorDown,
43 Network,
44 Package,
45 PlayCircle,
46 Plug,
47 Plus,
48 Rocket,
49 Search,
50 ServerCog,
51 Settings,
52 Shapes,
53 Shield,
54 ShieldCheck,
55 Scale,
56 Smile,
57 Sparkles,
Merge branch 'worktree-agent-a432a6fe93007b723' into customize58 SlidersHorizontal,
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.59 House,
60 Ticket,
61 TrendingUp,
62 UserRoundKey,
63 Users,
64 UsersRound,
65 Webhook,
66 X,
67 ArrowLeftRight,
68} from "lucide-react";
69import {
70 Fragment,
71 type ReactNode,
72 useCallback,
73 useEffect,
74 useMemo,
75 useRef,
76 useState,
77} from "react";
78import {
79 Link,
80 useFetcher,
81 useLocation,
82 useNavigation,
83 useRouteLoaderData,
84 useSubmit,
85} from "react-router";
Plan: the inbox, then channels and apps, instead of discussions86
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.87import {
88 type Abilities,
89 type ChatSidebarEntry,
90 type InboxCounts,
91 type WorkspaceAgent,
92 type Membership,
93 type RepoMirror,
94 type Spike,
95 type User,
96 hasCodeAccess,
97 mayCreateTeams,
98 shownUsername,
99} from "@g1t/contracts";
Plan: the inbox, then channels and apps, instead of discussions100
Not found and error pages have one main landmark: their own when signed out, the shell's when signed in101import { InMain } from "./landmark";
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.102import {
103 CommandPalette,
104 type PaletteCommand,
105 PaletteKey,
106 usePaletteShortcut,
107} from "./command-palette";
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.108import { NotificationsBell } from "./inbox";
preparing for cloud work109import { useDesktopApp } from "../lib/notify-client";
The Spend page says what a workspace spent, where it went and the budgets that hold it, in Workspace under Money: spent at price, agents' spend and the spend limit; by day; by agent, person, channel, model, kind of work and product; budgets from the workspace down to each person, agent and task, with what happens at 100%; the costliest tasks, each with a receipt of every session at the provider's price and what was charged; and how it's priced. Everyone sees what agents spent for them, and owners and billing managers the whole workspace; each person can have a monthly budget agents keep to, and the spend pill in the top bar shows your month or the workspace's against its limit. The spend guide says how.110import { SpendPill } from "./spend";
Previews build from any branch; Agent in place of Ask AI; pin from the sidebar111import { PinButton } from "./pin-button";
Merge branch 'worktree-agent-ae1299e92e4462012'112import { Hint } from "./ui/hint";
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.113import {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.114 Collapsible,
115 CollapsibleContent,
116 CollapsibleTrigger,
117} from "./ui/collapsible";
118import {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.119 Sidebar,
120 SidebarGroup,
121 SidebarGroupAction,
122 SidebarGroupContent,
123 SidebarGroupLabel,
124 SidebarHeader,
125 SidebarMenu,
126 SidebarMenuBadge,
127 SidebarMenuButton,
128 SidebarMenuItem,
129 SidebarMobile,
130 SidebarProvider,
131 SidebarSeparator,
132 SidebarTrigger,
133} from "./ui/sidebar";
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas134import { StatusDot, useSiteStatus } from "./footer";
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.135import { Logo, MarkGlyph } from "./logo";
The site is built from its shared components: one Button with its variants and sizes, one Badge, Card for every panel, Alert for notices, Kbd for keys, Table for the security tables, and Avatar, Command, Progress, ScrollArea, ToggleGroup, Collapsible and Accordion in the kit; raw buttons, hand-drawn cards and pills and per-file button class lists are gone, outline buttons stand the same height as filled ones, and the phone's Ask g1t loses its tile. Every page was compared pixel by pixel before and after.136import { SoonPill } from "./ui";
137import { Avatar } from "./ui/avatar";
Fast pages, required checks on the branch, self-hosted runners, honest incidents138import { Skeleton } from "./ui/skeleton";
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.139import { Button } from "./ui/button";
140import { Separator } from "./ui/separator";
Plan: the inbox, then channels and apps, instead of discussions141import {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.142 Breadcrumb,
143 BreadcrumbItem,
144 BreadcrumbLink,
145 BreadcrumbList,
146 BreadcrumbPage,
147 BreadcrumbSeparator,
148} from "./ui/breadcrumb";
149import {
Plan: the inbox, then channels and apps, instead of discussions150 DropdownMenu,
151 DropdownMenuContent,
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas152 DropdownMenuGroup,
Plan: the inbox, then channels and apps, instead of discussions153 DropdownMenuItem,
154 DropdownMenuLabel,
155 DropdownMenuSeparator,
156 DropdownMenuTrigger,
157} from "./ui/dropdown-menu";
Merge branch 'worktree-agent-ad7c6d88d93adc817'158import { type RoadmapItem, roadmapIn, roadmapItem } from "../lib/roadmap";
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.159import {
160 type ModeKey,
161 WORKSPACE_SETTINGS_GROUPS,
162 type WorkspaceSettingsPage,
163 homePagePath,
164 modeOf,
165 workspaceSettingsPage,
166} from "../lib/workspace-nav";
Chat and workspace agents: channels, DMs and named agents you talk to167import { AgentsSidebar } from "./agents-mode";
168import { ChatSidebar } from "./chat/sidebar";
Artifacts is a mode in the rail, the shell and the phone's tab bar in place of Docs: its home lists everything you can open by day or as cards under All, Yours and Shared with you, with search, filters and tiles to start a doc (slides, designs and dashboards say they are coming soon), and its sidebar holds favorites, spaces, Private, Shared, projects' docs and the trash.169import { FoliosSidebar } from "./folios/sidebar";
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.170import {
171 Rail,
172 ShortcutsDialog,
173 WorkspaceSwitcher,
174 sidebarKeyLabel,
175} from "./rail";
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.176import { BottomBar, isConversation, useVisualViewport } from "./mobile";
Chat and workspace agents: channels, DMs and named agents you talk to177import { useChatSidebar } from "./chat/actions";
178import { unreadTotals } from "../lib/chat";
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.179import {
180 SETTINGS_CAPABILITY,
181 type ViewerAccess,
182 seesSettings,
183} from "../lib/access";
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.184import { projectPages } from "../lib/chrome";
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.185import {
186 ACCOUNT_SETTINGS,
187 type AccountSettingsPage,
188 FIRST_SETTINGS_PAGE,
189 accountSettingsPage,
190} from "../lib/account-settings";
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.191import { type PinnableApp, sidebarCookie } from "../lib/apps";
192import { REASON_FILTERS, inboxReason, inboxView } from "../lib/inbox";
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas193import { GithubMark } from "./github";
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.194import { useInviteOnly } from "../lib/registration";
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas195import { STATUS_URL, statusTitle } from "../lib/status";
Navigation: the workspace's own page with tabs, pins and recent in the sidebar196import { type ShortcutProject, movedPin, recentWith } from "../lib/pins";
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas197import type { AccountMenuData } from "../routes/settings-menu-json";
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)198import { useLiveBadges } from "../lib/notify-client";
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers199import { OwnPresenceDot, OwnPresenceItems, StatusDialog } from "./presence";
You choose how g1t looks: Auto follows your system, Light and Dark stay put, set from the account menu, the phone's You and help sheet, Settings → Account or the command palette; the page is drawn in your choice from the first byte, every colour has a light value that reads at 4.5:1 or better, code and diffs are highlighted for both, diagrams and the document editor follow along, the product tour and the g1t mark's avatar stay dark, and Dark is what you see until you choose; the workspaces guide says how.200import { THEME_COMMANDS, ThemeMenuSwitch } from "./theme-switch";
Plan: the inbox, then channels and apps, instead of discussions201
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put202/**
203 * What the sidebar needs, worked out by the root loader. For a visitor who
204 * is not signed in there is no workspace, no projects and no usage: only
205 * the project being looked at, if they can see it.
206 */
Plan: the inbox, then channels and apps, instead of discussions207export type ShellData = {
208 /** The workspace the sidebar is about: the one being looked at, or their first. */
209 workspace: Membership | null;
Navigation: the workspace's own page with tabs, pins and recent in the sidebar210 /** All its projects, by name, for the palette: `name` is the slug in their address. */
211 repos: ShortcutProject[];
212 /** The person's pinned projects in it, in their order (lib/pins.ts). */
213 pinned?: ShortcutProject[];
214 /** What they opened there last, latest first, leaving out the pinned. */
215 recent?: ShortcutProject[];
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look216 /** Repositories shared with them in workspaces they do not belong to. */
217 shared?: { namespace: string; name: string; isPrivate: boolean }[];
Plan: the inbox, then channels and apps, instead of discussions218 /** The project being looked at, if any, whoever owns it. */
219 repo: {
220 namespace: string;
221 name: string;
222 member: boolean;
223 issues: number;
224 pulls: number;
225 } | null;
226 /** Where the workspace stands against its usage limit, if billing is on. */
227 limit: {
228 exposureMicros: number;
229 ceilingMicros: number | null;
230 state: "ok" | "warning" | "stopped";
231 comped: boolean;
232 } | null;
233 /** Whether g1t charges nothing for now, while it is being built out. */
234 free?: boolean;
235 /** What its agents have cost since the start of the month. */
236 /** This month's usage: charged, or at cost while g1t is free. */
237 monthUsageMicros: number | null;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look238 /** Whether new compute is paused (a spend spike or a hold), and whether the viewer can answer it. */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.239 compute?: {
240 paused: string | null;
241 spike: Spike | null;
242 owner: boolean;
243 } | null;
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.244 /** What is unread in their notifications, for the rail and the bell. Absent for a visitor. */
Inbox: a bell in the top bar opens it beside the page, and /inbox holds it all245 inbox?: InboxCounts | null;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)246 /**
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.247 * Chat, for the rail's badge: what is unread, and the
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)248 * starred and latest conversations. Null when chat did not answer in time.
249 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.250 chat?: {
251 unread: number;
252 mentions: number;
253 starred?: ChatSidebarEntry[];
254 recent?: ChatSidebarEntry[];
255 } | null;
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.256 /** The workspace's agents, g1t first, for the Agents sidebar; null when not known. */
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)257 agents?: ShellAgent[] | null;
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.258 /** The apps this person pinned to their rail in the workspace (lib/apps.ts). */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.259 pins?: PinnableApp[];
Plan: the inbox, then channels and apps, instead of discussions260};
261
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)262/** An agent as the shell lists it. */
263export type ShellAgent = Pick<
264 WorkspaceAgent,
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.265 | "id"
266 | "handle"
267 | "display_name"
268 | "avatar"
269 | "avatar_seed"
270 | "role"
271 | "status"
272 | "title"
273 | "builtin"
An agent is on teams the way a person is: through team membership, with no team or department of its own. Add it to teams when you create it, from its profile or from the team's page; the Agents sidebar groups agents by the teams they're on, with those on none last; what an agent is told about its teammates, team budgets, skills reach, Spend's By team and the People pages all read memberships. Agents with an old team name matching a team are moved onto it once; the rest are left off a team. Templates name a role only. The agents, teams and people guides say how.274> & {
Agents have faces, and are never mistaken for people. Every agent wears a little bot face drawn from a look it owns, shape, colour, eyes, mouth, antenna, accessory and pattern, chosen in its builder and on its Profile tab with a live preview, Shuffle and a way back to the face its seed gives it; the face blinks on its own time, breathes, narrows its eyes while the agent works, shuts them asleep and bounces when it finishes, all of it still for anyone who asked for less motion. Wherever an agent shows, in chat, in a list, on a mention, on a review or a commit, its avatar carries an agent marker, and the people reading it are told so. In Chat, direct messages are two lists: People, and Agents, which also holds the agents you haven't talked to yet; a conversation with both a person and an agent in it is marked in the list, named in the conversation's header, spelled out by the composer and explained once the first time it opens. Agents keep their look in the agents service, which every service passes along. The chat and agents guides say so, and CONTRIBUTING makes the shared avatar the only way to draw an agent.275 look?: WorkspaceAgent["look"];
An agent is on teams the way a person is: through team membership, with no team or department of its own. Add it to teams when you create it, from its profile or from the team's page; the Agents sidebar groups agents by the teams they're on, with those on none last; what an agent is told about its teammates, team budgets, skills reach, Spend's By team and the People pages all read memberships. Agents with an old team name matching a team are moved onto it once; the rest are left off a team. Templates name a role only. The agents, teams and people guides say how.276 scope?: WorkspaceAgent["scope"];
277 /** The visible teams it is on (team memberships); absent when they couldn't be read. */
278 teams?: { slug: string; name: string }[];
279};
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)280
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.281/** Whether `pathname` is `to` or a page under it (`end`: only `to` itself), the query left aside. */
282function under(pathname: string, to: string, end = false): boolean {
283 const path = to.split("?")[0]!;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.284 return (
285 pathname === path ||
286 (!end && pathname.startsWith(path.endsWith("/") ? path : `${path}/`))
287 );
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.288}
289
290/**
291 * Where a row is current and where it is on its way to. A row's page is
292 * current under its own address and any `also` prefix, unless the list
293 * says itself (`current`). Rows that differ by query alone (Notifications'
294 * views and reasons) are pending only when the page on its way is that
295 * row's, query and all.
296 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.297function useRowState(
298 to: string,
299 {
300 end,
301 also,
302 current: lit,
303 }: { end?: boolean; also?: string | string[]; current?: boolean },
304) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.305 const { pathname } = useLocation();
306 const going = useNavigation().location;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.307 const current =
308 lit ??
309 (under(pathname, to, end) ||
310 [also ?? []].flat().some((prefix) => under(pathname, prefix)));
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.311 const pending =
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.312 going != null &&
313 !current &&
314 (lit === undefined
315 ? under(going.pathname, to, end)
316 : `${going.pathname}${going.search}` === to);
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.317 return { current, pending };
318}
319
320/**
321 * One row of a mode's sidebar: an icon, its words, how many it lists
322 * (`count`) and, for a row that opens a list of its own (`drill`), a
323 * chevron, always or on hover.
324 */
Plan: the inbox, then channels and apps, instead of discussions325function SidebarLink({
326 to,
327 icon,
328 end,
329 count,
330 also,
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look331 drill,
Merge branch 'worktree-agent-ad7c6d88d93adc817'332 current: lit,
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.333 action,
334 bare = false,
Plan: the inbox, then channels and apps, instead of discussions335 children,
336}: {
337 to: string;
338 icon: ReactNode;
339 end?: boolean;
340 count?: number;
341 /** Other path prefixes under which this link is the current one. */
342 also?: string | string[];
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look343 /** It opens a list of its own: a chevron says so, always or on hover. */
344 drill?: boolean | "hover";
Merge branch 'worktree-agent-ad7c6d88d93adc817'345 /** Whether it is the current row, when the list works that out itself. */
346 current?: boolean;
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.347 /** A small button at the row's end, beside the words (a pin). */
348 action?: ReactNode;
349 /** The row alone, for a list item that is drawn by the list (a pinned project, which drags). */
350 bare?: boolean;
Plan: the inbox, then channels and apps, instead of discussions351 children: ReactNode;
352}) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.353 const { current, pending } = useRowState(to, { end, also, current: lit });
354 const Item = bare ? Fragment : SidebarMenuItem;
Plan: the inbox, then channels and apps, instead of discussions355 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.356 <Item>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.357 <SidebarMenuButton
358 asChild
359 isActive={current}
360 isPending={pending}
361 className={action ? "pr-7" : undefined}
362 >
363 <Link
364 to={to}
365 prefetch="intent"
366 aria-current={current ? "page" : undefined}
367 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.368 {icon}
369 <span className="min-w-0 grow truncate">{children}</span>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.370 {count != null && count > 0 && (
371 <SidebarMenuBadge>{count}</SidebarMenuBadge>
372 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.373 {drill && (
374 <ChevronRight
375 aria-hidden="true"
376 className={`-mr-0.5 size-3.5! shrink-0 text-faint transition-opacity ${drill === "hover" ? "opacity-0 group-hover/menu-button:opacity-100 group-focus-visible/menu-button:opacity-100" : ""}`}
377 />
378 )}
379 </Link>
380 </SidebarMenuButton>
381 {action}
382 </Item>
Plan: the inbox, then channels and apps, instead of discussions383 );
384}
385
386/**
387 * Something a project will have, shown where it will live so people can
388 * see where g1t is going. Not a link: nothing is behind it yet.
389 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.390function SidebarSoon({
391 icon,
392 children,
393 about,
394}: {
395 icon: ReactNode;
396 children: ReactNode;
397 about: string;
398}) {
Plan: the inbox, then channels and apps, instead of discussions399 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.400 <SidebarMenuItem>
401 <Hint label={about} side="right">
402 <SidebarMenuButton asChild variant="faint">
403 <div aria-disabled="true" className="cursor-default">
404 {icon}
405 <span className="min-w-0 grow truncate">{children}</span>
406 <span className="sr-only">{about}</span>
407 <SoonPill />
408 </div>
409 </SidebarMenuButton>
410 </Hint>
411 </SidebarMenuItem>
Plan: the inbox, then channels and apps, instead of discussions412 );
413}
414
415/**
416 * A page that is coming, as a link to its roadmap page: faint, with Soon,
417 * and marked current on any of its section's Soon pages.
418 */
419function SidebarSoonLink({
420 to,
421 also,
422 icon,
423 about,
Merge branch 'worktree-agent-ad7c6d88d93adc817'424 current: lit,
Plan: the inbox, then channels and apps, instead of discussions425 children,
426}: {
427 to: string;
428 also?: string[];
429 icon: ReactNode;
430 about: string;
Merge branch 'worktree-agent-ad7c6d88d93adc817'431 /** Whether it is the current row, when the list works that out itself. */
432 current?: boolean;
Plan: the inbox, then channels and apps, instead of discussions433 children: ReactNode;
434}) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.435 const { current, pending } = useRowState(to, { also, current: lit });
Plan: the inbox, then channels and apps, instead of discussions436 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.437 <SidebarMenuItem>
438 <Hint label={about} side="right">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.439 <SidebarMenuButton
440 asChild
441 variant="faint"
442 isActive={current}
443 isPending={pending}
444 >
445 <Link
446 to={to}
447 prefetch="intent"
448 aria-current={current ? "page" : undefined}
449 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.450 {icon}
451 <span className="min-w-0 grow truncate">{children}</span>
452 <SoonPill />
453 </Link>
454 </SidebarMenuButton>
455 </Hint>
456 </SidebarMenuItem>
Plan: the inbox, then channels and apps, instead of discussions457 );
458}
459
460/** Icons for what spans projects. */
461const WORKSPACE_ICONS: Record<string, ReactNode> = {
462 board: <KanbanSquare size={15} />,
463 roadmap: <GanttChart size={15} />,
Packages, with a container registry on g1t.sh; workspaces deleted whole and kept 30 days; Members for every member464 teams: <UsersRound size={15} />,
Plan: the inbox, then channels and apps, instead of discussions465 packages: <Package size={15} />,
466 fleet: <Bot size={15} />,
467};
468
469/** The Soon pages of a section, as paths, so its link is current on them. */
470function soonPaths(base: string, section: RoadmapItem["section"]): string[] {
471 return roadmapIn(section).map((item) => `${base}/soon/${item.key}`);
472}
473
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.474/** A titled group of rows: its name in small capitals, what it makes at the end, and its menu. */
475function NavGroup({
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look476 title,
477 action,
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.478 className,
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look479 children,
480}: {
481 title: string;
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)482 /** A small button at the label's end, in its row: what the group makes (a `SidebarGroupAction` with `relative top-auto right-auto`). */
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look483 action?: ReactNode;
484 className?: string;
485 children: ReactNode;
486}) {
Plan: the inbox, then channels and apps, instead of discussions487 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.488 <SidebarGroup className={className}>
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)489 <div className="flex items-center justify-between gap-2 pr-1">
490 <SidebarGroupLabel asChild>
491 <h2>{title}</h2>
492 </SidebarGroupLabel>
493 {action}
494 </div>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.495 <SidebarGroupContent>
496 <SidebarMenu>{children}</SidebarMenu>
497 </SidebarGroupContent>
498 </SidebarGroup>
Plan: the inbox, then channels and apps, instead of discussions499 );
500}
501
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.502/** Rows with no name over them: the first of a list, or a run between rules. */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.503function NavRows({
504 className,
505 children,
506}: {
507 className?: string;
508 children: ReactNode;
509}) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.510 return (
511 <SidebarGroup className={className}>
512 <SidebarGroupContent>
513 <SidebarMenu>{children}</SidebarMenu>
514 </SidebarGroupContent>
515 </SidebarGroup>
516 );
517}
518
Plan: the inbox, then channels and apps, instead of discussions519/** What a workspace is called where people read it: its display name, else its slug. */
520function displayName(membership: Membership): string {
521 return membership.name?.trim() || membership.slug;
522}
523
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas524/**
525 * The fine print, as one quiet row at the foot of the account menu and the
526 * visitor's panel: each link a full-height target, left-aligned. In the
527 * menu each is a menu item, so the arrow keys reach it.
528 */
529const LEGAL_LINKS: [string, string][] = [
530 ["Policies", "/policies"],
531 ["Privacy", "/policies/privacy"],
532 ["Security", "/security"],
533];
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.534const LEGAL_LINK =
535 "flex h-7 items-center rounded px-1.5 text-xs text-faint outline-none transition-colors";
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas536
537function MenuLegalRow() {
538 return (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.539 <div
540 role="group"
541 aria-label="Legal"
542 className="flex items-center gap-0.5 px-0.5 pt-0.5"
543 >
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas544 {LEGAL_LINKS.map(([label, to], index) => (
545 <span key={to} className="flex items-center gap-0.5">
546 {index > 0 && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.547 <span
548 aria-hidden="true"
549 className="text-[0.625rem] text-line-strong"
550 >
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas551 ·
552 </span>
553 )}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.554 <DropdownMenuItem
555 asChild
556 className={`${LEGAL_LINK} py-0 data-highlighted:bg-line data-highlighted:text-fg`}
557 >
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas558 <Link to={to}>{label}</Link>
559 </DropdownMenuItem>
560 </span>
561 ))}
562 </div>
563 );
564}
565
566/** Status's row: the live dot and two or three words, fetched when the menu opens. */
567function StatusSummary({ open }: { open: boolean }) {
568 const status = useSiteStatus(open);
569 const words = statusTitle(status);
570 return (
571 <span className="ml-auto flex min-w-0 items-center gap-1.5 pl-2 text-xs text-faint">
572 {/* The words say it; the dot's own words for screen readers would repeat them. */}
573 <span aria-hidden="true" className="flex">
574 <StatusDot state={status?.overall.state ?? null} />
575 </span>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.576 {words ? (
577 <span className="truncate">{words}</span>
578 ) : (
579 <Skeleton className="h-3 w-20" />
580 )}
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas581 </span>
582 );
583}
584
585/** A menu row: an icon, words, and whatever sits at its end. */
586const MENU_ROW = "h-9 gap-2.5 px-2.5 text-[0.8125rem]";
587
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.588/**
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.589 * Your account, at the foot of the rail (or in the header, before you have
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.590 * a workspace): who you are and your status, your profile and settings,
591 * and help: the documentation, support, status and the keyboard's
592 * shortcuts; then signing out and the fine print.
593 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.594function AccountMenu({
595 user,
596 side = "right",
597}: {
598 user: User;
599 side?: "right" | "bottom";
600}) {
Plan: the inbox, then channels and apps, instead of discussions601 const submit = useSubmit();
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas602 const [open, setOpen] = useState(false);
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.603 const [keys, setKeys] = useState(false);
preparing for cloud work604 // Inside the desktop app there is nothing to get.
605 const inApp = useDesktopApp();
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers606 // Your status's dialog: outside the menu, so the menu closes behind it.
607 const [editing, setEditing] = useState(false);
Fast pages, required checks on the branch, self-hosted runners, honest incidents608 // Name, primary address and invites left: asked for once, as soon as the
609 // pointer or focus reaches the button, so they are there when it opens.
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas610 const details = useFetcher<AccountMenuData | null>({ key: "account-menu" });
Fast pages, required checks on the branch, self-hosted runners, honest incidents611 const prefetch = () => {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.612 if (details.state === "idle" && details.data === undefined)
613 details.load("/settings/menu.json");
Fast pages, required checks on the branch, self-hosted runners, honest incidents614 };
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas615 useEffect(() => {
Fast pages, required checks on the branch, self-hosted runners, honest incidents616 if (open) prefetch();
617 // eslint-disable-next-line react-hooks/exhaustive-deps
618 }, [open]);
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas619 const me = details.data ?? null;
Fast pages, required checks on the branch, self-hosted runners, honest incidents620 // Still on its way: shapes where the words will be, the same size.
621 const loading = details.data === undefined && details.state !== "idle";
Merge two kinds of invite, kept apart: an invite to g1t (Settings, invite-only only, no workspace unless asked) and an invitation to a workspace (its People page)622 // While anyone can sign up, listed once the data says there are invites to look back on.
623 const invitesListed = useInviteOnly() || me?.invites_page === true;
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas624 const profile = `/u/${user.username}`;
Plan: the inbox, then channels and apps, instead of discussions625 return (
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers626 <>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.627 <DropdownMenu open={open} onOpenChange={setOpen}>
628 {/* The avatar alone, with a dot that says how others see you (components/presence.tsx). */}
629 <Hint
630 label={side === "right" ? "Your account" : undefined}
631 side="right"
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.632 >
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.633 <DropdownMenuTrigger
634 aria-label={`Account menu for ${shownUsername(user)}`}
635 onPointerEnter={prefetch}
636 onFocus={prefetch}
637 className={
638 side === "right"
639 ? // At the foot of the rail: a 40px rounded square, as the rail's icons are.
640 "relative flex size-10 items-center justify-center rounded-[10px] outline-none transition-colors hover:bg-sidebar-accent focus-visible:ring-2 focus-visible:ring-accent data-[state=open]:bg-sidebar-accent"
641 : "relative flex rounded-full outline-none transition-transform hover:scale-[1.04] focus-visible:ring-2 focus-visible:ring-accent data-[state=open]:ring-2 data-[state=open]:ring-line-strong"
642 }
643 >
644 <Avatar
645 name={user.username}
646 image={user.avatar}
647 size={side === "right" ? 40 : 28}
648 square={side === "right"}
649 />
650 <OwnPresenceDot
651 ring={side === "right" ? "var(--color-rail)" : "var(--color-bg)"}
652 className={
653 side === "right"
654 ? "absolute -right-1 -bottom-1"
655 : "absolute -right-0.5 -bottom-0.5"
656 }
657 />
658 </DropdownMenuTrigger>
659 </Hint>
660 <DropdownMenuContent
661 align="end"
662 side={side}
663 sideOffset={side === "right" ? 14 : 6}
664 collisionPadding={8}
665 className="w-70 p-1.5"
666 >
667 {/* Who is signed in, and a way to their profile. */}
668 <DropdownMenuItem asChild className="gap-3 px-2 py-2">
669 <Link
670 to={profile}
671 aria-label={`${me?.name ?? shownUsername(user)} (@${shownUsername(user)}), your profile`}
672 >
673 <Avatar name={user.username} image={user.avatar} size={36} />
674 <span
675 className="flex min-w-0 grow flex-col leading-tight"
676 aria-busy={loading}
677 >
678 {loading ? (
679 <Skeleton className="my-0.75 h-3.5 w-28" />
680 ) : (
681 <span className="truncate text-sm font-medium text-fg">
682 {me?.name ?? shownUsername(user)}
683 </span>
684 )}
685 <span className="truncate font-mono text-xs text-muted">
686 @{shownUsername(user)}
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas687 </span>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.688 {loading ? (
689 <Skeleton className="mt-1 h-3 w-40" />
690 ) : (
691 me?.email && (
692 <span className="mt-0.5 truncate text-xs text-faint">
693 {me.email}
694 </span>
695 )
696 )}
697 </span>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas698 </Link>
699 </DropdownMenuItem>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.700 <DropdownMenuSeparator className="my-1.5" />
701 {/* Your status, away, and pausing notifications. */}
702 <DropdownMenuGroup>
703 <OwnPresenceItems
704 className="min-h-9 py-1.5 text-[0.8125rem]"
705 onEdit={() => setEditing(true)}
706 />
707 </DropdownMenuGroup>
708 <DropdownMenuSeparator className="my-1.5" />
709 <DropdownMenuGroup>
710 <DropdownMenuItem asChild className={MENU_ROW}>
711 <Link to={profile}>
712 <CircleUserRound />
713 Your profile
714 </Link>
715 </DropdownMenuItem>
716 <DropdownMenuItem asChild className={MENU_ROW}>
717 <Link to={FIRST_SETTINGS_PAGE}>
718 <Settings />
719 Your settings
720 </Link>
721 </DropdownMenuItem>
722 {invitesListed && (
723 <DropdownMenuItem asChild className={MENU_ROW}>
724 <Link to="/settings/invites">
725 <Ticket />
726 {ACCOUNT_SETTINGS.invites.title}
727 {loading && (
728 <Skeleton className="ml-auto h-4 w-12 rounded-full" />
729 )}
730 {me?.invites_left != null && (
731 <span className="ml-auto rounded-full bg-line px-1.5 text-[0.6875rem] tabular-nums text-muted">
732 {me.invites_left} left
733 </span>
734 )}
735 </Link>
736 </DropdownMenuItem>
737 )}
738 </DropdownMenuGroup>
739 <DropdownMenuSeparator className="my-1.5" />
740 {/* Auto, Light or Dark, switched in place (lib/theme.ts). */}
741 <ThemeMenuSwitch />
742 <DropdownMenuSeparator className="my-1.5" />
743 <DropdownMenuGroup>
744 <DropdownMenuItem asChild className={MENU_ROW}>
745 <a href="https://docs.g1t.sh/">
746 <BookOpen />
747 Documentation
748 </a>
749 </DropdownMenuItem>
preparing for cloud work750 <DropdownMenuItem asChild className={MENU_ROW}>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.751 <Link to="/support">
752 <LifeBuoy />
753 Support
preparing for cloud work754 </Link>
755 </DropdownMenuItem>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.756 <DropdownMenuItem asChild className={MENU_ROW}>
757 <a href={STATUS_URL}>
758 <Activity />
759 Status
760 <StatusSummary open={open} />
761 </a>
762 </DropdownMenuItem>
763 <DropdownMenuItem
764 className={MENU_ROW}
765 onSelect={() => setKeys(true)}
766 >
767 <Keyboard />
768 Keyboard shortcuts
769 <PaletteKey className="ml-auto font-sans text-xs text-faint" />
770 </DropdownMenuItem>
771 {!inApp && (
772 <DropdownMenuItem asChild className={MENU_ROW}>
773 <Link to="/download">
774 <MonitorDown />
775 Get the desktop app
776 </Link>
777 </DropdownMenuItem>
778 )}
779 </DropdownMenuGroup>
780 <DropdownMenuSeparator className="my-1.5" />
781 {/* Submitted from here: the menu closes on select, and a button
Plan: the inbox, then channels and apps, instead of discussions782 that has left the page cannot submit a form. */}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.783 <DropdownMenuItem
784 className={MENU_ROW}
785 onSelect={() => submit(null, { method: "post", action: "/logout" })}
786 >
787 <LogOut />
788 Sign out
789 </DropdownMenuItem>
790 <DropdownMenuSeparator className="my-1.5" />
791 <MenuLegalRow />
792 </DropdownMenuContent>
793 </DropdownMenu>
794 <StatusDialog open={editing} onOpenChange={setEditing} />
795 <ShortcutsDialog open={keys} onOpenChange={setKeys} />
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers796 </>
Plan: the inbox, then channels and apps, instead of discussions797 );
798}
799
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look800/** A project's settings pages, which the project's menu drills into. */
Project settings move into the sidebar, grouped, with a heading per page801const REPO_SETTINGS_PAGE = /^\/([^/]+)\/([^/-][^/]*)\/settings(\/|$)/;
Plan: the inbox, then channels and apps, instead of discussions802
803/**
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look804 * The sidebar's lists are a stack, the way a phone pushes a screen: one
805 * drilled into slides in from the right over the full width, while the one
806 * it covers drifts a quarter of the way left and fades, both on one long
Plan: the inbox, then channels and apps, instead of discussions807 * ease-out, the fade quicker than the move so the two never blur together.
808 * Going back reverses it.
809 */
810const LAYER =
811 "absolute inset-0 [transition:translate_380ms_cubic-bezier(0.32,0.72,0,1),opacity_220ms_ease-out] will-change-[translate,opacity] motion-reduce:transition-none";
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look812/** One list, filling its layer. */
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.813const PANEL = "h-full overflow-y-auto px-1 pt-1 pb-4 [scrollbar-width:thin]";
Plan: the inbox, then channels and apps, instead of discussions814
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look815/** One list in the stack: what it is, and its rows. */
816type Level = { key: string; node: ReactNode };
817
818/** True once the page has hydrated, so what the server drew never animates in. */
819function useHydrated(): boolean {
820 const [hydrated, setHydrated] = useState(false);
821 useEffect(() => setHydrated(true), []);
822 return hydrated;
823}
824
825/**
826 * Drilling in and out of the sidebar's lists. `trail` is the way from the
827 * main list to the one shown, worked out from the address, so a link
828 * straight to a settings page opens the sidebar already drilled in, and
829 * leaving it comes back out. Lists deeper than the one shown stay in
830 * place, off to the right, so going back slides them away rather than
831 * dropping them. Moving to a list at the same depth (a workspace's settings
832 * to a project) fades the new one in where it is.
833 */
834function Drill({ trail }: { trail: Level[] }) {
835 const depth = trail.length - 1;
836 const hydrated = useHydrated();
837 const stack = useRef<Level[]>(trail);
838 const before = stack.current;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.839 const within = trail.every(
840 (level, index) => before[index]?.key === level.key,
841 );
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look842 stack.current = within ? [...trail, ...before.slice(trail.length)] : trail;
843 const levels = stack.current;
844 // What was showing last time, to tell drilling in from moving across.
845 const shown = useRef({ depth, keys: levels.map((level) => level.key) });
846 useEffect(() => {
847 shown.current = { depth, keys: levels.map((level) => level.key) };
848 });
Plan: the inbox, then channels and apps, instead of discussions849 return (
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look850 <div className="relative min-h-0 grow overflow-hidden">
851 {levels.map((level, index) => {
852 const current = index === depth;
853 const place =
854 index < depth
855 ? "pointer-events-none -translate-x-1/4 opacity-0"
856 : current
857 ? "translate-x-0 opacity-100"
858 : "pointer-events-none translate-x-full opacity-0";
859 // A list that was not there before arrives: from the right when
860 // drilling in, in place when moving across.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.861 const arriving =
862 hydrated && current && !shown.current.keys.includes(level.key);
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look863 const enter = arriving
864 ? depth > shown.current.depth
865 ? "starting:translate-x-full starting:opacity-0"
866 : "starting:opacity-0"
867 : "";
868 return (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.869 <div
870 key={level.key}
871 className={`${LAYER} ${place} ${enter}`}
872 inert={!current}
873 aria-hidden={!current || undefined}
874 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look875 {level.node}
876 </div>
877 );
878 })}
879 </div>
880 );
881}
882
883/**
884 * The row at the top of a list drilled into: the list's name, which goes
885 * back out, and what it belongs to, faint at the end.
886 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.887function BackRow({
888 to,
889 label,
890 context,
891}: {
892 to: string;
893 label: ReactNode;
894 context?: ReactNode;
895}) {
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look896 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.897 <NavRows className="mt-1">
898 <SidebarMenuItem>
899 <SidebarMenuButton asChild className="gap-1.5 pl-1 font-medium text-fg">
900 <Link to={to} prefetch="intent">
901 <ChevronLeft className="text-faint transition-transform group-hover/menu-button:-translate-x-0.5 group-hover/menu-button:text-muted" />
902 <span className="min-w-0 shrink-0 truncate">{label}</span>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.903 {context && (
904 <span className="ml-auto min-w-0 truncate pl-2 font-mono text-[0.6875rem] font-normal text-faint">
905 {context}
906 </span>
907 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.908 </Link>
909 </SidebarMenuButton>
910 </SidebarMenuItem>
911 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look912 );
913}
914
915/** A thin rule between groups of a list. */
916function Rule() {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.917 return <SidebarSeparator className="my-1.5" />;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look918}
919
Navigation: the workspace's own page with tabs, pins and recent in the sidebar920/** A quiet heading inside a group: Pinned, Recent. */
921function SidebarSubhead({ children }: { children: ReactNode }) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.922 return (
923 <SidebarGroupLabel asChild className="h-6 pt-0.5">
924 <h3>{children}</h3>
925 </SidebarGroupLabel>
926 );
Navigation: the workspace's own page with tabs, pins and recent in the sidebar927}
928
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look929/**
Navigation: the workspace's own page with tabs, pins and recent in the sidebar930 * The workspace's projects as the sidebar keeps them, however many there
931 * are: the person's pins in their order, what they opened last, and the
932 * way to all of them. Pins move by dragging, or with Alt and the arrow
933 * keys; the projects service keeps the order.
934 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.935function SidebarProjects({
936 slug,
937 shell,
938 current,
939}: {
940 slug: string;
941 shell: ShellData;
942 current: boolean;
943}) {
Navigation: the workspace's own page with tabs, pins and recent in the sidebar944 const reorder = useFetcher({ key: `pins:${slug}` });
945 const saved = shell.pinned ?? [];
946 // While a new order is on its way, it shows as made.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.947 const asked =
948 reorder.formData?.get("intent") === "reorder"
949 ? reorder.formData.getAll("slug").map(String)
950 : null;
Navigation: the workspace's own page with tabs, pins and recent in the sidebar951 const pinned = asked
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.952 ? asked
953 .map((name) => saved.find((project) => project.name === name))
954 .filter((project): project is ShortcutProject => project != null)
Navigation: the workspace's own page with tabs, pins and recent in the sidebar955 : saved;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.956 const active = shell.repo
957 ? {
958 namespace: shell.repo.namespace,
959 name: shell.repo.name,
960 isPrivate: false,
961 }
962 : null;
Navigation: the workspace's own page with tabs, pins and recent in the sidebar963 const recent = recentWith(shell.recent ?? [], pinned, active, slug);
964 const [dragging, setDragging] = useState<number | null>(null);
965 const move = (from: number, by: number) => {
966 const next = movedPin(pinned, from, by);
967 if (!next) return;
968 const form = new FormData();
969 form.set("intent", "reorder");
970 for (const project of next) form.append("slug", project.name);
971 reorder.submit(form, { method: "post", action: `/${slug}/-/pins` });
972 };
Previews build from any branch; Agent in place of Ask AI; pin from the sidebar973 // Each row pins or unpins in place: the pin shows on hover or focus, and
974 // stays shown on a pinned row's hover so it reads as "unpin".
975 const row = (project: ShortcutProject, isPinned: boolean) => (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.976 <SidebarLink
977 to={`/${project.namespace}/${project.name}`}
978 icon={project.isPrivate ? <Lock /> : <Box />}
979 drill="hover"
980 bare={isPinned}
Navigation: the workspace's own page with tabs, pins and recent in the sidebar981 action={
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.982 <PinButton
983 workspace={slug}
984 slug={project.name}
985 name={project.title ?? project.name}
986 pinned={isPinned}
987 small
988 className="absolute top-1/2 right-6 -translate-y-1/2 opacity-0 transition-opacity group-hover/menu-item:opacity-100 focus-within:opacity-100 [@media(hover:none)]:opacity-100"
989 />
Navigation: the workspace's own page with tabs, pins and recent in the sidebar990 }
991 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.992 {project.title ?? project.name}
993 </SidebarLink>
994 );
995 return (
996 <SidebarGroup>
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)997 {/* The label and its button share a row, so the button stays level with the words at any text size. */}
998 <div className="flex items-center justify-between gap-2 pr-1">
999 <SidebarGroupLabel asChild>
1000 <h2>Projects</h2>
1001 </SidebarGroupLabel>
1002 <Hint label="New project">
1003 <SidebarGroupAction asChild className="relative top-auto right-auto">
1004 <Link to="/new" aria-label="New project">
1005 <Plus />
1006 </Link>
1007 </SidebarGroupAction>
1008 </Hint>
1009 </div>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1010 <SidebarGroupContent>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1011 {/* Only there once something is pinned: each row below has its own pin. */}
1012 {pinned.length > 0 && (
1013 <>
1014 <SidebarSubhead>Pinned</SidebarSubhead>
1015 <SidebarMenu aria-label="Pinned projects">
1016 {pinned.map((project, index) => (
1017 <SidebarMenuItem
1018 key={project.name}
1019 draggable={pinned.length > 1}
1020 onDragStart={(event) => {
1021 setDragging(index);
1022 event.dataTransfer.effectAllowed = "move";
1023 }}
1024 onDragOver={(event) => {
1025 if (dragging != null) event.preventDefault();
1026 }}
1027 onDrop={(event) => {
1028 event.preventDefault();
1029 if (dragging != null && dragging !== index)
1030 move(dragging, index - dragging);
1031 setDragging(null);
1032 }}
1033 onDragEnd={() => setDragging(null)}
1034 onKeyDown={(event) => {
1035 if (
1036 !event.altKey ||
1037 (event.key !== "ArrowUp" && event.key !== "ArrowDown")
1038 )
1039 return;
1040 event.preventDefault();
1041 move(index, event.key === "ArrowUp" ? -1 : 1);
1042 }}
1043 className={`group/pin ${dragging === index ? "opacity-50" : ""}`}
1044 >
1045 {row(project, true)}
1046 {pinned.length > 1 && (
1047 <Hint
1048 label="Drag, or Alt and an arrow key, to reorder"
1049 side="right"
1050 >
1051 <span className="absolute top-1/2 -left-2 -translate-y-1/2 cursor-grab text-faint opacity-0 transition-opacity group-hover/pin:opacity-100">
1052 <GripVertical size={12} aria-hidden="true" />
1053 </span>
1054 </Hint>
1055 )}
1056 </SidebarMenuItem>
1057 ))}
1058 </SidebarMenu>
1059 </>
1060 )}
1061 {recent.length > 0 && (
1062 <>
1063 <SidebarSubhead>Recent</SidebarSubhead>
1064 <SidebarMenu aria-label="Recent projects">
1065 {recent.map((project) => (
1066 <Fragment key={`${project.namespace}/${project.name}`}>
1067 {row(project, false)}
1068 </Fragment>
1069 ))}
1070 </SidebarMenu>
1071 </>
1072 )}
1073 <SidebarMenu className="pt-1">
1074 <SidebarLink
1075 to={`/${slug}/-/projects`}
1076 icon={<LayoutGrid />}
1077 count={shell.repos.length}
1078 current={current}
1079 >
1080 All projects
1081 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1082 </SidebarMenu>
1083 </SidebarGroupContent>
Navigation: the workspace's own page with tabs, pins and recent in the sidebar1084 </SidebarGroup>
1085 );
1086}
1087
Merge branch 'worktree-agent-ad7c6d88d93adc817'1088/** Insights, coming: the workspace's own page says what it will be. */
1089const INSIGHTS = roadmapItem("insights");
1090
Plan: the inbox, then channels and apps, instead of discussions1091/**
1092 * What the repository menu needs. Known from the address before the page's
1093 * data arrives, so the menu is right from the first frame; the counts fill
1094 * in once it does.
1095 */
1096type MenuRepo = {
1097 namespace: string;
1098 name: string;
1099 member: boolean;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1100 /** Whether they see its settings; from the repository's page once it loads. */
1101 settings?: boolean;
1102 /** What they may do there, once the repository's page loads. */
1103 can?: Abilities;
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1104 /** The remote it mirrors, once the repository's page loads: a mirror lists only what it offers. */
1105 mirror?: RepoMirror | null;
Plan: the inbox, then channels and apps, instead of discussions1106 issues?: number;
1107 pulls?: number;
1108};
1109
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1110function sameRepo(
1111 a: { namespace: string; name: string } | null,
1112 b: { namespace: string; name: string } | null,
1113) {
Plan: the inbox, then channels and apps, instead of discussions1114 return (
1115 a != null &&
1116 b != null &&
1117 a.namespace.toLowerCase() === b.namespace.toLowerCase() &&
1118 a.name.toLowerCase() === b.name.toLowerCase()
1119 );
1120}
1121
1122/**
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1123 * A project's own list, drilled into while you are in it: everything about
1124 * the project, running and its code, and nothing else, with the way back
1125 * out to all of them.
Plan: the inbox, then channels and apps, instead of discussions1126 */
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1127function RepoMenu({
1128 repo,
1129 isPrivate,
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1130 back,
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1131}: {
1132 repo: MenuRepo;
1133 isPrivate: boolean;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1134 /** Where the way back leads: the workspace's projects, mission control, or Explore. */
1135 back: { to: string; label: string };
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1136}) {
Plan: the inbox, then channels and apps, instead of discussions1137 const base = `/${repo.namespace}/${repo.name}`;
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1138 // What a member sees, what everyone who can see the project does, and
1139 // what a mirror offers now (lib/chrome.ts).
1140 const shows = new Set(projectPages(repo.member, repo.can, repo.mirror));
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1141 const { current: atOverview, pending: toOverview } = useRowState(base, {
1142 end: true,
1143 });
Plan: the inbox, then channels and apps, instead of discussions1144 return (
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1145 <nav aria-label={`${repo.namespace}/${repo.name}`} className={PANEL}>
1146 <BackRow to={back.to} label={back.label} />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1147 <NavRows className="mt-1">
1148 <SidebarMenuItem>
1149 <Hint label="Overview" side="right">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1150 <SidebarMenuButton
1151 asChild
1152 size="lg"
1153 isActive={atOverview}
1154 isPending={toOverview}
1155 className="gap-2 font-normal"
1156 >
1157 <Link
1158 to={base}
1159 prefetch="intent"
1160 aria-current={atOverview ? "page" : undefined}
1161 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1162 <span className="flex size-6 shrink-0 items-center justify-center rounded-md bg-raised text-muted ring-1 ring-line [&>svg]:size-3.5">
1163 {isPrivate ? <Lock /> : <Box />}
1164 </span>
1165 <span className="min-w-0 truncate font-mono text-[0.8125rem]">
1166 <span className="text-faint">{repo.namespace}/</span>
1167 <span className="font-semibold text-fg">{repo.name}</span>
1168 </span>
1169 </Link>
1170 </SidebarMenuButton>
1171 </Hint>
1172 </SidebarMenuItem>
1173 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1174 {/* A project's pages, in the order people use them. A page with more
1175 than one view shows them as tabs across its top. */}
1176 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1177 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1178 <SidebarLink
1179 to={`${base}/code`}
1180 also={[
1181 `${base}/tree`,
1182 `${base}/blob`,
1183 `${base}/commits`,
1184 `${base}/commit`,
1185 `${base}/branches`,
1186 `${base}/tags`,
1187 `${base}/compare`,
1188 ...soonPaths(base, "Code"),
1189 ]}
1190 icon={<Code2 size={15} />}
1191 >
Plan: the inbox, then channels and apps, instead of discussions1192 Code
1193 </SidebarLink>
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1194 {/* A mirror that is not taken over lists none of these: its work happens on the remote. */}
1195 {shows.has("issues") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1196 <SidebarLink
1197 to={`${base}/issues`}
1198 also={[
1199 `${base}/plans`,
1200 `${base}/milestones`,
1201 `${base}/labels`,
1202 ...soonPaths(base, "Issues"),
1203 ]}
1204 icon={<CircleDot size={15} />}
1205 count={repo.issues}
1206 >
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1207 Issues
1208 </SidebarLink>
1209 )}
1210 {shows.has("pulls") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1211 <SidebarLink
1212 to={`${base}/pulls`}
1213 also={[`${base}/pull`, `${base}/queue`]}
1214 icon={<GitPullRequest size={15} />}
1215 count={repo.pulls}
1216 >
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1217 Pull requests
1218 </SidebarLink>
1219 )}
1220 {shows.has("agents") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1221 <SidebarLink
1222 to={`${base}/agents`}
1223 also={[
1224 `${base}/sessions`,
1225 `${base}/memory`,
1226 ...soonPaths(base, "Agents"),
1227 ]}
1228 icon={<Bot size={15} />}
1229 >
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1230 Agents
1231 </SidebarLink>
1232 )}
1233 {shows.has("actions") && (
1234 <SidebarLink to={`${base}/actions`} icon={<PlayCircle size={15} />}>
1235 Workflows
1236 </SidebarLink>
1237 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1238 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1239 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1240 <NavRows>
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1241 {shows.has("deployments") ? (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1242 <SidebarLink
1243 to={`${base}/deployments`}
1244 also={soonPaths(base, "Deployments")}
1245 icon={<Rocket size={15} />}
1246 >
Plan: the inbox, then channels and apps, instead of discussions1247 Deployments
1248 </SidebarLink>
1249 ) : null}
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1250 {shows.has("observability") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1251 <SidebarSoonLink
1252 to={`${base}/soon/logs`}
1253 also={soonPaths(base, "Observability")}
1254 icon={<Activity size={15} />}
1255 about="Logs, errors, uptime and analytics of the project's deployed apps."
1256 >
A desktop release goes out with what can be built. Linux is built on g1t's machines in every release; Windows and macOS each wait on a repository variable: a machine registered for them, or for Windows a cross build on Linux once aka.ms and download.visualstudio.microsoft.com are workflow-only domains, which is where the first release stopped. A platform with no machine is skipped and the download page says it is coming, with a word for the visitor whose platform this release lacks. The guide and CONTRIBUTING say so.1257 Observability
1258 </SidebarSoonLink>
1259 )}
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1260 {shows.has("security") ? (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1261 <SidebarLink
1262 to={`${base}/security`}
1263 also={soonPaths(base, "Security")}
1264 icon={<ShieldCheck size={15} />}
1265 >
Agents get guardrails, run credentials, an audit log, a context hub, repository instructions and mentions; security upkeep; snake_case API1266 Security
1267 </SidebarLink>
1268 ) : null}
Merge branch 'main' into worktree-agent-a69aeabc4b0deeb971269 <SidebarLink
1270 to={`${base}/contributors`}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1271 also={[
1272 `${base}/activity`,
1273 `${base}/stargazers`,
1274 ...soonPaths(base, "Insights"),
1275 ]}
Merge branch 'main' into worktree-agent-a69aeabc4b0deeb971276 icon={<BarChart3 size={15} />}
1277 >
Plan: the inbox, then channels and apps, instead of discussions1278 Insights
Merge branch 'main' into worktree-agent-a69aeabc4b0deeb971279 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1280 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1281 {(repo.settings ?? shows.has("settings")) && (
1282 <>
1283 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1284 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1285 <SidebarLink
1286 to={`${base}/settings`}
1287 icon={<Settings size={15} />}
1288 drill
1289 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1290 Settings
1291 </SidebarLink>
1292 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1293 </>
1294 )}
Plan: the inbox, then channels and apps, instead of discussions1295 </nav>
1296 );
1297}
1298
Project settings move into the sidebar, grouped, with a heading per page1299/**
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1300 * A project's settings, drilled into from its list: what is about running
1301 * it, then its agents, then its code and who can reach it. The way back
1302 * leads to the project.
Project settings move into the sidebar, grouped, with a heading per page1303 */
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1304function RepoSettingsMenu({ repo }: { repo: MenuRepo }) {
Project settings move into the sidebar, grouped, with a heading per page1305 const base = `/${repo.namespace}/${repo.name}`;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1306 // Each page shows to the roles that can use it, once the role is known.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1307 const shows = (page: string) =>
1308 !repo.can || repo.can[SETTINGS_CAPABILITY[page] ?? "administer"];
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1309 const running = shows("deployments");
1310 const agents = shows("agents") || shows("guardrails");
Project settings move into the sidebar, grouped, with a heading per page1311 return (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1312 <nav
1313 aria-label={`${repo.namespace}/${repo.name} settings`}
1314 className={PANEL}
1315 >
1316 <BackRow
1317 to={base}
1318 label="Settings"
1319 context={`${repo.namespace}/${repo.name}`}
1320 />
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1321 {shows("") && (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1322 <NavRows className="mt-2">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1323 <SidebarLink
1324 to={`${base}/settings`}
1325 end
1326 icon={<Settings size={15} />}
1327 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1328 General
1329 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1330 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1331 )}
1332 {running && (
1333 <>
1334 {shows("") && <Rule />}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1335 <NavRows className={shows("") ? undefined : "mt-2"}>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1336 <SidebarLink
1337 to={`${base}/settings/deployments`}
1338 icon={<Rocket size={15} />}
1339 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1340 Deployments
1341 </SidebarLink>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1342 <SidebarLink
1343 to={`${base}/settings/domains`}
1344 icon={<Globe size={15} />}
1345 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1346 Domains
1347 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1348 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1349 </>
1350 )}
1351 {agents && (
1352 <>
1353 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1354 <NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1355 {shows("agents") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1356 <SidebarLink
1357 to={`${base}/settings/agents`}
1358 icon={<Bot size={15} />}
1359 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1360 Agents
1361 </SidebarLink>
1362 )}
1363 {shows("guardrails") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1364 <SidebarLink
1365 to={`${base}/settings/guardrails`}
1366 icon={<ShieldCheck size={15} />}
1367 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1368 Guardrails
1369 </SidebarLink>
1370 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1371 </NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1372 </>
1373 )}
1374 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1375 <NavRows>
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1376 {shows("repository") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1377 <SidebarLink
1378 to={`${base}/settings/repository`}
1379 icon={<BookMarked size={15} />}
1380 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1381 Repository
1382 </SidebarLink>
1383 )}
Merge branch 'mirroring' into artifacts-mode1384 {shows("mirroring") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1385 <SidebarLink
1386 to={`${base}/settings/mirroring`}
1387 icon={<ArrowLeftRight size={15} />}
1388 >
Merge branch 'mirroring' into artifacts-mode1389 Mirroring
1390 </SidebarLink>
1391 )}
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1392 {shows("access") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1393 <SidebarLink
1394 to={`${base}/settings/access`}
1395 icon={<Users size={15} />}
1396 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1397 Access
1398 </SidebarLink>
1399 )}
Merge branch 'worktree-agent-a5a5de74d8863d554' into worktree-agent-a16631325aecf58ca1400 {shows("keys") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1401 <SidebarLink
1402 to={`${base}/settings/keys`}
1403 icon={<KeyRound size={15} />}
1404 >
Merge branch 'worktree-agent-a5a5de74d8863d554' into worktree-agent-a16631325aecf58ca1405 Deploy keys
1406 </SidebarLink>
1407 )}
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1408 {shows("branches") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1409 <SidebarLink
1410 to={`${base}/settings/branches`}
1411 icon={<GitBranch size={15} />}
1412 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1413 Branches and merging
1414 </SidebarLink>
1415 )}
Merge rulesets: branch and tag rules, agent-first, enforced on push and merge1416 {shows("rules") && (
1417 <SidebarLink to={`${base}/settings/rules`} icon={<Scale size={15} />}>
1418 Rules
1419 </SidebarLink>
1420 )}
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1421 {shows("secrets") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1422 <SidebarLink
1423 to={`${base}/settings/secrets`}
1424 icon={<Lock size={15} />}
1425 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1426 Secrets and variables
1427 </SidebarLink>
1428 )}
Merge branch 'worktree-agent-a3abfcce648e87dca'1429 {shows("actions") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1430 <SidebarLink
1431 to={`${base}/settings/actions`}
1432 icon={<PlayCircle size={15} />}
1433 >
Merge branch 'worktree-agent-a3abfcce648e87dca'1434 Actions
1435 </SidebarLink>
1436 )}
1437 {shows("environments") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1438 <SidebarLink
1439 to={`${base}/settings/environments`}
1440 icon={<Layers size={15} />}
1441 >
Merge branch 'worktree-agent-a3abfcce648e87dca'1442 Environments
1443 </SidebarLink>
1444 )}
Fast pages, required checks on the branch, self-hosted runners, honest incidents1445 {shows("runners") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1446 <SidebarLink
1447 to={`${base}/settings/runners`}
1448 icon={<ServerCog size={15} />}
1449 >
Fast pages, required checks on the branch, self-hosted runners, honest incidents1450 Runners
1451 </SidebarLink>
1452 )}
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1453 {shows("webhooks") && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1454 <SidebarLink
1455 to={`${base}/settings/webhooks`}
1456 icon={<Webhook size={15} />}
1457 >
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1458 Webhooks
1459 </SidebarLink>
1460 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1461 </NavRows>
Project settings move into the sidebar, grouped, with a heading per page1462 </nav>
1463 );
1464}
1465
Merge two kinds of invite, kept apart: an invite to g1t (Settings, invite-only only, no workspace unless asked) and an invitation to a workspace (its People page)1466/**
1467 * Whether the menus list Settings → Invites (invites to g1t): always while
1468 * sign-up takes an invite; once anyone can sign up, only for someone with
1469 * invites already made to look back on, which the account menu's data says.
1470 */
1471function useInvitesListed(): boolean {
1472 const inviteOnly = useInviteOnly();
1473 const details = useFetcher<AccountMenuData | null>({ key: "account-menu" });
1474 useEffect(() => {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1475 if (!inviteOnly && details.state === "idle" && details.data === undefined)
1476 details.load("/settings/menu.json");
Merge two kinds of invite, kept apart: an invite to g1t (Settings, invite-only only, no workspace unless asked) and an invitation to a workspace (its People page)1477 // eslint-disable-next-line react-hooks/exhaustive-deps
1478 }, [inviteOnly]);
1479 return inviteOnly || details.data?.invites_page === true;
1480}
1481
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1482/** Your own settings, drilled into from Your settings: one page each. */
1483function AccountSettingsMenu({ username }: { username: string }) {
Merge two kinds of invite, kept apart: an invite to g1t (Settings, invite-only only, no workspace unless asked) and an invitation to a workspace (its People page)1484 const invites = useInvitesListed();
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1485 const link = (page: AccountSettingsPage, icon: ReactNode) => (
1486 <SidebarLink to={`/settings/${page}`} icon={icon}>
1487 {ACCOUNT_SETTINGS[page].title}
1488 </SidebarLink>
Plan: the inbox, then channels and apps, instead of discussions1489 );
1490 return (
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1491 <nav aria-label="Your settings" className={PANEL}>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1492 <BackRow to="/" label="Your settings" context={username} />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1493 <NavRows className="mt-2">
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1494 {link("profile", <CircleUserRound size={15} />)}
1495 {link("emails", <Mail size={15} />)}
Merge two kinds of invite, kept apart: an invite to g1t (Settings, invite-only only, no workspace unless asked) and an invitation to a workspace (its People page)1496 {invites && link("invites", <Ticket size={15} />)}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1497 </NavRows>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1498 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1499 <NavRows>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1500 {link("keys", <Fingerprint size={15} />)}
1501 {link("tokens", <KeyRound size={15} />)}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1502 </NavRows>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1503 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1504 <NavRows>
Integrations are a directory of connectors, for a workspace and for each person1505 {link("integrations", <Blocks size={15} />)}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1506 {link("github", <GithubMark className="size-3.75" />)}
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1507 {link("applications", <Plug size={15} />)}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1508 </NavRows>
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1509 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1510 <NavRows>
Merge main (membership, two-factor, GitHub repo roles) into tokens1511 {link("two-factor", <ShieldCheck size={15} />)}
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1512 {link("security-log", <History size={15} />)}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1513 </NavRows>
Plan: the inbox, then channels and apps, instead of discussions1514 </nav>
1515 );
1516}
1517
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1518/**
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1519 * Code's sidebar: its Overview, the projects, what spans them and what is
1520 * coming; in a project, drilled into the project's own list, and its
1521 * settings one level further in. The address says which, so a link
1522 * straight to a project opens the sidebar already drilled in.
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put1523 */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1524function CodeSidebar({
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1525 user,
1526 shell,
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1527 missing = false,
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1528}: {
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1529 user: User;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1530 shell: ShellData;
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1531 /** The page is a 404: the address names nothing the viewer can see. */
1532 missing?: boolean;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1533}) {
Plan: the inbox, then channels and apps, instead of discussions1534 const ws = shell.workspace;
1535 const { pathname } = useLocation();
1536 const going = useNavigation().location?.pathname;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1537 // Where the sidebar is drilled to follows the page being gone to, so it
1538 // moves as the link is followed, not once the page arrives.
1539 const target = going ?? pathname;
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1540 // On a 404, the address is not a place: no list is drilled into from it,
1541 // except the project's own when the project is real and visible and only
1542 // something inside it is missing (a file, a commit, an issue).
1543 const lost = missing && going == null;
Plan: the inbox, then channels and apps, instead of discussions1544 const active = shell.repo;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1545 // In a repository, or on the way into one, its own list.
Plan: the inbox, then channels and apps, instead of discussions1546 const repoPath = /^\/([^/]+)\/([^/-][^/]*)(\/|$)/.exec(target);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1547 const reserved = new Set([
1548 "settings",
1549 "explore",
1550 "search",
1551 "new",
1552 "u",
1553 "pricing",
1554 "avatars",
1555 "workspaces",
1556 "login",
1557 "logout",
1558 "register",
1559 "verify",
1560 "forgot",
1561 "reset",
1562 "device",
1563 "oauth",
1564 "policies",
1565 "security",
1566 "support",
1567 "status",
1568 "invite",
1569 "notifications",
1570 "inbox",
1571 ".well-known",
1572 ]);
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1573 // An invitation to a repository is answered before its menu means anything.
1574 const inRepo =
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas1575 repoPath != null &&
1576 !reserved.has(repoPath[1]) &&
1577 repoPath[2] !== "-" &&
1578 !/^\/[^/]+\/[^/]+\/invitations\/?$/.test(target) &&
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1579 (!lost ||
1580 sameRepo(active, { namespace: repoPath[1]!, name: repoPath[2]! }));
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1581 // A project's settings, one level further in.
Project settings move into the sidebar, grouped, with a heading per page1582 const inRepoSettings = inRepo && REPO_SETTINGS_PAGE.test(target);
Plan: the inbox, then channels and apps, instead of discussions1583 // The repository the menu is for: the one loaded if it is the one being
1584 // gone to, else what the address says, at once.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1585 const targetRepo =
1586 inRepo && repoPath ? { namespace: repoPath[1], name: repoPath[2] } : null;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1587 const guessed: MenuRepo | null = targetRepo
Plan: the inbox, then channels and apps, instead of discussions1588 ? sameRepo(active, targetRepo)
1589 ? active
1590 : {
1591 ...targetRepo,
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1592 member: (user.workspaces ?? []).some(
1593 (m) => m.slug === targetRepo.namespace.toLowerCase(),
1594 ),
Plan: the inbox, then channels and apps, instead of discussions1595 }
1596 : null;
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1597 // The viewer's role there, from the repository's page once it has loaded.
1598 const page = useRouteLoaderData("routes/repo/layout") as
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1599 | {
1600 repo?: { namespace: string; name: string; mirror?: RepoMirror | null };
1601 access?: ViewerAccess;
1602 }
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1603 | undefined;
1604 const menuRepo: MenuRepo | null =
1605 guessed && page?.access && page.repo && sameRepo(page.repo, guessed)
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1606 ? {
1607 ...guessed,
1608 member: page.access.insider,
1609 settings: seesSettings(page.access),
1610 can: page.access.can,
1611 mirror: page.repo.mirror,
1612 }
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1613 : guessed;
1614
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1615 // The way from Code's list to the one shown.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1616 const trail: Level[] = [
1617 {
1618 key: "main",
1619 node: ws ? <CodeMenu shell={shell} slug={ws.slug} /> : null,
1620 },
1621 ];
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1622 if (menuRepo) {
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1623 const key = `repo:${menuRepo.namespace}/${menuRepo.name}`.toLowerCase();
1624 // Out of a project: to its workspace's projects when they are yours.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1625 const home = (user.workspaces ?? []).find(
1626 (m) => m.slug === menuRepo.namespace.toLowerCase(),
1627 );
1628 const back = home
1629 ? { to: `/${home.slug}/-/projects`, label: "All projects" }
1630 : { to: ws ? `/${ws.slug}/-/overview` : "/explore", label: "Code" };
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1631 trail.push({
1632 key,
1633 node: (
1634 <RepoMenu
1635 repo={menuRepo}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1636 isPrivate={[...shell.repos, ...(shell.shared ?? [])].some(
1637 (repo) => sameRepo(repo, menuRepo) && repo.isPrivate,
1638 )}
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1639 back={back}
1640 />
1641 ),
1642 });
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1643 if (inRepoSettings)
1644 trail.push({
1645 key: `${key}:settings`,
1646 node: <RepoSettingsMenu repo={menuRepo} />,
1647 });
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1648 }
1649
Plan: the inbox, then channels and apps, instead of discussions1650 return (
1651 <div className="flex h-full flex-col">
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1652 <ModeHeader title="Code" />
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look1653 <Drill trail={trail} />
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1654 </div>
1655 );
1656}
1657
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1658/**
1659 * A mode's sidebar heading: its name, quiet, under the workspace's
1660 * switcher, with what it makes at the end.
1661 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1662export function ModeHeader({
1663 title,
1664 action,
1665}: {
1666 title: ReactNode;
1667 action?: ReactNode;
1668}) {
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1669 return (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1670 <div className="flex h-8 shrink-0 items-center gap-1 pr-2 pl-3">
1671 <SidebarGroupLabel asChild className="min-w-0 grow truncate px-1">
1672 <h2>{title}</h2>
1673 </SidebarGroupLabel>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1674 {action}
1675 </div>
1676 );
1677}
1678
1679/**
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1680 * Code's own list (beside the rail): only code. Its Overview (Mission
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1681 * control's code panels), the projects, what spans them, and what is
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1682 * coming. The workspace's people, money and settings are elsewhere;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1683 * agents, context and memory are Agents'.
1684 */
1685function CodeMenu({ shell, slug }: { shell: ShellData; slug: string }) {
1686 const { pathname } = useLocation();
1687 const going = useNavigation().location?.pathname;
1688 const path = going ?? pathname;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1689 const at = (page: string) =>
1690 path === `/${slug}/-/${page}` || path.startsWith(`/${slug}/-/${page}/`);
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1691 const shared = shell.shared ?? [];
1692 return (
1693 <nav aria-label="Code" className={PANEL}>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1694 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1695 <SidebarLink
1696 to={`/${slug}/-/overview`}
1697 icon={<LayoutDashboard size={15} />}
1698 current={at("overview")}
1699 >
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1700 Overview
1701 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1702 </NavRows>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1703 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1704 <SidebarProjects slug={slug} shell={shell} current={at("projects")} />
1705 <Rule />
1706 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1707 <SidebarLink
1708 to={`/${slug}/-/security`}
1709 icon={<ShieldCheck size={15} />}
1710 current={at("security") && !at("security/settings")}
1711 >
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1712 Security
1713 </SidebarLink>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1714 <SidebarLink
1715 to={`/${slug}/-/packages`}
1716 icon={<Package size={15} />}
1717 current={at("packages")}
1718 >
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1719 Packages
1720 </SidebarLink>
1721 {INSIGHTS && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1722 <SidebarSoonLink
1723 to={`/${slug}/-/insights`}
1724 icon={<TrendingUp size={15} />}
1725 about={INSIGHTS.summary}
1726 current={at("insights")}
1727 >
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1728 {INSIGHTS.title}
1729 </SidebarSoonLink>
1730 )}
1731 {roadmapIn("Workspace")
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1732 .filter(
1733 (item) =>
1734 item.key !== "insights" &&
1735 item.key !== "teams" &&
1736 item.key !== "fleet",
1737 )
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1738 .map((item) => (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1739 <SidebarSoonLink
1740 key={item.key}
1741 to={`/${slug}/-/soon/${item.key}`}
1742 icon={WORKSPACE_ICONS[item.key] ?? <Sparkles size={15} />}
1743 about={item.summary}
1744 >
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1745 {item.title === "Board" ? "Boards" : item.title}
1746 </SidebarSoonLink>
1747 ))}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1748 </NavRows>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1749 {shared.length > 0 && (
1750 <>
1751 <Rule />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1752 <NavGroup title="Shared with you">
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1753 {shared.map((repo) => (
1754 <SidebarLink
1755 key={`${repo.namespace}/${repo.name}`}
1756 to={`/${repo.namespace}/${repo.name}`}
1757 icon={repo.isPrivate ? <Lock size={15} /> : <Box size={15} />}
1758 drill="hover"
1759 >
1760 <span className="font-mono text-faint">{repo.namespace}/</span>
1761 {repo.name}
1762 </SidebarLink>
1763 ))}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1764 </NavGroup>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1765 </>
1766 )}
1767 </nav>
1768 );
1769}
1770
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1771/** The icon of each of Workspace mode's pages, by its key (lib/workspace-nav.ts). */
1772const WORKSPACE_PAGE_ICONS: Record<string, ReactNode> = {
1773 settings: <Settings size={15} />,
1774 members: <Users size={15} />,
1775 invitations: <Mail size={15} />,
1776 permissions: <ShieldCheck size={15} />,
1777 tokens: <KeyRound size={15} />,
1778 "personal-access-tokens": <UserRoundKey size={15} />,
1779 spend: <Coins size={15} />,
1780 usage: <BarChart3 size={15} />,
1781 gateway: <Network size={15} />,
1782 billing: <CreditCard size={15} />,
1783 runners: <ServerCog size={15} />,
1784 repositories: <BookMarked size={15} />,
1785 actions: <PlayCircle size={15} />,
1786 secrets: <Lock size={15} />,
1787 webhooks: <Webhook size={15} />,
1788 deployments: <Rocket size={15} />,
1789 projects: <Layers size={15} />,
1790 "agent-settings": <Bot size={15} />,
1791 "chat-settings": <MessagesSquare size={15} />,
1792 emoji: <Smile size={15} />,
1793 "artifact-settings": <Shapes size={15} />,
1794 "security-settings": <Shield size={15} />,
1795 guardrails: <Gauge size={15} />,
1796 rules: <Scale size={15} />,
1797 audit: <History size={15} />,
1798 integrations: <Plug size={15} />,
1799 applications: <Blocks size={15} />,
1800};
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1801
1802/**
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1803 * A group of Workspace mode's rows that folds: its name is the button, with
1804 * a chevron that turns when it is open. The group holding the current page
1805 * is always open, and its button does nothing. Every group starts open, so
1806 * the server and the browser draw the same list.
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1807 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1808function FoldingGroup({
1809 title,
1810 current,
1811 children,
1812}: {
1813 title: string;
1814 current: boolean;
1815 children: ReactNode;
1816}) {
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1817 const [open, setOpen] = useState(true);
1818 return (
1819 <Collapsible open={open || current} onOpenChange={setOpen}>
1820 <SidebarGroup>
1821 <CollapsibleTrigger
1822 disabled={current}
1823 aria-label={`${title}: ${open || current ? "fold" : "unfold"}`}
1824 className="flex h-7 w-full shrink-0 items-center justify-between rounded-md px-2 text-[0.6875rem] font-medium tracking-wide text-faint uppercase hover:text-muted focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-default disabled:text-faint data-[state=open]:[&_svg]:rotate-90"
1825 >
1826 <span>{title}</span>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1827 {!current && (
1828 <ChevronRight
1829 size={12}
1830 aria-hidden="true"
1831 className="text-faint/70"
1832 />
1833 )}
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1834 </CollapsibleTrigger>
1835 <CollapsibleContent>
1836 <SidebarGroupContent>
1837 <SidebarMenu>{children}</SidebarMenu>
1838 </SidebarGroupContent>
1839 </CollapsibleContent>
1840 </SidebarGroup>
1841 </Collapsible>
1842 );
1843}
1844
1845/**
1846 * The Workspace mode's sidebar: the workspace's settings area, every page
1847 * one click away. Its overview, then the groups in lib/workspace-nav.ts
1848 * (General, Access, Money, Compute, Code, Agents, Chat, Artifacts,
1849 * Security, Integrations), each folding, the one you are in held open.
1850 * Pages only owners open are left out for members, and a group with none
1851 * left goes with them; a page that is coming is a Soon row, not a link.
1852 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1853export function WorkspaceSidebar({
1854 slug,
1855 owner,
1856}: {
1857 slug: string;
1858 owner: boolean;
1859}) {
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1860 const { pathname } = useLocation();
1861 const going = useNavigation().location?.pathname;
1862 const path = going ?? pathname;
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1863 const here = workspaceSettingsPage(path, slug);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1864 const overview =
1865 path === `/${slug}/-/workspace` || path.startsWith(`/${slug}/-/workspace/`);
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1866 const shown = (page: WorkspaceSettingsPage) => owner || !page.owner;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1867 return (
1868 <div className="flex h-full flex-col">
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1869 <ModeHeader title="Workspace" />
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1870 <nav aria-label="Workspace" className={PANEL}>
1871 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1872 <SidebarLink
1873 to={`/${slug}/-/workspace`}
1874 icon={<LayoutGrid size={15} />}
1875 current={overview}
1876 >
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1877 Overview
1878 </SidebarLink>
1879 </NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1880 {WORKSPACE_SETTINGS_GROUPS.filter((group) =>
1881 group.pages.some(shown),
1882 ).map((group) => (
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1883 <Fragment key={group.key}>
1884 <Rule />
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1885 <FoldingGroup
1886 title={group.title}
1887 current={here?.group === group.key}
1888 >
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1889 {group.pages.filter(shown).map((page) =>
1890 page.soon ? (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1891 <SidebarSoon
1892 key={page.key}
1893 icon={
1894 WORKSPACE_PAGE_ICONS[page.key] ?? <Sparkles size={15} />
1895 }
1896 about={page.soon}
1897 >
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1898 {page.label}
1899 </SidebarSoon>
1900 ) : (
1901 <SidebarLink
1902 key={page.key}
1903 to={`/${slug}/-/${page.path}`}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1904 icon={
1905 WORKSPACE_PAGE_ICONS[page.key] ?? <Settings size={15} />
1906 }
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1907 current={here?.page === page.key}
1908 >
1909 {page.label}
1910 </SidebarLink>
1911 ),
1912 )}
1913 </FoldingGroup>
1914 </Fragment>
1915 ))}
1916 </nav>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1917 </div>
1918 );
1919}
1920
People and teams are front and centre: one directory of people and agents with presence, local time, titles, teams and what each owns; profiles with manager and reports and the agents they work with; an org chart with each team's agents beside the person who leads it; and teams of any mix, with a lead, a channel, a budget agents keep to and the agents on them. Every agent is told its teams each turn (who leads, who owns what, who's around and who to page), and the team page shows exactly what. Member management is Members and invites; the people and teams guide says how.1921/**
People lists people. The directory, its counts and its search cover the workspace's people only; agents keep their page under Agents, where the Profile tab now also says what each agent is told about its teams, and the old address of an agent under People sends you there. Agents still join teams beside people: a team's members page groups them under its people with an agent badge, and the org chart shows them as members of the team beside its lead. The people and teams, agents, teams and workspaces guides say so.1922 * People's sidebar: everyone in the workspace (its people; agents are
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.1923 * under Agents); its teams, which agents can be on; and the org chart. Who
1924 * belongs, and inviting people, is the workspace's: Workspace mode's
1925 * Access group.
People and teams are front and centre: one directory of people and agents with presence, local time, titles, teams and what each owns; profiles with manager and reports and the agents they work with; an org chart with each team's agents beside the person who leads it; and teams of any mix, with a lead, a channel, a budget agents keep to and the agents on them. Every agent is told its teams each turn (who leads, who owns what, who's around and who to page), and the team page shows exactly what. Member management is Members and invites; the people and teams guide says how.1926 */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1927function PeopleSidebar({ slug }: { slug: string }) {
1928 const { pathname } = useLocation();
1929 const going = useNavigation().location?.pathname;
1930 const path = going ?? pathname;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1931 const at = (page: string) =>
1932 path === `/${slug}/-/${page}` || path.startsWith(`/${slug}/-/${page}/`);
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)1933 return (
1934 <div className="flex h-full flex-col">
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1935 <ModeHeader title="People" />
1936 <nav aria-label="People" className={PANEL}>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1937 <NavRows>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1938 <SidebarLink
1939 to={`/${slug}/-/people`}
1940 icon={<Users size={15} />}
1941 current={at("people")}
1942 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1943 Everyone
1944 </SidebarLink>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1945 <SidebarLink
1946 to={`/${slug}/-/teams`}
1947 icon={<UsersRound size={15} />}
1948 current={at("teams")}
1949 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1950 Teams
1951 </SidebarLink>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1952 <SidebarLink
1953 to={`/${slug}/-/org-chart`}
1954 icon={<Network size={15} />}
1955 current={at("org-chart")}
1956 >
People and teams are front and centre: one directory of people and agents with presence, local time, titles, teams and what each owns; profiles with manager and reports and the agents they work with; an org chart with each team's agents beside the person who leads it; and teams of any mix, with a lead, a channel, a budget agents keep to and the agents on them. Every agent is told its teams each turn (who leads, who owns what, who's around and who to page), and the team page shows exactly what. Member management is Members and invites; the people and teams guide says how.1957 Org chart
1958 </SidebarLink>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.1959 </NavRows>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1960 </nav>
1961 </div>
1962 );
1963}
1964
1965/**
1966 * Notifications' sidebar: what you have not finished with, what you saved
1967 * and what is done; then why you were told, which narrows any of them.
1968 */
1969function NotificationsSidebar({ counts }: { counts: InboxCounts | null }) {
1970 const { search } = useLocation();
1971 const params = new URLSearchParams(search);
1972 const view = inboxView(params.get("view"));
1973 const reason = inboxReason(params.get("reason"));
1974 const tab = params.get("tab");
1975 const address = (changes: Record<string, string | null>) => {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1976 const merged: Record<string, string | null> = {
1977 tab,
1978 view: view === "inbox" ? null : view,
1979 reason,
1980 ...changes,
1981 };
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1982 const next = new URLSearchParams();
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1983 for (const [name, value] of Object.entries(merged))
1984 if (value) next.set(name, value);
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1985 const query = next.toString();
1986 return query ? `/notifications?${query}` : "/notifications";
1987 };
1988 const views = [
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.1989 {
1990 view: "inbox",
1991 label: "Everything",
1992 icon: <Bell size={15} />,
1993 count: counts?.unread,
1994 },
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.1995 { view: "saved", label: "Saved", icon: <Bookmark size={15} /> },
1996 { view: "done", label: "Done", icon: <Check size={15} /> },
1997 ] as const;
1998 return (
1999 <div className="flex h-full flex-col">
2000 <ModeHeader title="Notifications" />
2001 <nav aria-label="Notifications" className={PANEL}>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2002 <NavRows>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2003 {views.map((entry) => (
2004 <SidebarLink
2005 key={entry.view}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2006 to={address({
2007 view: entry.view === "inbox" ? null : entry.view,
2008 before: null,
2009 })}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2010 icon={entry.icon}
2011 count={"count" in entry ? (entry.count ?? undefined) : undefined}
2012 current={view === entry.view}
2013 >
2014 {entry.label}
2015 </SidebarLink>
2016 ))}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2017 </NavRows>
2018 <Rule />
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2019 <NavGroup title="Why you were told">
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2020 {REASON_FILTERS.map((entry) => (
2021 <SidebarLink
2022 key={entry.reason ?? "any"}
2023 to={address({ reason: entry.reason, before: null })}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2024 icon={<span className="block size-3.75" />}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2025 current={reason === entry.reason}
2026 >
2027 {entry.reason == null ? "Any reason" : entry.label}
2028 </SidebarLink>
2029 ))}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2030 </NavGroup>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2031 </nav>
2032 </div>
2033 );
2034}
2035
2036/** Your own settings, beside the page: under the account menu, not any workspace's. */
2037export function AccountSidebar({ username }: { username: string }) {
2038 return (
2039 <div className="flex h-full flex-col">
2040 <ModeHeader title="Your account" />
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2041 <div className="min-h-0 grow">
2042 <AccountSettingsMenu username={username} />
Plan: the inbox, then channels and apps, instead of discussions2043 </div>
2044 </div>
2045 );
2046}
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2047
Plan: the inbox, then channels and apps, instead of discussions2048/** Words for the sections a path can end in. */
2049const SECTIONS: Record<string, string> = {
2050 issues: "Issues",
Usage, Billing settings and prepaid AI credit; fixes from the UX audit2051 milestones: "Milestones",
2052 labels: "Labels",
Plan: the inbox, then channels and apps, instead of discussions2053 pulls: "Pull requests",
2054 queue: "Merge queue",
2055 commits: "Commits",
2056 plans: "Outcomes",
2057 actions: "Workflows",
2058 soon: "Soon",
2059 deployments: "Deployments",
2060 repository: "Repository",
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look2061 access: "Access",
2062 invitations: "Invitation",
2063 repositories: "Repositories",
Branches and Tags pages, each file's last commit, and the branch menu on files2064 branches: "Branches",
2065 tags: "Tags",
Compare: any two branches, the commits one has that the other does not, and the diff, with Open a pull request2066 compare: "Compare",
Plan: the inbox, then channels and apps, instead of discussions2067 code: "Files",
2068 secrets: "Secrets and variables",
2069 settings: "Settings",
Navigation: the workspace's own page with tabs, pins and recent in the sidebar2070 people: "People",
People and teams are front and centre: one directory of people and agents with presence, local time, titles, teams and what each owns; profiles with manager and reports and the agents they work with; an org chart with each team's agents beside the person who leads it; and teams of any mix, with a lead, a channel, a budget agents keep to and the agents on them. Every agent is told its teams each turn (who leads, who owns what, who's around and who to page), and the team page shows exactly what. Member management is Members and invites; the people and teams guide says how.2071 "org-chart": "Org chart",
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.2072 members: "Members",
2073 permissions: "Permissions",
Navigation: the workspace's own page with tabs, pins and recent in the sidebar2074 projects: "Projects",
2075 teams: "Teams",
Plan: the inbox, then channels and apps, instead of discussions2076 tokens: "Access tokens",
Settings: fine-grained tokens, workspace token Admin, workspace personal access token rules2077 "personal-access-tokens": "Personal access tokens",
The Spend page says what a workspace spent, where it went and the budgets that hold it, in Workspace under Money: spent at price, agents' spend and the spend limit; by day; by agent, person, channel, model, kind of work and product; budgets from the workspace down to each person, agent and task, with what happens at 100%; the costliest tasks, each with a receipt of every session at the provider's price and what was charged; and how it's priced. Everyone sees what agents spent for them, and owners and billing managers the whole workspace; each person can have a monthly budget agents keep to, and the spend pill in the top bar shows your month or the workspace's against its limit. The spend guide says how.2078 spend: "Spend",
2079 receipts: "Receipts",
Plan: the inbox, then channels and apps, instead of discussions2080 usage: "Usage",
Site: the AI Gateway page's breadcrumb reads "AI Gateway"2081 gateway: "AI Gateway",
Plan: the inbox, then channels and apps, instead of discussions2082 billing: "Billing and plans",
2083 integrations: "Integrations",
2084 webhooks: "Webhooks",
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2085 emoji: "Emoji",
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look2086 domains: "Domains",
2087 guardrails: "Guardrails",
Merge rulesets: branch and tag rules, agent-first, enforced on push and merge2088 rules: "Rules",
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look2089 audit: "Audit log",
Files pages say Files in the trail and keep the description in About only2090 tree: "Files",
2091 blob: "Files",
Security matches the workspace's other pages and leaves out deleted repositories; every section has a name in the trail2092 agents: "Agents",
2093 context: "Context",
2094 memory: "Memory",
2095 security: "Security",
2096 packages: "Packages",
2097 runners: "Runners",
Merge branch 'worktree-agent-a3abfcce648e87dca'2098 environments: "Environments",
Security matches the workspace's other pages and leaves out deleted repositories; every section has a name in the trail2099 workflows: "Workflows",
2100 observability: "Observability",
2101 insights: "Insights",
2102 sessions: "Sessions",
Chat and workspace agents: channels, DMs and named agents you talk to2103 chat: "Chat",
Artifacts is a mode in the rail, the shell and the phone's tab bar in place of Docs: its home lists everything you can open by day or as cards under All, Yours and Shared with you, with search, filters and tiles to start a doc (slides, designs and dashboards say they are coming soon), and its sidebar holds favorites, spaces, Private, Shared, projects' docs and the trash.2104 artifacts: "Artifacts",
The front page is Home: where you're needed comes first, however long ago it started, with what's at stake and how long it has waited; then what happened since you were last here, in words, with the agent work that settled, what landed, what deployed, what was decided and what was spent, switchable to the last 24 hours or 7 days; then what's running now. Your last visit is kept with your account, so it's the same on every device; Today's old address leads here. The home guide says how.2105 home: "Home",
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2106 apps: "Apps",
Merge branch 'worktree-agent-a432a6fe93007b723' into customize2107 customize: "Customize",
Chat and workspace agents: channels, DMs and named agents you talk to2108 "code-access": "Code access",
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2109 overview: "Overview",
2110 workspace: "Workspace",
Plan: the inbox, then channels and apps, instead of discussions2111};
2112
Merge branch 'worktree-agent-a3abfcce648e87dca'2113/** Settings pages whose name differs from the section's of the same word. */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2114const SETTINGS_SECTIONS: Record<string, string> = {
2115 branches: "Branches and merging",
2116 actions: "Actions",
2117};
Merge branch 'worktree-agent-a3abfcce648e87dca'2118
Plan: the inbox, then channels and apps, instead of discussions2119/** Where the page is, as a trail of links: workspace / repository / section. */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2120function Breadcrumbs({
2121 pathname,
2122 missing,
2123 repo,
2124 workspace,
2125}: {
2126 pathname: string;
2127 missing?: boolean;
2128 repo?: ShellData["repo"];
2129 /** The workspace you are in: the switcher names it, so the trail starts after it. */
2130 workspace: string | null;
2131}) {
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2132 // A 404 names nothing from the address, unless the project is real and
2133 // visible and only something inside it is missing.
2134 const visibleRepo = /^\/([^/]+)\/([^/-][^/]*)(\/|$)/.exec(pathname);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2135 if (
2136 missing &&
2137 !(
2138 visibleRepo &&
2139 sameRepo(repo ?? null, {
2140 namespace: visibleRepo[1]!,
2141 name: visibleRepo[2]!,
2142 })
2143 )
2144 ) {
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2145 return <Here>Not found</Here>;
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2146 }
Plan: the inbox, then channels and apps, instead of discussions2147 const parts = pathname.split("/").filter(Boolean);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2148 const reserved = [
2149 "settings",
2150 "explore",
2151 "new",
2152 "search",
2153 "workspaces",
2154 "policies",
2155 "security",
2156 "support",
2157 "status",
2158 "invite",
2159 "notifications",
2160 ];
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2161 if (parts.length === 0) return <Here>Home</Here>;
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2162 // Your settings: Settings / Emails.
2163 if (parts[0] === "settings") {
2164 const page = accountSettingsPage(pathname);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2165 return (
2166 <Trail
2167 trail={[
2168 { label: "Settings", to: FIRST_SETTINGS_PAGE },
2169 ...(page
2170 ? [{ label: ACCOUNT_SETTINGS[page].title, to: `/settings/${page}` }]
2171 : []),
2172 ]}
2173 />
2174 );
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2175 }
Plan: the inbox, then channels and apps, instead of discussions2176 if (reserved.includes(parts[0]!)) {
2177 const words: Record<string, string> = {
2178 settings: "Account",
2179 explore: "Explore",
2180 new: "New project",
2181 search: "Search",
2182 workspaces: "New workspace",
Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look2183 policies: "Policies",
2184 security: "Security",
2185 support: "Support",
2186 status: "Status",
2187 invite: "Invite",
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2188 notifications: "Notifications",
Plan: the inbox, then channels and apps, instead of discussions2189 };
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2190 return <Here>{words[parts[0]!]}</Here>;
Plan: the inbox, then channels and apps, instead of discussions2191 }
Team plan, an open-source pool, monthly trials and honest metering; the sidebar for everyone; a workspace that stays put2192 // A person's profile, by their handle.
Chat controls, public profiles, shadcn selects, and no Docs tab in a project2193 if (parts[0] === "u" && parts[1]) return <ProfileCrumb username={parts[1]} />;
Plan: the inbox, then channels and apps, instead of discussions2194 const [owner, second, third, fourth] = parts;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2195 const ours =
2196 workspace != null && owner!.toLowerCase() === workspace.toLowerCase();
2197 const trail: Crumb[] = ours
2198 ? []
2199 : [{ label: owner!, to: `/${owner}`, mono: true }];
Plan: the inbox, then channels and apps, instead of discussions2200 if (second === "-") {
2201 const page = `/${owner}/-/${third}`;
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.2202 if (third === "settings" && fourth === "chat") {
2203 // Chat settings is a page of its own, not one of General's.
2204 trail.push({ label: "Chat settings", to: `${page}/chat` });
2205 } else if (third) {
2206 // The workspace's settings pages each stand alone: General, Members, Permissions.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2207 trail.push({
2208 label: third === "settings" ? "General" : (SECTIONS[third] ?? third),
2209 to: page,
2210 });
Merge branch 'worktree-agent-a432a6fe93007b723' into customize2211 // Customize names its tab (Customize / Plugins), Agents its templates, and Members its invitations.
The Marketplace adds what g1t doesn't do and connects what you already use: extensions (Mail, Support, CRM, Recruiting, On-call, and bridges to a helpdesk, CRM or ERP you run, all Soon), starter kits, and integrations connected by the workspace or by each person; agents aren't installed there. Agent templates live in Agents, as starting points you configure, at Agents → Templates, and the Marketplace's old agent addresses lead there. The marketplace and agents guides say how.2212 const tabs: Record<string, string> =
Merge branch 'worktree-agent-a432a6fe93007b723' into customize2213 third === "customize"
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2214 ? {
Merge branch 'worktree-agent-a432a6fe93007b723' into customize2215 skills: "Skills",
2216 connectors: "Connectors",
2217 plugins: "Plugins",
2218 marketplaces: "Marketplaces",
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2219 requests: "Requests",
2220 }
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.2221 : third === "agents"
2222 ? { templates: "Templates" }
2223 : third === "members"
2224 ? { invitations: "Invitations" }
2225 : {};
The Marketplace adds what g1t doesn't do and connects what you already use: extensions (Mail, Support, CRM, Recruiting, On-call, and bridges to a helpdesk, CRM or ERP you run, all Soon), starter kits, and integrations connected by the workspace or by each person; agents aren't installed there. Agent templates live in Agents, as starting points you configure, at Agents → Templates, and the Marketplace's old agent addresses lead there. The marketplace and agents guides say how.2226 const tab = fourth ? tabs[fourth] : undefined;
The Marketplace is where a workspace finds what to add, reached from Apps: the agent catalog of roles with who already does each job and Add to workspace; every integration with whether it's connected; g1t's own extensions, listed as Soon; and requests, where members ask and owners add or turn down, each told by a notification. Underneath, an extension is a manifest (publisher and tier, source and version from a tag, scopes, the domains its data goes to, its page on g1tusercontent.com, no price) and an install pins its version with an off switch, a budget and the audit log. Apps lists only what was added from the Marketplace, with pins; g1t's own pages stay in their sidebars, and AI Gateway joins Workspace's. The marketplace guide says how.2227 if (tab) trail.push({ label: tab, to: `${page}/${fourth}` });
2228 }
Plan: the inbox, then channels and apps, instead of discussions2229 } else if (second) {
2230 const repo = `/${owner}/${second}`;
2231 trail.push({ label: second, to: repo, mono: true });
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2232 if (third === "pull" && fourth)
2233 trail.push({
2234 label: `Pull request #${fourth}`,
2235 short: `#${fourth}`,
2236 to: `${repo}/pull/${fourth}`,
2237 });
2238 else if (third === "issues" && fourth && fourth !== "new")
2239 trail.push({
2240 label: `Issue #${fourth}`,
2241 short: `#${fourth}`,
2242 to: `${repo}/issues/${fourth}`,
2243 });
2244 else if (third === "commit" && fourth)
2245 trail.push({
2246 label: fourth.slice(0, 7),
2247 to: `${repo}/commit/${fourth}`,
2248 mono: true,
2249 });
Plan: the inbox, then channels and apps, instead of discussions2250 else if (third && SECTIONS[third]) {
2251 trail.push({ label: SECTIONS[third]!, to: `${repo}/${third}` });
2252 // A settings page names which one: Settings / Secrets and variables.
2253 if (third === "settings" && fourth && SECTIONS[fourth]) {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2254 trail.push({
2255 label: SETTINGS_SECTIONS[fourth] ?? SECTIONS[fourth]!,
2256 to: `${repo}/settings/${fourth}`,
2257 });
Plan: the inbox, then channels and apps, instead of discussions2258 }
2259 }
2260 }
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2261 if (trail.length === 0) trail.push({ label: "Overview", to: `/${owner}` });
Usage, Billing settings and prepaid AI credit; fixes from the UX audit2262 return <Trail trail={trail} />;
2263}
2264
Chat controls, public profiles, shadcn selects, and no Docs tab in a project2265/** A profile's place in the top bar: the person's avatar and @handle, from the page once it has loaded. */
2266function ProfileCrumb({ username }: { username: string }) {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2267 const page = useRouteLoaderData("routes/user") as
2268 | {
2269 profile?: {
2270 username: string;
2271 displayUsername?: string | null;
2272 avatar: string | null;
2273 };
2274 }
2275 | undefined;
2276 const profile =
2277 page?.profile?.username.toLowerCase() === username.toLowerCase()
2278 ? page.profile
2279 : null;
Chat controls, public profiles, shadcn selects, and no Docs tab in a project2280 return (
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2281 <Breadcrumb className="min-w-0">
2282 <BreadcrumbList>
2283 <BreadcrumbItem>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2284 <BreadcrumbPage
2285 asChild
2286 className="flex items-center gap-2 hover:bg-raised"
2287 >
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2288 <Link to={`/u/${profile?.username ?? username}`}>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2289 <Avatar
2290 name={profile?.username ?? username}
2291 image={profile?.avatar ?? null}
2292 size={20}
2293 />
2294 <span className="truncate font-mono text-[0.8125rem]">
2295 @{profile ? shownUsername(profile) : username}
2296 </span>
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2297 </Link>
2298 </BreadcrumbPage>
2299 </BreadcrumbItem>
2300 </BreadcrumbList>
2301 </Breadcrumb>
2302 );
2303}
2304
2305/** A page with no trail to it, such as Today or Search: its name alone. */
2306function Here({ children }: { children: ReactNode }) {
2307 return (
2308 <Breadcrumb className="min-w-0">
2309 <BreadcrumbList>
2310 <BreadcrumbItem>
2311 <BreadcrumbPage>{children}</BreadcrumbPage>
2312 </BreadcrumbItem>
2313 </BreadcrumbList>
2314 </Breadcrumb>
Chat controls, public profiles, shadcn selects, and no Docs tab in a project2315 );
2316}
2317
Usage, Billing settings and prepaid AI credit; fixes from the UX audit2318/** One link of the trail; `short` is what a phone shows when it is the page itself. */
2319type Crumb = { label: string; to: string; mono?: boolean; short?: string };
2320
2321/**
2322 * The trail of links. On a phone there is room for one: the page itself,
2323 * with a way back to where it sits; the whole trail from a wider screen up.
2324 */
2325function Trail({ trail }: { trail: Crumb[] }) {
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2326 // Up on a phone, unless up is the workspace itself: its pages are the tabs.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2327 const up =
2328 trail.length > 1 && !/^\/[^/]+$/.test(trail[trail.length - 2]!.to)
2329 ? trail[trail.length - 2]!
2330 : null;
Plan: the inbox, then channels and apps, instead of discussions2331 return (
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2332 <Breadcrumb className="flex min-w-0 items-center">
Usage, Billing settings and prepaid AI credit; fixes from the UX audit2333 {up && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2334 <Button
2335 asChild
2336 variant="ghost"
2337 size="icon-bar"
2338 className="-ml-1 sm:hidden"
2339 >
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2340 <Link to={up.to} prefetch="intent" aria-label={`Back to ${up.label}`}>
2341 <ChevronLeft size={16} />
2342 </Link>
2343 </Button>
Usage, Billing settings and prepaid AI credit; fixes from the UX audit2344 )}
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2345 <BreadcrumbList>
2346 {trail.map((crumb, index) => {
2347 const last = index === trail.length - 1;
2348 const label =
2349 last && crumb.short ? (
2350 <>
2351 <span className="sm:hidden">{crumb.short}</span>
2352 <span className="hidden sm:inline">{crumb.label}</span>
2353 </>
2354 ) : (
2355 crumb.label
2356 );
2357 const mono = crumb.mono ? "font-mono text-[0.8125rem]" : "";
2358 return (
2359 <Fragment key={index}>
2360 {index > 0 && <BreadcrumbSeparator className="max-sm:hidden" />}
2361 <BreadcrumbItem className={last ? "" : "max-sm:hidden"}>
2362 {last ? (
2363 // The page you are on is still a link: to its own top, as the trail always was.
2364 <BreadcrumbPage asChild className={`hover:bg-raised ${mono}`}>
2365 <Link to={crumb.to} prefetch="intent">
2366 {label}
2367 </Link>
2368 </BreadcrumbPage>
2369 ) : (
2370 <BreadcrumbLink asChild className={mono}>
2371 <Link to={crumb.to} prefetch="intent">
2372 {label}
2373 </Link>
2374 </BreadcrumbLink>
2375 )}
2376 </BreadcrumbItem>
2377 </Fragment>
2378 );
2379 })}
2380 </BreadcrumbList>
2381 </Breadcrumb>
Plan: the inbox, then channels and apps, instead of discussions2382 );
2383}
2384
Search across all of g1t, Explore, and a command palette2385type Command = PaletteCommand;
Plan: the inbox, then channels and apps, instead of discussions2386
2387/** Everything the palette can jump to, from what the sidebar already knows. */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2388function commandsFor(user: User, shell: ShellData): Command[] {
2389 const ws = shell.workspace;
Plan: the inbox, then channels and apps, instead of discussions2390 const commands: Command[] = [
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2391 ...(ws
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2392 ? [
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2393 {
2394 label: "Home",
2395 to: homePagePath(ws.slug),
2396 icon: <House size={15} />,
2397 },
2398 {
2399 label: "Chat",
2400 to: `/${ws.slug}/-/chat`,
2401 icon: <MessagesSquare size={15} />,
2402 },
2403 {
2404 label: "Agents",
2405 to: `/${ws.slug}/-/agents`,
2406 icon: <Sparkles size={15} />,
2407 },
2408 ...(hasCodeAccess(ws)
2409 ? [
2410 {
2411 label: "Code overview",
2412 to: `/${ws.slug}/-/overview`,
2413 icon: <Code2 size={15} />,
2414 },
2415 ]
2416 : []),
2417 {
2418 label: "Artifacts",
2419 to: `/${ws.slug}/-/artifacts`,
2420 icon: <Shapes size={15} />,
2421 },
2422 {
2423 label: "Apps",
2424 hint: "Everything installed that you can use",
2425 to: `/${ws.slug}/-/apps`,
2426 icon: <LayoutGrid size={15} />,
2427 },
2428 {
Merge branch 'worktree-agent-a432a6fe93007b723' into customize2429 label: "Customize",
2430 hint: "Skills, connectors and plugins",
2431 to: `/${ws.slug}/-/customize`,
2432 icon: <SlidersHorizontal size={15} />,
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2433 },
2434 {
2435 label: "Agent templates",
2436 hint: "Starting points for a new agent",
2437 to: `/${ws.slug}/-/agents/templates`,
2438 icon: <Bot size={15} />,
2439 },
2440 {
2441 label: "Workspace",
2442 hint: "Billing, policies, settings",
2443 to: `/${ws.slug}/-/workspace`,
2444 icon: <Building2 size={15} />,
2445 },
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2446 ]
2447 : []),
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2448 {
2449 label: "Explore repositories",
2450 to: "/explore",
2451 icon: <Compass size={15} />,
2452 },
2453 {
2454 label: "Search g1t",
2455 hint: "Repositories, code, issues, people",
2456 to: "/search",
2457 icon: <Search size={15} />,
2458 },
2459 {
2460 label: "Notifications",
2461 hint: "What needs you",
2462 to: "/notifications",
2463 icon: <Bell size={15} />,
2464 },
Plan: the inbox, then channels and apps, instead of discussions2465 { label: "New project", to: "/new", icon: <Plus size={15} /> },
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2466 {
2467 label: "Your settings",
2468 to: FIRST_SETTINGS_PAGE,
2469 icon: <Settings size={15} />,
2470 },
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2471 ...(Object.keys(ACCOUNT_SETTINGS) as AccountSettingsPage[])
2472 .filter((page) => page !== "profile")
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2473 .map((page) => ({
2474 label: ACCOUNT_SETTINGS[page].title,
2475 hint: "Your settings",
2476 to: `/settings/${page}`,
2477 icon: <Settings size={15} />,
2478 })),
You choose how g1t looks: Auto follows your system, Light and Dark stay put, set from the account menu, the phone's You and help sheet, Settings → Account or the command palette; the page is drawn in your choice from the first byte, every colour has a light value that reads at 4.5:1 or better, code and diffs are highlighted for both, diagrams and the document editor follow along, the product tour and the g1t mark's avatar stay dark, and Dark is what you see until you choose; the workspaces guide says how.2479 ...THEME_COMMANDS,
Plan: the inbox, then channels and apps, instead of discussions2480 ];
2481 const repo = shell.repo;
2482 if (repo) {
2483 const base = `/${repo.namespace}/${repo.name}`;
2484 const name = `${repo.namespace}/${repo.name}`;
2485 commands.unshift(
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2486 {
2487 label: "Overview",
2488 hint: name,
2489 to: base,
2490 icon: <LayoutGrid size={15} />,
2491 },
2492 {
2493 label: "Code",
2494 hint: name,
2495 to: `${base}/code`,
2496 icon: <Code2 size={15} />,
2497 },
2498 {
2499 label: "Issues",
2500 hint: name,
2501 to: `${base}/issues`,
2502 icon: <CircleDot size={15} />,
2503 },
2504 {
2505 label: "New issue",
2506 hint: name,
2507 to: `${base}/issues/new`,
2508 icon: <Plus size={15} />,
2509 },
Thirteen MCP tools and classic token scopes; agents rate their confidence and can be put on an issue in one step2510 ...(repo.member
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2511 ? [
2512 {
2513 label: `Put an agent on ${repo.name}`,
2514 hint: name,
2515 to: `${base}/issues/new?agent=1`,
2516 icon: <Sparkles size={15} />,
2517 },
2518 ]
Thirteen MCP tools and classic token scopes; agents rate their confidence and can be put on an issue in one step2519 : []),
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2520 {
2521 label: "Pull requests",
2522 hint: name,
2523 to: `${base}/pulls`,
2524 icon: <GitPullRequest size={15} />,
2525 },
2526 {
2527 label: "Commits",
2528 hint: name,
2529 to: `${base}/commits`,
2530 icon: <History size={15} />,
2531 },
Plan: the inbox, then channels and apps, instead of discussions2532 ...(repo.member
2533 ? [
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2534 {
2535 label: "Plan work",
2536 hint: name,
2537 to: `${base}/plans`,
2538 icon: <ListTree size={15} />,
2539 },
2540 {
2541 label: "Deployments",
2542 hint: name,
2543 to: `${base}/deployments`,
2544 icon: <Rocket size={15} />,
2545 },
2546 {
2547 label: "Secrets and variables",
2548 hint: name,
2549 to: `${base}/settings/secrets`,
2550 icon: <Lock size={15} />,
2551 },
2552 {
2553 label: "Project settings",
2554 hint: name,
2555 to: `${base}/settings`,
2556 icon: <Settings size={15} />,
2557 },
2558 {
2559 label: "Repository settings",
2560 hint: name,
2561 to: `${base}/settings/repository`,
2562 icon: <Settings size={15} />,
2563 },
Plan: the inbox, then channels and apps, instead of discussions2564 ]
2565 : []),
2566 );
2567 }
2568 for (const membership of user.workspaces ?? []) {
2569 commands.push(
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2570 {
2571 label: displayName(membership),
2572 hint: `Workspace · ${membership.slug}`,
2573 to: `/${membership.slug}`,
2574 icon: (
2575 <Avatar
2576 name={membership.slug}
2577 image={membership.avatar}
2578 size={15}
2579 square
2580 />
2581 ),
2582 },
2583 {
2584 label: "All projects",
2585 hint: membership.slug,
2586 to: `/${membership.slug}/-/projects`,
2587 icon: <LayoutGrid size={15} />,
2588 },
2589 {
2590 label: "People",
2591 hint: membership.slug,
2592 to: `/${membership.slug}/-/people`,
2593 icon: <Users size={15} />,
2594 },
2595 {
2596 label: "Spend",
2597 hint: `${membership.slug} · Budgets and receipts`,
2598 to: `/${membership.slug}/-/spend`,
2599 icon: <Coins size={15} />,
2600 },
2601 {
2602 label: "Usage",
2603 hint: membership.slug,
2604 to: `/${membership.slug}/-/usage`,
2605 icon: <BarChart3 size={15} />,
2606 },
2607 {
2608 label: "AI Gateway",
2609 hint: `${membership.slug} · Usage`,
2610 to: `/${membership.slug}/-/gateway`,
2611 icon: <Network size={15} />,
2612 },
2613 {
2614 label: "Billing and plans",
2615 hint: `${membership.slug} · Settings`,
2616 to: `/${membership.slug}/-/billing`,
2617 icon: <CreditCard size={15} />,
2618 },
2619 {
2620 label: "Access tokens",
2621 hint: `${membership.slug} · Settings`,
2622 to: `/${membership.slug}/-/tokens`,
2623 icon: <KeyRound size={15} />,
2624 },
2625 {
2626 label: "Integrations",
2627 hint: membership.slug,
2628 to: `/${membership.slug}/-/integrations`,
2629 icon: <Plug size={15} />,
2630 },
2631 {
2632 label: "Members",
2633 hint: `${membership.slug} · Access`,
2634 to: `/${membership.slug}/-/members`,
2635 icon: <Users size={15} />,
2636 },
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.2637 ...(membership.role === "owner"
2638 ? [
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2639 {
2640 label: "Invitations",
2641 hint: `${membership.slug} · Access`,
2642 to: `/${membership.slug}/-/members/invitations`,
2643 icon: <Mail size={15} />,
2644 },
2645 {
2646 label: "Permissions",
2647 hint: `${membership.slug} · Access`,
2648 to: `/${membership.slug}/-/permissions`,
2649 icon: <ShieldCheck size={15} />,
2650 },
Workspace is the workspace's settings, in one place. Its sidebar is grouped, General, Access, Money, Compute, Code, Agents, Chat, Artifacts, Security and Integrations, every page one click away with no settings inside settings, the groups folding and the owner-only pages hidden from members; what is not here yet is marked Soon with a hint. Members is a list with search and filters for role, two-factor and team, and Invite opens a dialog: who, by username, name or email, their role and a note that goes into the invitation; nothing is filled in inline any more. Invitations is its own page with All, Pending, Accepted, Declined, Expired and Revoked filters that say how many, and each row's menu can copy the link, send it again or revoke it; identity learned to send an invitation again and to carry the note. Permissions gathers every rule about who may do what, by part: Code's base permission and member privileges, who creates teams, who creates channels, and, marked Soon with what applies today, forking private repositories, adding agents to conversations, messaging agents directly, creating spaces and default sharing, creating workspace agents and raising budgets, deploying to production and publishing packages. General lost what moved. The permissions guide is new, and the workspaces, people and teams, access, chat, teams, authentication and billing guides say where things are now.2651 ]
2652 : []),
Plan: the inbox, then channels and apps, instead of discussions2653 );
2654 }
2655 for (const listed of shell.repos) {
2656 commands.push({
2657 label: listed.title ?? listed.name,
2658 hint: `${listed.namespace} · Project`,
2659 to: `/${listed.namespace}/${listed.name}`,
2660 icon: <Box size={15} />,
2661 });
2662 }
Thirteen MCP tools and classic token scopes; agents rate their confidence and can be put on an issue in one step2663 // "Put an agent on …": one per project, after the projects themselves.
2664 for (const listed of shell.repos) {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2665 if (
2666 repo &&
2667 listed.namespace === repo.namespace &&
2668 listed.name === repo.name
2669 )
2670 continue;
Thirteen MCP tools and classic token scopes; agents rate their confidence and can be put on an issue in one step2671 commands.push({
2672 label: `Put an agent on ${listed.title ?? listed.name}`,
2673 hint: `${listed.namespace}/${listed.name}`,
2674 to: `/${listed.namespace}/${listed.name}/issues/new?agent=1`,
2675 icon: <Sparkles size={15} />,
2676 });
2677 }
Plan: the inbox, then channels and apps, instead of discussions2678 return commands;
2679}
2680
2681/**
Merge branch 'worktree-agent-aca4790ea223aa235'2682 * The page while the next one loads: after a moment it dims, under the
2683 * bar below, so it is plainly on its way out rather than frozen, and the
2684 * next page fades up from there. Sending a form does not dim it: the
2685 * form's button says it is working. Spread on the element holding the page.
2686 */
2687export function useLeaving() {
2688 const navigation = useNavigation();
2689 const method = navigation.formMethod?.toUpperCase();
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2690 const leaving =
2691 navigation.state === "loading" && (method == null || method === "GET");
Merge branch 'worktree-agent-aca4790ea223aa235'2692 return {
2693 "aria-busy": leaving || undefined,
2694 className: `transition-opacity motion-reduce:transition-none ${leaving ? "opacity-60 delay-200 duration-300" : "duration-150"}`,
2695 };
2696}
2697
2698/**
Plan: the inbox, then channels and apps, instead of discussions2699 * A bar across the top of the page while the next one loads, as GitHub
2700 * has: it appears at once, creeps towards the end while waiting, then fills
2701 * and fades when the page arrives.
2702 */
2703export function Progress() {
2704 const navigation = useNavigation();
2705 const busy = navigation.state !== "idle";
2706 const [width, setWidth] = useState(0);
2707 const [visible, setVisible] = useState(false);
2708 useEffect(() => {
2709 if (busy) {
2710 setVisible(true);
2711 setWidth(12);
2712 // Slows as it goes, never quite arriving until the page does.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2713 const timer = setInterval(
2714 () => setWidth((now) => now + (90 - now) * 0.12),
2715 200,
2716 );
Plan: the inbox, then channels and apps, instead of discussions2717 return () => clearInterval(timer);
2718 }
2719 setWidth((now) => (now > 0 ? 100 : 0));
2720 const fade = setTimeout(() => setVisible(false), 250);
2721 const reset = setTimeout(() => setWidth(0), 550);
2722 return () => {
2723 clearTimeout(fade);
2724 clearTimeout(reset);
2725 };
2726 }, [busy]);
2727 return (
2728 <div
2729 aria-hidden="true"
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2730 className={`pointer-events-none fixed inset-x-0 top-0 z-60 h-0.75 transition-opacity duration-300 ${
Plan: the inbox, then channels and apps, instead of discussions2731 visible ? "opacity-100" : "opacity-0"
2732 }`}
2733 >
2734 <div
2735 className="h-full bg-accent shadow-[0_0_10px_var(--color-accent)] transition-[width] duration-200 ease-out"
2736 style={{ width: `${width}%` }}
2737 />
2738 </div>
2739 );
2740}
2741
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2742/**
2743 * The top bar's way to g1t: the direct message with the workspace's
2744 * orchestrator, opened or made. The one tinted control in the bar: the
2745 * lavender pixel 1 bare beside its words, on a wash of the accent.
2746 */
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2747function AskG1tButton({ slug }: { slug: string }) {
2748 return (
2749 <Hint label="Ask g1t">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2750 <Button
2751 asChild
2752 variant="soft"
2753 size="bar"
2754 className="gap-2 max-md:ring-0 lg:px-3"
2755 >
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2756 <Link to={`/${slug}/-/chat?agent=g1t`} aria-label="Ask g1t">
2757 <MarkGlyph className="h-3.5" />
2758 <span className="max-lg:hidden">Ask g1t</span>
2759 </Link>
2760 </Button>
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2761 </Hint>
2762 );
2763}
2764
Plan: the inbox, then channels and apps, instead of discussions2765/**
The front page is Home: where you're needed comes first, however long ago it started, with what's at stake and how long it has waited; then what happened since you were last here, in words, with the agent work that settled, what landed, what deployed, what was decided and what was spent, switchable to the last 24 hours or 7 days; then what's running now. Your last visit is kept with your account, so it's the same on every device; Today's old address leads here. The home guide says how.2766 * Which sidebar sits beside the page: each mode's own, or none. Home and
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2767 * Apps are pages at full width, and so are g1t's public pages, such as a
2768 * profile, which are no workspace's. Without a workspace, only your own
2769 * settings and Notifications have one.
Chat and workspace agents: channels, DMs and named agents you talk to2770 */
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2771function sidebarFor(mode: ModeKey, workspace: boolean): Panel | null {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2772 if (!workspace)
2773 return mode === "account" || mode === "notifications" ? mode : null;
The front page is Home: where you're needed comes first, however long ago it started, with what's at stake and how long it has waited; then what happened since you were last here, in words, with the agent work that settled, what landed, what deployed, what was decided and what was spent, switchable to the last 24 hours or 7 days; then what's running now. Your last visit is kept with your account, so it's the same on every device; Today's old address leads here. The home guide says how.2774 if (mode === "home" || mode === "apps" || mode === "site") return null;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2775 return mode;
Chat and workspace agents: channels, DMs and named agents you talk to2776}
2777
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2778/** The sidebars that sit beside the page, one per mode that has one. */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2779type Panel =
2780 | "chat"
2781 | "artifacts"
2782 | "agents"
2783 | "code"
2784 | "notifications"
2785 | "people"
2786 | "workspace"
2787 | "account";
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2788
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2789/** Each sidebar's name, for the button that opens it on a phone. */
Phones reach every page: each mode's menu from the top bar or by tapping the tab you're on, Docs first in the avatar sheet, a project's pages as a swipeable strip; dialogs as bottom sheets above the keyboard, safe areas, menus kept on screen, 40px targets, touch-visible controls, save bars above the tab bar2790const MODE_MENU: Record<Panel, string> = {
2791 chat: "Chat",
Artifacts is a mode in the rail, the shell and the phone's tab bar in place of Docs: its home lists everything you can open by day or as cards under All, Yours and Shared with you, with search, filters and tiles to start a doc (slides, designs and dashboards say they are coming soon), and its sidebar holds favorites, spaces, Private, Shared, projects' docs and the trash.2792 artifacts: "Artifacts",
Phones reach every page: each mode's menu from the top bar or by tapping the tab you're on, Docs first in the avatar sheet, a project's pages as a swipeable strip; dialogs as bottom sheets above the keyboard, safe areas, menus kept on screen, 40px targets, touch-visible controls, save bars above the tab bar2793 agents: "Agents",
2794 code: "Code",
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2795 notifications: "Notifications",
2796 people: "People",
Phones reach every page: each mode's menu from the top bar or by tapping the tab you're on, Docs first in the avatar sheet, a project's pages as a swipeable strip; dialogs as bottom sheets above the keyboard, safe areas, menus kept on screen, 40px targets, touch-visible controls, save bars above the tab bar2797 workspace: "Workspace",
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2798 account: "Your account",
Phones reach every page: each mode's menu from the top bar or by tapping the tab you're on, Docs first in the avatar sheet, a project's pages as a swipeable strip; dialogs as bottom sheets above the keyboard, safe areas, menus kept on screen, 40px targets, touch-visible controls, save bars above the tab bar2799};
2800
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2801/** Whether a key press happened in something you type into, where Ctrl B is the editor's. */
2802function typing(target: EventTarget | null): boolean {
2803 if (!(target instanceof HTMLElement)) return false;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2804 return (
2805 target.isContentEditable ||
2806 target.closest(
2807 "input, textarea, select, [contenteditable=''], [contenteditable='true'], [role='textbox']",
2808 ) != null
2809 );
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2810}
2811
2812/** Ctrl B (⌘B on a Mac) shows or hides the sidebar, except while typing. */
2813function useSidebarShortcut(toggle: () => void) {
2814 useEffect(() => {
2815 const onKey = (event: KeyboardEvent) => {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2816 if (
2817 event.key.toLowerCase() !== "b" ||
2818 event.altKey ||
2819 event.shiftKey ||
2820 !(event.ctrlKey || event.metaKey)
2821 )
2822 return;
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2823 if (event.defaultPrevented || typing(event.target)) return;
2824 event.preventDefault();
2825 toggle();
2826 };
2827 window.addEventListener("keydown", onKey);
2828 return () => window.removeEventListener("keydown", onKey);
2829 }, [toggle]);
2830}
2831
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2832/**
2833 * Search or jump to: the command palette. On a computer it looks like the
2834 * field it opens, with its shortcut; on a phone, a magnifier.
2835 */
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2836function SearchButton({
2837 onClick,
2838 place,
2839}: {
2840 onClick: () => void;
2841 place: "bar" | "sidebar";
2842}) {
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2843 const field = (
2844 <Button
2845 variant="outline"
2846 size="sm"
2847 aria-label="Search or jump to"
2848 onClick={onClick}
2849 className={
2850 place === "sidebar"
2851 ? "w-full justify-start bg-bg font-normal text-faint hover:bg-bg hover:text-muted"
2852 : "mr-1 w-[min(18rem,26vw)] justify-start bg-surface font-normal text-faint hover:bg-surface hover:text-muted max-md:hidden"
2853 }
2854 >
2855 <Search size={15} />
2856 <span className="grow truncate text-left">Search or jump to</span>
2857 <PaletteKey className="px-1.5 text-[0.625rem] leading-4 text-muted" />
2858 </Button>
2859 );
2860 if (place === "sidebar") return field;
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2861 return (
2862 <>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2863 <Button
2864 variant="ghost"
2865 size="icon-bar"
2866 aria-label="Search or jump to"
2867 onClick={onClick}
2868 className="md:hidden"
2869 >
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2870 <Search size={18} />
2871 </Button>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2872 {field}
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.2873 </>
2874 );
2875}
2876
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2877/** The sidebar's shortcut, for the hint on its toggle. */
2878function useSidebarKey(): string {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2879 return sidebarKeyLabel(
2880 typeof navigator === "undefined" ? null : navigator.platform,
2881 );
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2882}
2883
Chat and workspace agents: channels, DMs and named agents you talk to2884/**
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2885 * The app: three surfaces that never blur together. The rail, a narrow
2886 * column of icons down the window's left edge; the mode's sidebar, flat
2887 * against it with a hairline between, which folds away with Ctrl B and is
The page sits flat against the sidebar. On a computer it fills the rest of the window with no inset, no rounded corners and no frame around it, and its top bar always draws the line under itself, so a page's own header, a conversation's or a project's, sits beneath it as its own band instead of merging with it; the scroll watcher that used to decide when the line appeared is gone. A phone keeps its rounded panel above the bottom bar. The workspaces guide says so.2888 * a drawer below 1024px; and the page, flat against the sidebar and
2889 * filling the rest of the window, with its top bar across the top and a
2890 * line under it: the sidebar's toggle, where you are, search, Ask g1t and
2891 * Create new. On a phone the rail is a bar along the bottom and the page
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)2892 * fills the window above it, flat as well. Only for someone signed in; without a workspace yet, there
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.2893 * is no rail. The rail and the sidebar are drawn from the sidebar kit
2894 * (components/ui/sidebar.tsx): one provider holds whether the sidebar is
2895 * open on a computer and whether the drawer is.
Plan: the inbox, then channels and apps, instead of discussions2896 */
2897export function AppShell({
2898 user,
2899 shell,
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2900 missing = false,
Plan: the inbox, then channels and apps, instead of discussions2901 banner,
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2902 sidebarClosed = false,
Plan: the inbox, then channels and apps, instead of discussions2903 children,
2904}: {
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2905 user: User;
Plan: the inbox, then channels and apps, instead of discussions2906 shell: ShellData;
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2907 /** The page is a 404 (see CodeSidebar). */
status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas2908 missing?: boolean;
Plan: the inbox, then channels and apps, instead of discussions2909 banner?: ReactNode;
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2910 /** Whether the person folded the sidebar away, as their cookie says. */
2911 sidebarClosed?: boolean;
Plan: the inbox, then channels and apps, instead of discussions2912 children: ReactNode;
2913}) {
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2914 const { pathname } = useLocation();
Plan: the inbox, then channels and apps, instead of discussions2915 const [drawer, setDrawer] = useState(false);
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2916 const [closed, setClosed] = useState(sidebarClosed);
Plan: the inbox, then channels and apps, instead of discussions2917 const [palette, setPalette] = useState(false);
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2918 const commands = useMemo(() => commandsFor(user, shell), [user, shell]);
Plan: the inbox, then channels and apps, instead of discussions2919
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2920 // A new page closes the drawer.
Plan: the inbox, then channels and apps, instead of discussions2921 useEffect(() => setDrawer(false), [pathname]);
Search across all of g1t, Explore, and a command palette2922 usePaletteShortcut(() => setPalette((open) => !open));
Merge branch 'worktree-agent-aca4790ea223aa235'2923 const leaving = useLeaving();
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2924 useVisualViewport();
Chat and workspace agents: channels, DMs and named agents you talk to2925 const going = useNavigation().location?.pathname;
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2926 const ws = shell.workspace;
2927 const mode = modeOf(going ?? pathname, ws?.slug ?? null);
2928 const panel = sidebarFor(mode, ws != null);
2929 const code = ws ? hasCodeAccess(ws) : false;
Chat and workspace agents: channels, DMs and named agents you talk to2930 const { sidebar: chatSidebar } = useChatSidebar();
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2931 // Notify: the feed socket's live counts (lib/notify-client.ts) once it has them; the page's until then.
2932 const live = useLiveBadges(ws?.slug);
2933 const chatUnread = chatSidebar
2934 ? unreadTotals(chatSidebar.entries)
2935 : live?.chat != null
2936 ? { unread: live.chat, mentions: live.mentions ?? 0 }
2937 : (shell.chat ?? { unread: 0, mentions: 0 });
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2938 const notificationsUnread = live?.inbox ?? shell.inbox?.unread ?? 0;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2939 const unread = {
2940 notifications: notificationsUnread,
2941 chat: chatUnread.unread,
2942 mentions: chatUnread.mentions,
2943 };
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2944
2945 // Folding the sidebar away on a computer is remembered, so the next page is drawn the same from the server.
2946 const toggleSidebar = useCallback(() => {
2947 if (!window.matchMedia("(min-width: 1024px)").matches) {
2948 setDrawer((open) => !open);
2949 return;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2950 }
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2951 setClosed((was) => {
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2952 document.cookie = sidebarCookie(
2953 !was,
2954 window.location.protocol === "https:",
2955 );
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2956 return !was;
2957 });
2958 }, []);
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2959 useSidebarShortcut(
2960 useCallback(() => {
2961 if (panel) toggleSidebar();
2962 }, [panel, toggleSidebar]),
2963 );
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2964
2965 const inline = panel != null && !closed;
2966 const sidebarNode = () => {
2967 if (!panel) return null;
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2968 if (!ws)
2969 return panel === "notifications" ? (
2970 <NotificationsSidebar counts={shell.inbox ?? null} />
2971 ) : (
2972 <AccountSidebar username={user.username} />
2973 );
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2974 switch (panel) {
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2975 case "code":
2976 return <CodeSidebar user={user} shell={shell} missing={missing} />;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2977 case "chat":
2978 return <ChatSidebar slug={ws.slug} />;
Artifacts is a mode in the rail, the shell and the phone's tab bar in place of Docs: its home lists everything you can open by day or as cards under All, Yours and Shared with you, with search, filters and tiles to start a doc (slides, designs and dashboards say they are coming soon), and its sidebar holds favorites, spaces, Private, Shared, projects' docs and the trash.2979 case "artifacts":
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2980 return <FoliosSidebar slug={ws.slug} />;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2981 case "agents":
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.2982 return (
2983 <AgentsSidebar
2984 slug={ws.slug}
2985 shellAgents={shell.agents ?? null}
2986 code={code}
2987 owner={ws.role === "owner"}
2988 />
2989 );
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2990 case "notifications":
2991 return <NotificationsSidebar counts={shell.inbox ?? null} />;
2992 case "people":
2993 return <PeopleSidebar slug={ws.slug} />;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2994 case "workspace":
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2995 return <WorkspaceSidebar slug={ws.slug} owner={ws.role === "owner"} />;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2996 case "account":
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.2997 return <AccountSidebar username={user.username} />;
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)2998 }
2999 };
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3000 const sidebarKey = useSidebarKey();
3001 // Search or jump to sits at the top of the sidebar, except in Chat and
3002 // Artifacts, whose sidebars search their own lists: there it stays in the bar.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3003 const sidebarSearch =
3004 panel != null && panel !== "chat" && panel !== "artifacts";
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3005 // The sidebar's head: the workspace and its switcher, the way to fold the
3006 // sidebar or close the drawer, and search, which opens the palette.
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3007 const sidebarTop = (inDrawer: boolean) => (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3008 <SidebarHeader className="gap-1 px-2 pt-0 pb-2">
3009 <div className="flex h-14 shrink-0 items-center gap-1">
3010 {ws ? (
3011 <WorkspaceSwitcher user={user} workspace={ws} />
3012 ) : (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3013 <Link
3014 to="/"
3015 aria-label="g1t"
3016 className="mr-auto flex h-9 items-center rounded-md px-2"
3017 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3018 <Logo className="text-[1.125rem]" />
3019 </Link>
3020 )}
3021 {inDrawer ? (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3022 <Button
3023 type="button"
3024 aria-label="Close menu"
3025 onClick={() => setDrawer(false)}
3026 variant="ghost"
3027 size="icon-sm"
3028 className="text-faint"
3029 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3030 <X size={16} />
3031 </Button>
3032 ) : (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3033 <SidebarTrigger
3034 hint={`Hide the sidebar (${sidebarKey})`}
3035 className="text-faint"
3036 />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3037 )}
3038 </div>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3039 {sidebarSearch && (
3040 <SearchButton place="sidebar" onClick={() => setPalette(true)} />
3041 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3042 </SidebarHeader>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3043 );
3044
3045 // On a phone (below 768px): the bottom bar, and a conversation full screen.
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)3046 const conversation = isConversation(going ?? pathname);
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3047 // Where the page panel starts: 8px past the rail (56px), or 8px past the sidebar (56 + 240px) when it is open.
The page sits flat against the sidebar. On a computer it fills the rest of the window with no inset, no rounded corners and no frame around it, and its top bar always draws the line under itself, so a page's own header, a conversation's or a project's, sits beneath it as its own band instead of merging with it; the scroll watcher that used to decide when the line appeared is gone. A phone keeps its rounded panel above the bottom bar. The workspaces guide says so.3048 // The page starts where the rail (3.5rem) and, open, the sidebar (15rem) end.
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3049 const pad = ws
3050 ? inline
3051 ? "md:pl-14 lg:pl-[18.5rem]"
3052 : "md:pl-14"
3053 : inline
3054 ? "lg:pl-[15rem]"
3055 : "";
Chat and workspace agents: channels, DMs and named agents you talk to3056
Plan: the inbox, then channels and apps, instead of discussions3057 return (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3058 <SidebarProvider
3059 open={!closed}
3060 onOpenChange={(open) => setClosed(!open)}
3061 openMobile={drawer}
3062 onOpenMobileChange={setDrawer}
3063 toggleSidebar={toggleSidebar}
3064 >
Plan: the inbox, then channels and apps, instead of discussions3065 <Progress />
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3066 {ws && (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3067 <div className="fixed inset-y-0 left-0 z-40 hidden md:block">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3068 <Rail
3069 workspace={ws}
3070 pins={shell.pins ?? []}
3071 unread={unread}
3072 account={<AccountMenu user={user} />}
3073 />
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3074 </div>
3075 )}
3076 {panel && (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3077 <Sidebar
3078 role="complementary"
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3079 aria-label={`${MODE_MENU[panel]} sidebar`}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3080 className={`fixed inset-y-0 z-40 max-lg:hidden ${ws ? "left-14" : "left-0"}`}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3081 >
3082 {sidebarTop(false)}
3083 <div className="min-h-0 grow">{sidebarNode()}</div>
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3084 </Sidebar>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3085 )}
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3086 {/* The drawer is a sheet: a dialog that holds focus, closes on Escape or
3087 a tap outside, and gives focus back to the button that opened it. */}
3088 {panel && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3089 <SidebarMobile
3090 title={`${MODE_MENU[panel]} menu`}
3091 className="pb-[env(safe-area-inset-bottom)] max-md:[&_nav_a]:min-h-10"
3092 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3093 {sidebarTop(true)}
3094 <div className="min-h-0 grow">{sidebarNode()}</div>
3095 </SidebarMobile>
3096 )}
Plan: the inbox, then channels and apps, instead of discussions3097
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)3098 <div className={`min-h-dvh pt-(--frame-top) pb-(--tabbar-h) ${pad}`}>
The page sits flat against the sidebar. On a computer it fills the rest of the window with no inset, no rounded corners and no frame around it, and its top bar always draws the line under itself, so a page's own header, a conversation's or a project's, sits beneath it as its own band instead of merging with it; the scroll watcher that used to decide when the line appeared is gone. A phone keeps its rounded panel above the bottom bar. The workspaces guide says so.3099 {/* The top bar always has its line, so a page's own header (data-page-head: a conversation's, a project's,
3100 a sticky one under an open artifact) sits under it as its own band. */}
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)3101 <div className="flex min-h-[calc(100dvh-var(--frame-top)-var(--tabbar-h))] min-w-0 flex-col bg-bg">
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3102 <header
The phone app: Chat in full with phone notifications, plus Code and Customize (#4)3103 className={`sticky top-(--frame-top) z-30 flex h-14 items-center gap-1 border-b border-line bg-bg pr-2 pl-2 sm:pr-3 ${inline ? "lg:pl-3.5" : ""} ${conversation ? "max-md:hidden" : ""}`}
Plan: the inbox, then channels and apps, instead of discussions3104 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3105 {panel && (
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3106 <SidebarTrigger
3107 hint={`Show the sidebar (${sidebarKey})`}
3108 aria-label={drawer ? "Hide the sidebar" : "Show the sidebar"}
3109 aria-expanded={drawer}
3110 className={`max-md:size-11 ${inline ? "lg:hidden" : ""}`}
3111 />
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3112 )}
3113 {ws && (
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3114 <span
3115 className={`flex min-w-0 shrink items-center gap-1.5 ${inline ? "lg:hidden" : ""}`}
3116 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3117 <WorkspaceSwitcher user={user} workspace={ws} compact />
3118 <span aria-hidden="true" className="text-line-strong">
3119 /
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)3120 </span>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3121 </span>
Inbox: a bell in the top bar opens it beside the page, and /inbox holds it all3122 )}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3123 <Breadcrumbs
3124 pathname={pathname}
3125 missing={missing}
3126 repo={shell.repo}
3127 workspace={ws?.slug ?? null}
3128 />
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.3129 {/* Search, then what's yours (spend, Ask g1t), then the bell and Create new: one height, one rhythm. */}
3130 <div className="ml-auto flex shrink-0 items-center gap-1 md:gap-1.5">
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3131 {/* With the sidebar open, search is at its top. */}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3132 <span
3133 className={`flex ${inline && sidebarSearch ? "lg:hidden" : ""}`}
3134 >
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3135 <SearchButton place="bar" onClick={() => setPalette(true)} />
3136 </span>
The Spend page says what a workspace spent, where it went and the budgets that hold it, in Workspace under Money: spent at price, agents' spend and the spend limit; by day; by agent, person, channel, model, kind of work and product; budgets from the workspace down to each person, agent and task, with what happens at 100%; the costliest tasks, each with a receipt of every session at the provider's price and what was charged; and how it's priced. Everyone sees what agents spent for them, and owners and billing managers the whole workspace; each person can have a monthly budget agents keep to, and the spend pill in the top bar shows your month or the workspace's against its limit. The spend guide says how.3137 {/* Your spend this month, or the workspace's for owners and billing managers; on a phone it is on Spend. */}
3138 {ws && (
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.3139 <span className="flex max-md:hidden">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3140 <SpendPill
3141 slug={ws.slug}
3142 mayWorkspace={
3143 ws.role === "owner" ||
3144 !!ws.org_roles?.includes("billing_manager")
3145 }
3146 />
The Spend page says what a workspace spent, where it went and the budgets that hold it, in Workspace under Money: spent at price, agents' spend and the spend limit; by day; by agent, person, channel, model, kind of work and product; budgets from the workspace down to each person, agent and task, with what happens at 100%; the costliest tasks, each with a receipt of every session at the provider's price and what was charged; and how it's priced. Everyone sees what agents spent for them, and owners and billing managers the whole workspace; each person can have a monthly budget agents keep to, and the spend pill in the top bar shows your month or the workspace's against its limit. The spend guide says how.3147 </span>
3148 )}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3149 {ws && <AskG1tButton slug={ws.slug} />}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3150 <Separator
3151 orientation="vertical"
3152 className="mx-1 data-[orientation=vertical]:h-5 max-md:hidden"
3153 />
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3154 {/* On a phone, Notifications is in the bottom bar. */}
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.3155 <span className="flex max-md:hidden">
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3156 <NotificationsBell
3157 counts={
3158 shell.inbox
3159 ? { ...shell.inbox, unread: notificationsUnread }
3160 : null
3161 }
3162 />
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3163 </span>
3164 <CreateMenu shell={shell} />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3165 {/* Without a workspace there is no rail: the account is here. */}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3166 {!ws && <AccountMenu user={user} side="bottom" />}
3167 </div>
3168 </header>
3169 {banner}
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3170 <main
3171 id="content"
3172 tabIndex={-1}
3173 {...leaving}
3174 className={`min-w-0 grow outline-none ${leaving.className}`}
3175 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3176 <InMain.Provider value={true}>{children}</InMain.Provider>
3177 </main>
3178 </div>
Plan: the inbox, then channels and apps, instead of discussions3179 </div>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3180 {ws && (
3181 <BottomBar
3182 user={user}
3183 workspace={ws}
3184 pins={shell.pins ?? []}
3185 unread={unread}
3186 onReselect={panel ? () => setDrawer(true) : undefined}
3187 />
3188 )}
3189 <CommandPalette
3190 open={palette}
3191 onOpenChange={setPalette}
3192 commands={commands}
3193 repo={shell.repo ? `${shell.repo.namespace}/${shell.repo.name}` : null}
3194 />
The left-hand navigation takes less room and reads at a glance. The dock becomes a rail: a 56-pixel column of icons with the g1t mark on top, the current app marked by a filled square, hover hints naming each with its shortcut, the apps you pinned in a scrolling band, and Apps, People, Workspace and your account at the foot. Each mode's sidebar sits flush against it, 240 pixels wide, opening on Search or jump to and listing its groups under small labels in 36-pixel rows; Ctrl B hides it and the page grows into the room. Every mode's list is built on the shadcn Sidebar now in the kit, so Workspace, Code, People, Notifications, account settings, Chat, Artifacts and Agents all share one frame; the phone keeps its bottom bar and drawer. The workspaces guide describes the rail, the sidebar and the page.3195 </SidebarProvider>
Plan: the inbox, then channels and apps, instead of discussions3196 );
3197}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3198
3199/** Create new: a project, an issue in the one you are in, a workspace or a team. */
3200function CreateMenu({ shell }: { shell: ShellData }) {
3201 return (
3202 <DropdownMenu>
3203 <Hint label="Create new">
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.3204 <DropdownMenuTrigger asChild>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3205 <Button
3206 variant="ghost"
3207 size="bar"
3208 aria-label="Create new"
3209 className="gap-0.5 px-1.5 text-fg/90"
3210 >
The top of every page is one surface: the breadcrumb, search, spend, Ask g1t, bell and + share one height, corners and spacing, Ask g1t is a plain tinted button with the g1t mark drawn on whole pixels, a page's own header sits directly under the bar at the same left edge, and every section, conversations and open artifacts included, draws the same rounded panel. Tables written in chat render as tables, and the site's file, checkbox, radio, number and date controls are the design system's. Button, Separator, Breadcrumb, Table and FileDrop join the shared components; the chat guide says how tables work.3211 <Plus size={17} className="max-md:size-5" />
3212 <ChevronDown size={12} className="text-faint max-md:hidden" />
3213 </Button>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3214 </DropdownMenuTrigger>
3215 </Hint>
3216 <DropdownMenuContent align="end" className="min-w-52">
3217 {shell.repo && (
3218 <>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3219 <DropdownMenuLabel className="truncate">
3220 In {shell.repo.name}
3221 </DropdownMenuLabel>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3222 <DropdownMenuItem asChild>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3223 <Link
3224 to={`/${shell.repo.namespace}/${shell.repo.name}/issues/new`}
3225 >
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3226 <CircleDot />
3227 New issue
3228 </Link>
3229 </DropdownMenuItem>
3230 {shell.repo.member && (
3231 <DropdownMenuItem asChild>
3232 <Link to={`/${shell.repo.namespace}/${shell.repo.name}/plans`}>
3233 <ListTree />
3234 Plan work
3235 </Link>
3236 </DropdownMenuItem>
3237 )}
3238 <DropdownMenuSeparator />
3239 </>
3240 )}
3241 <DropdownMenuItem asChild>
3242 <Link to="/new">
3243 <Box />
3244 New project
3245 </Link>
3246 </DropdownMenuItem>
3247 <DropdownMenuItem asChild>
3248 <Link to="/new/github">
3249 <GitBranch />
3250 Import from GitHub
3251 </Link>
3252 </DropdownMenuItem>
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3253 {/* A team in the workspace you are in, for whoever it lets create one. A new workspace is made from the workspace switcher in the rail. */}
3254 {shell.workspace && <DropdownMenuSeparator />}
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3255 {shell.workspace &&
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3256 (mayCreateTeams(
3257 shell.workspace.team_creation,
3258 shell.workspace.role,
3259 ) ? (
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3260 <DropdownMenuItem asChild>
3261 <Link to={`/${shell.workspace.slug}/-/teams/new`}>
3262 <UsersRound />
3263 New team
3264 </Link>
3265 </DropdownMenuItem>
3266 ) : (
3267 <DropdownMenuItem disabled>
3268 <UsersRound />
3269 New team
Customize replaces the Marketplace underneath: the agents service reads marketplaces, plugins, skills, subagents and MCP servers in the formats Claude Code reads, so public ones install on g1t as they are. A workspace starts with claude-plugins-official and anthropic-agent-skills and adds marketplaces by owner/repo, a repository here, a git address or a link to marketplace.json; installing a plugin (read from GitHub, from this g1t or from a zip, at a pinned commit) puts its skills in the library as plugin:skill, keeps its subagents as templates to hire from, and turns the remote servers of its .mcp.json into connectors. Connectors are MCP servers the workspace connects once, from the directory, a plugin or an address, signing in with the browser (OAuth with PKCE and dynamic client registration), a key, or not at all, their secrets sealed under CONNECTORS_KEY, and given to every agent, a team or one agent like skills; an agent's turn gets them beside its own servers, so levels, Ask-first cards and audit are unchanged. The linked skills repository is .claude/skills now (.g1t/skills still read). The old extension installs go; requests stay and name plugins, skills and connectors too. In the rail, Agents follows Code, and the top bar's + menu loses Put an agent on it and New workspace.3270 <span className="ml-auto pl-3 text-xs text-faint">
3271 Owners only
3272 </span>
g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them.3273 </DropdownMenuItem>
3274 ))}
3275 </DropdownMenuContent>
3276 </DropdownMenu>
3277 );
3278}

This file's history is long; its oldest lines are credited to the oldest commit read.