chenbhao commited on
Commit
15ed910
·
1 Parent(s): 7e22173

chore: rename project

Browse files
README.md CHANGED
@@ -1,4 +1,4 @@
1
- # free-code
2
 
3
  **The free build of Claude Code.**
4
 
@@ -8,10 +8,10 @@ All telemetry stripped. All injected security-prompt guardrails removed. All exp
8
  curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
9
  ```
10
 
11
- > Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `free-code` on your PATH. Then just `export ANTHROPIC_API_KEY="sk-ant-..."` and run `free-code`.
12
 
13
  <p align="center">
14
- <img src="assets/screenshot.png" alt="free-code screenshot" width="800" />
15
  </p>
16
 
17
  ---
@@ -42,7 +42,7 @@ claude() {
42
 
43
  ## What is this
44
 
45
- This is a clean, buildable fork of Anthropic's [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI -- the terminal-native AI coding agent. The upstream source became publicly available on March 31, 2026 through a source map exposure in the npm distribution.
46
 
47
  This fork applies three categories of changes on top of that snapshot:
48
 
@@ -70,7 +70,7 @@ Claude Code ships with dozens of feature flags gated behind `bun:bundle` compile
70
 
71
  | Feature | What it does |
72
  |---|---|
73
- | `ULTRAPLAN` | Remote multi-agent planning on Claude Code web (Opus-class) |
74
  | `ULTRATHINK` | Deep thinking mode -- type "ultrathink" to boost reasoning effort |
75
  | `VOICE_MODE` | Push-to-talk voice input and dictation |
76
  | `AGENT_TRIGGERS` | Local cron/trigger tools for background automation |
@@ -97,12 +97,12 @@ See [FEATURES.md](FEATURES.md) for the full audit of all 88 flags and their stat
97
  curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
98
  ```
99
 
100
- This will check your system, install Bun if needed, clone the repo, build the binary with all experimental features enabled, and symlink it as `free-code` on your PATH.
101
 
102
  After install, just run:
103
  ```bash
104
  export ANTHROPIC_API_KEY="sk-ant-..."
105
- free-code
106
  ```
107
 
108
  ---
 
1
+ # versperclaw
2
 
3
  **The free build of Claude Code.**
4
 
 
8
  curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
9
  ```
10
 
11
+ > Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `versperclaw` on your PATH. Then just `export ANTHROPIC_API_KEY="sk-ant-..."` and run `versperclaw`.
12
 
13
  <p align="center">
14
+ <img src="assets/screenshot.png" alt="versperclaw screenshot" width="800" />
15
  </p>
16
 
17
  ---
 
42
 
43
  ## What is this
44
 
45
+ This is a clean, buildable fork of Anthropic's [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI -- the terminal-native AI coding agent, now called VersperClaw. The upstream source became publicly available on March 31, 2026 through a source map exposure in the npm distribution.
46
 
47
  This fork applies three categories of changes on top of that snapshot:
48
 
 
70
 
71
  | Feature | What it does |
72
  |---|---|
73
+ | `ULTRAPLAN` | Remote multi-agent planning on VersperClaw web (Opus-class) |
74
  | `ULTRATHINK` | Deep thinking mode -- type "ultrathink" to boost reasoning effort |
75
  | `VOICE_MODE` | Push-to-talk voice input and dictation |
76
  | `AGENT_TRIGGERS` | Local cron/trigger tools for background automation |
 
97
  curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
98
  ```
99
 
100
+ This will check your system, install Bun if needed, clone the repo, build the binary with all experimental features enabled, and symlink it as `versperclaw` on your PATH.
101
 
102
  After install, just run:
103
  ```bash
104
  export ANTHROPIC_API_KEY="sk-ant-..."
105
+ versperclaw
106
  ```
107
 
108
  ---
claude.sh CHANGED
@@ -1,6 +1,6 @@
1
- # cp ~/Code/Agent/free-code/cli-dev ~/.local/bin/cli-dev
2
- # ln -sf ~/Code/Agent/free-code/cli-dev ~/.local/bin/cli-dev
3
 
4
- cd ~/Code/Agent/free-code ANTHROPIC_BASE_URL="http://127.0.0.1:8001" ANTHROPIC_API_KEY="dummy" CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 ./cli-dev --bare --model "Qwen3.5-4B.Q4_K_M.gguf"
5
 
6
  cd ~/Code/Llm/evalbotv1 llama-server --model Jackrong/Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-4B.Q4_K_M.gguf --mmproj Jackrong/Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/mmproj-BF16.gguf --seed 3407 --temp 1.0 --top-p 0.95 --min-p 0.01 --top-k 40 -c 49152 --port 8001 --host 0.0.0.0
 
