diff --git a/.claude/skills/openbot-screen-layout/SKILL.md b/.claude/skills/openbot-screen-layout/SKILL.md index 958b5a1204..e27a721a4f 100644 --- a/.claude/skills/openbot-screen-layout/SKILL.md +++ b/.claude/skills/openbot-screen-layout/SKILL.md @@ -51,8 +51,9 @@ PageShell the page: header (title, description, action, backButton) then PageEmpty what a section says when it has nothing to list ``` -`PageShell` takes a `width`: `prose` (`max-w-2xl`) is the default because configuration is mostly -reading, and a row of label-and-control has no business being wider than the sentence explaining it. +`PageShell` takes a `width`: `prose` (`max-w-3xl`, 720px here) is the default, and every +configuration screen uses it so no screen is wider than another. Sentences inside it are held to +`max-w-prose`, so the column has room for a label beside its control without stretching the text. `wide` (`max-w-5xl`) exists for one screen — `admin/audit.tsx`, because an audit log is a table to be scanned and prose width would wrap every row. It is not a licence for anything else to be wide. diff --git a/CHANGELOG.md b/CHANGELOG.md index 7582826b80..3baa354ed8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,31 @@ Newest first. `Unreleased` is what is on `main` and not yet tagged. request for an administrator to switch on a work app, grant it to a Bot, or connect a Shared app's team account is kept, with who answered it and when. It starts empty and nothing is backfilled. +### Every settings screen is the same, slightly wider column + +Settings, Admin, Connections, Capabilities and each Bot's pages share one column width, now 720px instead of 630px, so +no screen is wider than another and a row has room for its label beside its control. Sentences keep +their comfortable reading width inside it. The audit log stays wider, because it is a table. + +### Capabilities and Connections sit beside Bots in the sidebar + +The sidebar's Skills entry becomes two, below Bots: **Capabilities** (`/capabilities`), with Skills +(`/capabilities/skills`) and Memory (`/capabilities/memory`) as tabs under its title, Memory leaving +Settings; and **Connections** (`/connections`), the apps your Bots use as you, which leaves Settings +too. On the home page, Explore agents shows each Bot as a white card with its avatar on top, the same +card as elsewhere. The old +addresses — `/skills`, `/settings/connected-accounts` with any account beneath it, and +`/settings/memory` — redirect to the new ones, keeping `?connected=`, `?linked=` and a skill being +written or edited, so a consent begun before upgrading still lands on its page. OAuth, GitHub linking +and the Slack link confirmation now send people to `/connections`. + +Connections is one searchable list. Apps you connect, apps on your organisation's account (marked +"Team account") and your GitHub and Slack links are rows of the same kind, with those already in use +first, and each opens its own page. GitHub's page holds your link, the repositories whose events can +start a responsibility (formerly "GitHub events"), and a way to a Composio GitHub app where one is +enabled, so GitHub is listed once; linking GitHub now comes back to that page. The reset for what +you let shared Bots use moves to Settings → Approvals, as **Shared Bots**. + ### Each app on a Bot says whether you can use it, and you can ask an administrator for the rest A Bot's page now says, for every work app the Bot holds, what that app is for the person looking: diff --git a/README.md b/README.md index 7d5b936777..1d5891d817 100644 --- a/README.md +++ b/README.md @@ -193,14 +193,14 @@ Leave `EMBEDDED_POSTGRES` off and set `DATABASE_URL` to point at a database you | `/bots/:id/reach` | Continue a conversation with the Bot in Slack, Microsoft Teams, or by text message. | | `/bots/:id/memory` | Which connected apps feed the Bot facts, and its background research. | | `/bots/:id/approvals` | What the Bot may do without asking you first. | -| `/skills` | Create and enable personal skills. | +| `/connections` | Connect your apps so your Bots can work with them. | +| `/capabilities/skills` | Create and enable personal skills. | +| `/capabilities/memory` | What your Bots remember about you, and facts you tell them. | | `/routines` | See the routines that are standing, and stop one. | | `/settings` | User preferences. | -| `/settings/connected-accounts` | Connect your apps so your Bots can work with them. | | `/settings/passwords` | Logins you saved when signing a Bot in to a website. | | `/settings/notifications` | Where updates go, your devices, and recent deliveries. | | `/settings/approvals` | Whether your Bots ask before acting, and rules for every Bot. | -| `/settings/memory` | What your Bots remember about you, and facts you tell them. | | `/admin/credentials` | Store write-only encrypted credentials. | | `/admin/approvals` | Team approval settings, team rules, and shared account requests. | | `/admin/computers` | View, stop, and reset Bot computers. | diff --git a/app/src/components/agents/agent-card.tsx b/app/src/components/agents/agent-card.tsx index 74f2a8216c..67cc270a06 100644 --- a/app/src/components/agents/agent-card.tsx +++ b/app/src/components/agents/agent-card.tsx @@ -1,6 +1,5 @@ import { IconArrowRight } from "@tabler/icons-react"; import { Link } from "@tanstack/react-router"; -import Avatar from "boring-avatars"; import { AbstractAvatar } from "@/components/agents/abstract-avatar"; import { Button } from "@/components/ui/button"; import type { AgentProfile } from "@/lib/agents/queries"; @@ -10,21 +9,23 @@ export function AgentCard({ appearance = "compact", }: { agent: AgentProfile; - appearance?: "compact" | "artwork"; + appearance?: "compact" | "tile"; }) { - if (appearance === "artwork") { + if (appearance === "tile") { return ( -
-