Skip to content

Commit ca90e11

Browse files
committed
Release v0.0.65
Desktop v0.0.65
1 parent dd40cd1 commit ca90e11

File tree

23 files changed

+1586
-494
lines changed

23 files changed

+1586
-494
lines changed

README.md

Lines changed: 97 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,140 @@
22

33
[1Code.dev](https://1code.dev)
44

5-
Best UI for Claude Code with local and remote agent execution.
5+
Open-source coding agent client. Run Claude Code, Codex, and more - locally or in the cloud.
66

77
By [21st.dev](https://21st.dev) team
88

9-
> **Platforms:** macOS, Linux, and Windows. Windows support improved thanks to community contributions from [@jesus-mgtc](https://github.com/jesus-mgtc) and [@evgyur](https://github.com/evgyur).
10-
11-
## 1Code vs Claude Code
12-
13-
| Feature | 1Code | Claude Code |
14-
|---------|-------|-------------|
15-
| **Visual UI** | ✅ Cursor-like desktop app ||
16-
| **Git Worktree Isolation** | ✅ Each chat runs in isolated worktree ||
17-
| **Background Execution** | ✅ Run multiple agents in parallel ||
18-
| **Built-in Git Client** | ✅ Visual staging, commits, branches | ❌ CLI git commands only |
19-
| **Integrated Terminal** |||
20-
| **Plan Mode** |||
21-
| **MCP Support** |||
22-
| **Memory (CLAUDE.md)** |||
23-
| **Skills & Slash Commands** |||
24-
| **Custom Subagents** |||
25-
| **Subscription & API Key Support** |||
26-
| **Custom Models & Providers (BYOK)** |||
27-
| **Voice Input** | ✅ Hold-to-talk dictation ||
28-
| **Checkpointing** | 🚧 Beta ||
29-
| **Tool Approve** | 📋 Backlog ||
30-
| **Hooks** |||
9+
## Highlights
10+
11+
- **Multi-Agent Support** - Claude Code and Codex in one app, switch instantly
12+
- **Visual UI** - Cursor-like desktop app with diff previews and real-time tool execution
13+
- **Custom Models & Providers (BYOK)** - Bring your own API keys
14+
- **Git Worktree Isolation** - Each chat runs in its own isolated worktree
15+
- **Background Agents** - Cloud sandboxes that run when your laptop sleeps
16+
- **Live Browser Previews** - Preview dev branches in a real browser
17+
- **Kanban Board** - Visualize agent sessions
18+
- **Built-in Git Client** - Visual staging, diffs, PR creation, push to GitHub
19+
- **File Viewer** - File preview with Cmd+P search and image viewer
20+
- **Integrated Terminal** - Sidebar or bottom panel with Cmd+J toggle
21+
- **Model Selector** - Switch between models and providers
22+
- **MCP & Plugins** - Server management, plugin marketplace, rich tool display
23+
- **Automations** - Trigger agents from GitHub, Linear, Slack, or manually from git events
24+
- **Chat Forking** - Fork a sub-chat from any assistant message
25+
- **Message Queue** - Queue prompts while an agent is working
26+
- **API** - Run agents programmatically with a single API call
27+
- **Voice Input** - Hold-to-talk dictation
28+
- **Plan Mode** - Structured plans with markdown preview
29+
- **Extended Thinking** - Enabled by default with visual UX
30+
- **Skills & Slash Commands** - Custom skills and slash commands
31+
- **Custom Sub-agents** - Visual task display in sidebar
32+
- **Memory** - CLAUDE.md and AGENTS.md support
33+
- **PWA** - Start and monitor background agents from your phone
34+
- **Cross Platform** - macOS desktop, web app, Windows and Linux
3135

3236
## Features
3337

34-
### Run Claude agents the right way
38+
### Run coding agents the right way
3539

36-
Run agents locally, in worktrees, in background without touching main branch.
40+
Run agents locally, in worktrees, in background - without touching main branch.
3741

3842
![Worktree Demo](assets/worktree.gif)
3943

4044
- **Git Worktree Isolation** - Each chat session runs in its own isolated worktree
4145
- **Background Execution** - Run agents in background while you continue working
4246
- **Local-first** - All code stays on your machine, no cloud sync required
4347
- **Branch Safety** - Never accidentally commit to main branch
48+
- **Shared Terminals** - Share terminal sessions across local-mode workspaces
4449

4550
---
4651

4752
### UI that finally respects your code
4853

49-
Cursor-like UI for Claude Code with diff previews, built-in git client, and the ability to see changes before they land.
54+
Cursor-like UI with diff previews, built-in git client, and the ability to see changes before they land.
5055

5156
![Cursor UI Demo](assets/cursor-ui.gif)
5257

53-
- **Diff Previews** - See exactly what changes Claude is making in real-time
54-
- **Built-in Git Client** - Stage, commit, and manage branches without leaving the app
55-
- **Change Tracking** - Visual diffs and PR management
58+
- **Diff Previews** - See exactly what changes the agent is making in real-time
59+
- **Built-in Git Client** - Stage, commit, push to GitHub, and manage branches without leaving the app
60+
- **Git Activity Badges** - See git operations directly on agent messages
61+
- **Rollback** - Roll back changes from any user message bubble
5662
- **Real-time Tool Execution** - See bash commands, file edits, and web searches as they happen
63+
- **File Viewer** - File preview with Cmd+P search, syntax highlighting, and image viewer
64+
- **Chat Forking** - Fork a sub-chat from any assistant message to explore alternatives
65+
- **Chat Export** - Export conversations for sharing or archival
66+
- **File Mentions** - Reference files directly in chat with @ mentions
67+
- **Message Queue** - Queue up prompts while an agent is working
5768

5869
---
5970

6071
### Plan mode that actually helps you think
6172

62-
Claude asks clarifying questions, builds structured plans, and shows clean markdown preview all before execution.
73+
The agent asks clarifying questions, builds structured plans, and shows clean markdown preview - all before execution.
6374

6475
![Plan Mode Demo](assets/plan-mode.gif)
6576

66-
- **Clarifying Questions** - Claude asks what it needs to know before starting
77+
- **Clarifying Questions** - The agent asks what it needs to know before starting
6778
- **Structured Plans** - See step-by-step breakdown of what will happen
6879
- **Clean Markdown Preview** - Review plans in readable format
69-
- **Review Before Execution** - Approve or modify the plan before Claude acts
80+
- **Review Before Execution** - Approve or modify the plan before the agent acts
81+
- **Extended Thinking** - Enabled by default with visual thinking gradient
82+
- **Sub-agents** - Visual task list for sub-agents in the details sidebar
7083

7184
---
7285

73-
### More Features
86+
### Background agents that never sleep
7487

75-
- **Plan & Agent Modes** - Read-only analysis or full code execution permissions
76-
- **Project Management** - Link local folders with automatic Git remote detection
77-
- **Integrated Terminal** - Full terminal access within the app
88+
Close your laptop. Your agents keep running in isolated cloud sandboxes with live browser previews.
89+
90+
- **Runs When You Sleep** - Background agents continue working even when your laptop is closed
91+
- **Cloud Sandboxes** - Every background session runs in an isolated cloud environment
92+
- **Live Browser Previews** - See your dev branch running in a real browser
93+
94+
---
95+
96+
### Connect anything with MCP
97+
98+
Full MCP server lifecycle management with a built-in plugin marketplace. No config files needed.
99+
100+
- **MCP Server Management** - Toggle, configure, and delete MCP servers from the UI
101+
- **Plugin Marketplace** - Browse and install plugins with one click
102+
- **Rich Tool Display** - See MCP tool calls with formatted inputs and outputs
103+
- **@ Mentions** - Reference MCP servers directly in chat input
104+
105+
---
106+
107+
### Automations that work while you sleep
108+
109+
Trigger agents from GitHub, Linear, Slack, or manually from git events. Auto-review PRs, fix CI failures, and complete tasks - all configurable.
110+
111+
- **@1code Triggers** - Tag @1code in GitHub, Linear, or Slack to start agents
112+
- **Git Event Triggers** - Run automations on push, PR, or any git event
113+
- **Conditions & Filters** - Control when automations fire
114+
- **Execution Timeline** - Visual history of past runs
115+
- **Silent Mode** - Toggle respond-to-trigger for background automations
116+
117+
Automations require a [Pro or Max subscription](https://1code.dev/pro). Learn more at [1code.dev/agents/async](https://1code.dev/agents/async).
118+
119+
120+
## API
121+
122+
Run coding agents programmatically. Point at a repo, give it a task - the agent runs in a sandbox and delivers a PR.
123+
124+
```bash
125+
curl -X POST https://1code.dev/api/v1/tasks \
126+
-H "Authorization: Bearer YOUR_API_KEY" \
127+
-d '{
128+
"repository": "https://github.com/your-org/your-repo",
129+
"prompt": "Fix the failing CI tests"
130+
}'
131+
```
132+
133+
- **Remote Sandboxes** - Isolated cloud environment, repo cloned, dependencies installed
134+
- **Git & PR Integration** - Agent commits, pushes branches, opens PRs automatically
135+
- **Async Execution** - Fire and forget, poll for status or get notified
136+
- **Follow-up Messages** - Send additional instructions to a running task
137+
138+
Learn more at [1code.dev/agents/api](https://1code.dev/agents/api)
78139

79140
## Installation
80141

bun.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bun.lockb

0 Bytes
Binary file not shown.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "21st-desktop",
3-
"version": "0.0.64",
3+
"version": "0.0.65",
44
"private": true,
55
"description": "1Code - UI for parallel work with AI agents",
66
"author": {
@@ -19,8 +19,8 @@
1919
"dist": "electron-builder",
2020
"dist:manifest": "node scripts/generate-update-manifest.mjs",
2121
"dist:upload": "node scripts/upload-release.mjs",
22-
"claude:download": "node scripts/download-claude-binary.mjs --version=2.1.32",
23-
"claude:download:all": "node scripts/download-claude-binary.mjs --version=2.1.32 --all",
22+
"claude:download": "node scripts/download-claude-binary.mjs --version=2.1.45",
23+
"claude:download:all": "node scripts/download-claude-binary.mjs --version=2.1.45 --all",
2424
"codex:download": "node scripts/download-codex-binary.mjs --version=0.98.0",
2525
"codex:download:all": "node scripts/download-codex-binary.mjs --version=0.98.0 --all",
2626
"release": "rm -rf release && bun i && bun run claude:download && bun run codex:download && bun run build && bun run package:mac && bun run dist:manifest && ./scripts/upload-release-wrangler.sh",
@@ -35,7 +35,7 @@
3535
},
3636
"dependencies": {
3737
"@ai-sdk/react": "^3.0.14",
38-
"@anthropic-ai/claude-agent-sdk": "0.2.32",
38+
"@anthropic-ai/claude-agent-sdk": "0.2.45",
3939
"@git-diff-view/react": "^0.0.35",
4040
"@git-diff-view/shiki": "^0.0.36",
4141
"@mcpc-tech/acp-ai-provider": "^0.2.4",
@@ -72,7 +72,7 @@
7272
"@xterm/addon-serialize": "^0.14.0",
7373
"@xterm/addon-web-links": "^0.12.0",
7474
"@xterm/addon-webgl": "^0.19.0",
75-
"@zed-industries/codex-acp": "^0.9.2",
75+
"@zed-industries/codex-acp": "0.9.3",
7676
"ai": "^6.0.14",
7777
"async-mutex": "^0.5.0",
7878
"better-sqlite3": "^12.6.2",

scripts/download-claude-binary.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ async function getLatestVersion() {
144144
}
145145

146146
// Fallback to known version (should be updated periodically)
147-
return "2.1.17"
147+
return "2.1.45"
148148
}
149149

150150
/**

src/main/index.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import {
2828
} from "./lib/cli"
2929
import { cleanupGitWatchers } from "./lib/git/watcher"
3030
import { cancelAllPendingOAuth, handleMcpOAuthCallback } from "./lib/mcp-auth"
31+
import { getAllMcpConfigHandler } from "./lib/trpc/routers/claude"
32+
import { getAllCodexMcpConfigHandler } from "./lib/trpc/routers/codex"
3133
import {
3234
createMainWindow,
3335
createWindow,
@@ -896,8 +898,17 @@ if (gotTheLock) {
896898
// This populates the cache so all future sessions can use filtered MCP servers
897899
setTimeout(async () => {
898900
try {
899-
const { getAllMcpConfigHandler } = await import("./lib/trpc/routers/claude")
900-
await getAllMcpConfigHandler()
901+
const results = await Promise.allSettled([
902+
getAllMcpConfigHandler(),
903+
getAllCodexMcpConfigHandler(),
904+
])
905+
906+
if (results[0].status === "rejected") {
907+
console.error("[App] Claude MCP warmup failed:", results[0].reason)
908+
}
909+
if (results[1].status === "rejected") {
910+
console.error("[App] Codex MCP warmup failed:", results[1].reason)
911+
}
901912
} catch (error) {
902913
console.error("[App] MCP warmup failed:", error)
903914
}

src/main/lib/trpc/routers/claude.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2762,6 +2762,13 @@ ${prompt}
27622762
*/
27632763
getAllMcpConfig: publicProcedure.query(getAllMcpConfigHandler),
27642764

2765+
refreshMcpConfig: publicProcedure.mutation(() => {
2766+
workingMcpServers.clear()
2767+
mcpConfigCache.clear()
2768+
projectMcpJsonCache.clear()
2769+
return { success: true }
2770+
}),
2771+
27652772
/**
27662773
* Cancel active session
27672774
*/

0 commit comments

Comments
 (0)