1
+ # cp ~/Code/Agent/versperclaw/cli-dev ~/.local/bin/cli-dev
2
+ # ln -sf ~/Code/Agent/versperclaw/cli-dev ~/.local/bin/cli-dev
3
 
4
+ cd ~/Code/Agent/versperclaw ANTHROPIC_BASE_URL="http://127.0.0.1:8001" ANTHROPIC_API_KEY="dummy" CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 ./cli-dev --bare --model "Qwen3.5-4B.Q4_K_M.gguf"
5
 
6
  cd ~/Code/Llm/evalbotv1 llama-server --model Jackrong/Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-4B.Q4_K_M.gguf --mmproj Jackrong/Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/mmproj-BF16.gguf --seed 3407 --temp 1.0 --top-p 0.95 --min-p 0.01 --top-k 40 -c 49152 --port 8001 --host 0.0.0.0
install.sh CHANGED
@@ -1,7 +1,7 @@
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
- # free-code installer
5
  # Usage: curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
6
 
7
  RED='\033[0;31m'
@@ -13,7 +13,7 @@ DIM='\033[2m'
13
  RESET='\033[0m'
14
 
15
  REPO="https://github.com/paoloanzn/free-code.git"
16
- INSTALL_DIR="$HOME/free-code"
17
  BUN_MIN_VERSION="1.3.11"
18
 
19
  info() { printf "${CYAN}[*]${RESET} %s\n" "$*"; }
