Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
1169dcd
fix(ux): hide inspector and replace new bot sparkle icon
samjulien Oct 27, 2026
1bb3f73
fix(ux): simplify new bot details and visibility copy
samjulien Oct 27, 2026
9c194f3
fix(copy): use complete actionable descriptions across OpenBot
samjulien Oct 27, 2026
c5d077c
feat(ux): personalize profile on first run and in settings
samjulien Oct 27, 2026
5ab2854
feat(ux): simplify bot creation and polish welcome prompt
samjulien Oct 27, 2026
fa1aeef
feat(ux): add new bot action to conversation picker
samjulien Oct 27, 2026
4bff7f7
fix(ux): align bot header and move hosting choice last
samjulien Oct 27, 2026
2043af5
fix(ux): use default orb for new bot picker action
samjulien Oct 27, 2026
fab2ccb
fix(ux): advance when choosing a custom agent framework
samjulien Oct 27, 2026
046a7fa
fix(ux): describe new bot action in recipient picker
samjulien Oct 27, 2026
60b72b8
fix(ux): use consistent instructions label for all bots
samjulien Oct 27, 2026
a276f3f
fix(copy): remove period from new bot picker preview
samjulien Oct 27, 2026
a5ee8ce
fix(ux): show existing agent connection first
samjulien Oct 27, 2026
d7b2c77
fix(ux): advance custom agent choice after name validation
samjulien Oct 27, 2026
17fac0a
feat(ux): add restrained name personalization to conversations
samjulien Oct 27, 2026
8c5ea31
fix(copy): use a comma in the personalized greeting
samjulien Oct 27, 2026
3d4e04e
fix(ux): preserve refreshed names and deliver restraint guidance
samjulien Oct 27, 2026
a8ee519
test(ux): align IME regression with details-first bot flow
samjulien Oct 27, 2026
86a36ab
test(ag2): accept SDK bearer API key authentication
samjulien Oct 27, 2026
e88749d
merge: resolve current main conflicts and reduce import noise
samjulien Oct 28, 2026
047a1be
fix(ux): integrate onboarding and preserve recipient creation flow
samjulien Oct 28, 2026
9b4f11f
test(ux): verify built-in name context and polish review fixes
samjulien Oct 28, 2026
dadfd29
fix(ux): finish onboarding with name entry
samjulien Oct 28, 2026
e363c30
style(ux): format onboarding greeting assertion
samjulien Oct 28, 2026
0d3f7fe
test: align browser and provider checks with runtime dependencies
samjulien Oct 28, 2026
6b8ee9b
fix(ux): simplify bot creation actions
samjulien Oct 28, 2026
e83a467
test(ux): drain React work before recipient test teardown
samjulien Oct 28, 2026
811187e
feat(onboarding): consolidate introduction into a looping animation (…
samjulien Oct 28, 2026
61cab38
fix(ux): clarify bot actions and allow untitled bots
samjulien Oct 28, 2026
a414e36
test(ux): align route contracts with optional bot titles
samjulien Oct 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .claude/skills/openbot-copy/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ because the admin is the one who sets them. A page anybody can open may not.

1. **Say what happened, then what to do.** "Gmail isn't connected. Connect it to let Bots read your
mail." Not why the screen is built the way it is.
2. **One idea per sentence. Short sentences.** A description is one or two sentences, about 20 words.
2. **Use complete sentences for explanations.** Page descriptions, helper text, notices, and empty-state bodies need a subject and a verb, or a direct instruction ("Connect your accounts"). Avoid fragments such as "The apps your Bots use" or "What this Bot can do." Headings, labels, buttons, and short status labels may be fragments.
**Keep only useful explanation.** State the action, outcome, or constraint the person needs. Remove copy that merely repeats the heading. Use natural sentence lengths; do not chop prose into fragments to meet a word count.
3. **Plain words.** "use", not "hold a grant on". "can't", not "is unable to". Contractions are fine.
4. **No "rather than", no em dashes, no "which is why", no "so that nothing … that may be wrong".**
These are the marks of text that is explaining itself. Cut the clause or make it its own sentence.
Expand All @@ -59,6 +60,7 @@ because the admin is the one who sets them. A page anybody can open may not.

| Before | After |
|---|---|
| The apps and accounts your Bots use as you. Open one to connect it or change it. | Connect your accounts so Bots can use apps on your behalf. |
| Your connected accounts could not be loaded, so nothing is listed here rather than a list that may be wrong. Reload the page, and tell an administrator if it persists. | Couldn't load your connections. Reload the page, or ask an admin if it keeps happening. |
| Sent to the coworker it is for. Type @ to choose one yourself. | OpenBot picks the right Bot. Type @ to choose one. |
| Gmail is a Composio app, and this deployment has no Composio key. (to a non-admin) | Gmail isn't set up yet. An admin has to turn it on. |
Expand All @@ -73,5 +75,6 @@ because the admin is the one who sets them. A page anybody can open may not.
| "this deployment" on a page anybody can open | OpenBot, or say what is missing |
| A sentence over ~25 words | Split it, or cut the clause that justifies the screen |
| "rather than", an em dash, "which is" in UI text | Rewrite as two short sentences |
| A description beginning "The apps…", "What…", "Who…", or "Where…" without a main verb | State the action or behavior in a complete sentence; remove redundant explanation |
| An env var, OAuth, Composio or "grant" outside Admin | Say what the person sees |
| A test asserting long explanatory copy | Assert the short sentence, or the role and the key words |
3 changes: 2 additions & 1 deletion agent-computer/tests/enter-text.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ let browser: Browser;
beforeAll(async () => {
if (!asked) return;
const { chromium } = await import("playwright");
browser = await chromium.launch();
// Match the computer image: full Chromium is installed without the headless shell.
browser = await chromium.launch({ channel: "chromium" });
});

afterAll(async () => {
Expand Down
11 changes: 9 additions & 2 deletions agent-langgraph-agui/tests/test_provider_boundaries.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import httpx2
import pytest
from anthropic import Anthropic

sys.path.insert(0, str(Path(__file__).resolve().parents[1]))

Expand Down Expand Up @@ -337,8 +338,14 @@ async def test_anthropic_selection_reaches_anthropic_boundary_without_openai_key
assert result["messages"][0].content == "anthropic proof"
assert "OPENAI_API_KEY" not in os.environ
assert captured[0]["url"] == "http://127.0.0.1:4311/v1/messages"
assert captured[0]["headers"]["x-api-key"] == "sk-ant-openbot-ci"
assert captured[0]["headers"]["anthropic-version"] == "2023-06-01"
# Anthropic 2.3 uses Bearer authentication; older SDKs send x-api-key.
headers = captured[0]["headers"]
assert (
headers.get("x-api-key") == "sk-ant-openbot-ci"
or headers.get("authorization") == "Bearer sk-ant-openbot-ci"
)
with Anthropic(api_key="sk-ant-openbot-ci") as sdk:
assert headers["anthropic-version"] == sdk.default_headers["anthropic-version"]
assert captured[0]["body"]["model"] == request_model
assert captured[0]["body"]["messages"] == [
{"role": "user", "content": "Say hello."}
Expand Down
8 changes: 5 additions & 3 deletions app/src/components/agents/agent-profile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,11 @@ export function AgentProfile({
<h1 className="w-full text-balance text-2xl font-semibold leading-tight tracking-tight">
{profile.name}
</h1>
<p className="w-full text-balance text-sm text-muted-foreground">
{profile.title}
</p>
{profile.title && (
<p className="w-full text-balance text-sm text-muted-foreground">
{profile.title}
</p>
)}
</div>

<div className="flex flex-wrap justify-center gap-1.5">
Expand Down
2 changes: 1 addition & 1 deletion app/src/components/agents/handoff-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export function HandoffPanel({ agentId }: { agentId: string }) {
</span>
) : null
}
description="The Bots this one can ask for help. This doesn't change who can ask it. Their answers come back into the same conversation, under their name."
description="Choose which Bots this Bot can ask for help. Their answers appear in the same conversation under their own names. This does not change who can ask this Bot for help."
title="Bots it can ask"
>
{/* Facts about the deployment rather than rows to act on, so said as sentences. */}
Expand Down
Loading
Loading