@@ -133,8 +133,8 @@ link_binary() {
133
  local link_dir="$HOME/.local/bin"
134
  mkdir -p "$link_dir"
135
 
136
- ln -sf "$INSTALL_DIR/cli-dev" "$link_dir/free-code"
137
- ok "Symlinked: $link_dir/free-code"
138
 
139
  if ! echo "$PATH" | tr ':' '\n' | grep -qx "$link_dir"; then
140
  warn "$link_dir is not on your PATH"
@@ -167,16 +167,16 @@ echo ""
167
  printf "${GREEN}${BOLD} Installation complete!${RESET}\n"
168
  echo ""
169
  printf " ${BOLD}Run it:${RESET}\n"
170
- printf " ${CYAN}free-code${RESET} # interactive REPL\n"
171
- printf " ${CYAN}free-code -p \"your prompt\"${RESET} # one-shot mode\n"
172
  echo ""
173
  printf " ${BOLD}Set your API key:${RESET}\n"
174
  printf " ${CYAN}export ANTHROPIC_API_KEY=\"sk-ant-...\"${RESET}\n"
175
  echo ""
176
  printf " ${BOLD}Or log in with Claude.ai:${RESET}\n"
177
- printf " ${CYAN}free-code /login${RESET}\n"
178
  echo ""
179
  printf " ${DIM}Source: $INSTALL_DIR${RESET}\n"
180
  printf " ${DIM}Binary: $INSTALL_DIR/cli-dev${RESET}\n"
181
- printf " ${DIM}Link: ~/.local/bin/free-code${RESET}\n"
182
  echo ""
 
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
+ # versperclaw installer
5
  # Usage: curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash
6
 
7
  RED='\033[0;31m'
 
13
  RESET='\033[0m'
14
 
15
  REPO="https://github.com/paoloanzn/free-code.git"
16
+ INSTALL_DIR="$HOME/versperclaw"
17
  BUN_MIN_VERSION="1.3.11"
18
 
19
  info() { printf "${CYAN}[*]${RESET} %s\n" "$*"; }
 
133
  local link_dir="$HOME/.local/bin"
134
  mkdir -p "$link_dir"
135
 
136
+ ln -sf "$INSTALL_DIR/cli-dev" "$link_dir/versperclaw"
137
+ ok "Symlinked: $link_dir/versperclaw"
138
 
139
  if ! echo "$PATH" | tr ':' '\n' | grep -qx "$link_dir"; then
140
  warn "$link_dir is not on your PATH"
 
167
  printf "${GREEN}${BOLD} Installation complete!${RESET}\n"
168
  echo ""
169
  printf " ${BOLD}Run it:${RESET}\n"
170
+ printf " ${CYAN}versperclaw${RESET} # interactive REPL\n"
171
+ printf " ${CYAN}versperclaw -p \"your prompt\"${RESET} # one-shot mode\n"
172
  echo ""
173
  printf " ${BOLD}Set your API key:${RESET}\n"
174
  printf " ${CYAN}export ANTHROPIC_API_KEY=\"sk-ant-...\"${RESET}\n"
175
  echo ""
176
  printf " ${BOLD}Or log in with Claude.ai:${RESET}\n"
177
+ printf " ${CYAN}versperclaw /login${RESET}\n"
178
  echo ""
179
  printf " ${DIM}Source: $INSTALL_DIR${RESET}\n"
180
  printf " ${DIM}Binary: $INSTALL_DIR/cli-dev${RESET}\n"
181
+ printf " ${DIM}Link: ~/.local/bin/versperclaw${RESET}\n"
182
  echo ""
src/components/LogoV2/ChannelsNotice.tsx CHANGED
@@ -135,7 +135,7 @@ export function ChannelsNotice() {
135
  }
136
  let t2;
137
  if ($[24] !== flag) {
138
- t2 = <Text dimColor={true}>Experimental · inbound messages will be pushed into this session, this carries prompt injection risks. Restart Free Code without {flag} to disable.</Text>;
139
  $[24] = flag;
140
  $[25] = t2;
141
  } else {
 
135
  }
136
  let t2;
137
  if ($[24] !== flag) {
138
+ t2 = <Text dimColor={true}>Experimental · inbound messages will be pushed into this session, this carries prompt injection risks. Restart VersperClaw without {flag} to disable.</Text>;
139
  $[24] = flag;
140
  $[25] = t2;
141
  } else {
src/components/LogoV2/CondensedLogo.tsx CHANGED
@@ -88,7 +88,7 @@ export function CondensedLogo() {
88
  }
89
  let t5;
90
  if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
91
- t5 = <Text bold={true}>Free Code</Text>;
92
  $[8] = t5;
93
  } else {
94
  t5 = $[8];
 
88
  }
89
  let t5;
90
  if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
91
+ t5 = <Text bold={true}>VersperClaw</Text>;
92
  $[8] = t5;
93
  } else {
94
  t5 = $[8];
src/components/LogoV2/GuestPassesUpsell.tsx CHANGED
@@ -60,7 +60,7 @@ export function GuestPassesUpsell() {
60
  let t0;
61
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
62
  const reward = getCachedReferrerReward();
63
- t0 = <Text dimColor={true}><Text color="startupAccent">[✻]</Text> <Text color="startupAccent">[✻]</Text>{" "}<Text color="startupAccent">[✻]</Text> ·{" "}{reward ? `Share Free Code and earn ${formatCreditAmount(reward)} of extra usage · /passes` : "3 guest passes at /passes"}</Text>;
64
  $[0] = t0;
65
  } else {
66
  t0 = $[0];
 
60
  let t0;
61
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
62
  const reward = getCachedReferrerReward();
63
+ t0 = <Text dimColor={true}><Text color="startupAccent">[✻]</Text> <Text color="startupAccent">[✻]</Text>{" "}<Text color="startupAccent">[✻]</Text> ·{" "}{reward ? `Share VersperClaw and earn ${formatCreditAmount(reward)} of extra usage · /passes` : "3 guest passes at /passes"}</Text>;
64
  $[0] = t0;
65
  } else {
66
  t0 = $[0];
src/components/LogoV2/LogoV2.tsx CHANGED
@@ -303,8 +303,8 @@ export function LogoV2() {
303
  }
304
  const layoutMode = getLayoutMode(columns);
305
  const userTheme = resolveThemeSetting(getGlobalConfig().theme);
306
- const borderTitle = ` ${color("startupAccent", userTheme)("Free Code")} ${color("inactive", userTheme)(`v${version}`)} `;
307
- const compactBorderTitle = color("startupAccent", userTheme)(" Free Code ");
308
  if (layoutMode === "compact") {
309
  let welcomeMessage = formatWelcomeMessage(username);
310
  if (stringWidth(welcomeMessage) > columns - 4) {
 
303
  }
304
  const layoutMode = getLayoutMode(columns);
305
  const userTheme = resolveThemeSetting(getGlobalConfig().theme);
306
+ const borderTitle = ` ${color("startupAccent", userTheme)("VersperClaw")} ${color("inactive", userTheme)(`v${version}`)} `;
307
+ const compactBorderTitle = color("startupAccent", userTheme)(" VersperClaw ");
308
  if (layoutMode === "compact") {
309
  let welcomeMessage = formatWelcomeMessage(username);
310
  if (stringWidth(welcomeMessage) > columns - 4) {
src/components/LogoV2/WelcomeV2.tsx CHANGED
@@ -9,7 +9,7 @@ export function WelcomeV2() {
9
  if (env.terminal === "Apple_Terminal") {
10
  let t0;
11
  if ($[0] !== theme) {
12
- t0 = <AppleTerminalWelcomeV2 theme={theme} welcomeMessage="Welcome to Free Code" />;
13
  $[0] = theme;
14
  $[1] = t0;
15
  } else {
@@ -28,7 +28,7 @@ export function WelcomeV2() {
28
  let t7;
29
  let t8;
30
  if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
31
- t0 = <Text><Text color="startupAccent">{"Welcome to Free Code"} </Text><Text dimColor={true}>v{MACRO.VERSION} </Text></Text>;
32
  t1 = <Text>{"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}</Text>;
33
  t2 = <Text>{" "}</Text>;
34
  t3 = <Text>{" "}</Text>;
@@ -113,7 +113,7 @@ export function WelcomeV2() {
113
  let t5;
114
  let t6;
115
  if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
116
- t0 = <Text><Text color="startupAccent">{"Welcome to Free Code"} </Text><Text dimColor={true}>v{MACRO.VERSION} </Text></Text>;
117
  t1 = <Text>{"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}</Text>;
118
  t2 = <Text>{" "}</Text>;
119
  t3 = <Text>{" * \u2588\u2588\u2588\u2588\u2588\u2593\u2593\u2591 "}</Text>;
 
9
  if (env.terminal === "Apple_Terminal") {
10
  let t0;
11
  if ($[0] !== theme) {
12
+ t0 = <AppleTerminalWelcomeV2 theme={theme} welcomeMessage="Welcome to VersperClaw" />;
13
  $[0] = theme;
14
  $[1] = t0;
15
  } else {
 
28
  let t7;
29
  let t8;
30
  if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
31
+ t0 = <Text><Text color="startupAccent">{"Welcome to VersperClaw"} </Text><Text dimColor={true}>v{MACRO.VERSION} </Text></Text>;
32
  t1 = <Text>{"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}</Text>;
33
  t2 = <Text>{" "}</Text>;
34
  t3 = <Text>{" "}</Text>;
 
113
  let t5;
114
  let t6;
115
  if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
116
+ t0 = <Text><Text color="startupAccent">{"Welcome to VersperClaw"} </Text><Text dimColor={true}>v{MACRO.VERSION} </Text></Text>;
117
  t1 = <Text>{"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}</Text>;
118
  t2 = <Text>{" "}</Text>;
119
  t3 = <Text>{" * \u2588\u2588\u2588\u2588\u2588\u2593\u2593\u2591 "}</Text>;
src/components/LogoV2/feedConfigs.tsx CHANGED
@@ -39,7 +39,7 @@ export function createWhatsNewFeed(releaseNotes: string[]): FeedConfig {
39
  text: note
40
  };
41
  });
42
- const emptyMessage = "external" === 'ant' ? 'Unable to fetch latest claude-cli-internal commits' : 'Check the Free Code changelog for updates';
43
  return {
44
  title: "external" === 'ant' ? "What's new [ANT-ONLY: Latest CC commits]" : "What's new",
45
  lines,
@@ -73,7 +73,7 @@ export function createProjectOnboardingFeed(steps: Step[]): FeedConfig {
73
  }
74
  export function createGuestPassesFeed(): FeedConfig {
75
  const reward = getCachedReferrerReward();
76
- const subtitle = reward ? `Share Free Code and earn ${formatCreditAmount(reward)} of extra usage` : 'Share Free Code with friends';
77
  return {
78
  title: '3 guest passes',
79
  lines: [],
 
39
  text: note
40
  };
41
  });
42
+ const emptyMessage = "external" === 'ant' ? 'Unable to fetch latest claude-cli-internal commits' : 'Check the VersperClaw changelog for updates';
43
  return {
44
  title: "external" === 'ant' ? "What's new [ANT-ONLY: Latest CC commits]" : "What's new",
45
  lines,
 
73
  }
74
  export function createGuestPassesFeed(): FeedConfig {
75
  const reward = getCachedReferrerReward();
76
+ const subtitle = reward ? `Share VersperClaw and earn ${formatCreditAmount(reward)} of extra usage` : 'Share VersperClaw with friends';
77
  return {
78
  title: '3 guest passes',
79
  lines: [],
src/screens/REPL.tsx CHANGED
@@ -1137,7 +1137,7 @@ export function REPL({
1137
  // session from mid-conversation context.
1138
  const haikuTitleAttemptedRef = useRef((initialMessages?.length ?? 0) > 0);
1139
  const agentTitle = mainThreadAgentDefinition?.agentType;
1140
- const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? 'Free Code';
1141
  const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest;
1142
  // Local-jsx commands (like /plugin, /config) show user-facing dialogs that
1143
  // wait for input. Require jsx != null — if the flag is stuck true but jsx
 
1137
  // session from mid-conversation context.
1138
  const haikuTitleAttemptedRef = useRef((initialMessages?.length ?? 0) > 0);
1139
  const agentTitle = mainThreadAgentDefinition?.agentType;
1140
+ const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? 'VersperClaw';
1141
  const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest;
1142
  // Local-jsx commands (like /plugin, /config) show user-facing dialogs that
1143
  // wait for input. Require jsx != null — if the flag is stuck true but jsx
src/utils/theme.ts CHANGED
@@ -117,7 +117,7 @@ const lightTheme: Theme = {
117
  autoAccept: 'rgb(135,0,255)', // Electric violet
118
  bashBorder: 'rgb(255,0,135)', // Vibrant pink
119
  claude: 'rgb(215,119,87)', // Claude orange
120
- startupAccent: 'rgb(124,176,133)', // Free Code pastel green
121
  claudeShimmer: 'rgb(245,149,117)', // Lighter claude orange for shimmer effect
122
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(87,105,247)', // Medium blue for system spinner
123
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(117,135,255)', // Lighter blue for system spinner shimmer
@@ -364,7 +364,7 @@ const lightDaltonizedTheme: Theme = {
364
  autoAccept: 'rgb(135,0,255)', // Electric violet
365
  bashBorder: 'rgb(0,102,204)', // Blue instead of pink
366
  claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
367
- startupAccent: 'rgb(124,176,133)', // Free Code pastel green
368
  claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
369
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(51,102,255)', // Bright blue for system spinner
370
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(101,152,255)', // Lighter bright blue for system spinner shimmer
@@ -446,7 +446,7 @@ const darkTheme: Theme = {
446
  autoAccept: 'rgb(175,135,255)', // Electric violet
447
  bashBorder: 'rgb(253,93,177)', // Bright pink
448
  claude: 'rgb(215,119,87)', // Claude orange
449
- startupAccent: 'rgb(184,225,174)', // Free Code pastel green
450
  claudeShimmer: 'rgb(235,159,127)', // Lighter claude orange for shimmer effect
451
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(147,165,255)', // Blue for system spinner
452
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(177,195,255)', // Lighter blue for system spinner shimmer
@@ -528,7 +528,7 @@ const darkDaltonizedTheme: Theme = {
528
  autoAccept: 'rgb(175,135,255)', // Electric violet
529
  bashBorder: 'rgb(51,153,255)', // Bright blue
530
  claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
531
- startupAccent: 'rgb(184,225,174)', // Free Code pastel green
532
  claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
533
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(153,204,255)', // Light blue for system spinner
534
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(183,224,255)', // Lighter blue for system spinner shimmer
 
117
  autoAccept: 'rgb(135,0,255)', // Electric violet
118
  bashBorder: 'rgb(255,0,135)', // Vibrant pink
119
  claude: 'rgb(215,119,87)', // Claude orange
120
+ startupAccent: 'rgb(124,176,133)', // VersperClaw pastel green
121
  claudeShimmer: 'rgb(245,149,117)', // Lighter claude orange for shimmer effect
122
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(87,105,247)', // Medium blue for system spinner
123
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(117,135,255)', // Lighter blue for system spinner shimmer
 
364
  autoAccept: 'rgb(135,0,255)', // Electric violet
365
  bashBorder: 'rgb(0,102,204)', // Blue instead of pink
366
  claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
367
+ startupAccent: 'rgb(124,176,133)', // VersperClaw pastel green
368
  claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
369
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(51,102,255)', // Bright blue for system spinner
370
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(101,152,255)', // Lighter bright blue for system spinner shimmer
 
446
  autoAccept: 'rgb(175,135,255)', // Electric violet
447
  bashBorder: 'rgb(253,93,177)', // Bright pink
448
  claude: 'rgb(215,119,87)', // Claude orange
449
+ startupAccent: 'rgb(184,225,174)', // VersperClaw pastel green
450
  claudeShimmer: 'rgb(235,159,127)', // Lighter claude orange for shimmer effect
451
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(147,165,255)', // Blue for system spinner
452
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(177,195,255)', // Lighter blue for system spinner shimmer
 
528
  autoAccept: 'rgb(175,135,255)', // Electric violet
529
  bashBorder: 'rgb(51,153,255)', // Bright blue
530
  claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
531
+ startupAccent: 'rgb(184,225,174)', // VersperClaw pastel green
532
  claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
533
  claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(153,204,255)', // Light blue for system spinner
534
  claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(183,224,255)', // Lighter blue for system spinner shimmer