返回 CodeWhale
REBRAND.md
根目录 / docs / REBRAND.md
1 # Rebrand: DeepSeek TUI → Codewhale
2
3 Starting with **v0.8.41**, this project ships under a new name: `codewhale`.
4
5 This document explains what changed, what didn't, and how to migrate. None of the
6 DeepSeek provider integration changed — only the local CLI / TUI brand.
7
8 ## TL;DR
9
10 ```bash
11 # 1. Uninstall the old wrapper or binaries.
12 npm uninstall -g deepseek-tui # or:
13 cargo uninstall deepseek-tui-cli 2>/dev/null || true
14 cargo uninstall deepseek-tui 2>/dev/null || true
15 # Homebrew:
16 # brew upgrade codewhale
17
18 # 2. Install under the new name.
19 npm install -g codewhale # or:
20 cargo install codewhale-cli --locked
21 # Homebrew:
22 # brew tap Hmbown/deepseek-tui
23 # brew install codewhale
24
25 # 3. Run with the new command.
26 codewhale doctor
27 codewhale
28 ```
29
30 Your existing `~/.deepseek/config.toml`, `~/.deepseek/sessions/`,
31 `~/.deepseek/skills/`, `~/.deepseek/tasks/`, and `~/.deepseek/mcp.json` are
32 not deleted. New Codewhale installs prefer `~/.codewhale/`, and legacy
33 `~/.deepseek/` state remains a read fallback while you migrate. Existing
34 `DEEPSEEK_*` environment variables continue to work.
35
36 ## What got renamed
37
38 | Surface | Before | After |
39 |---|---|---|
40 | Installed commands | `deepseek` / `deepseek-tui` | `codewhale` / `codew` |
41 | npm wrapper package | `deepseek-tui` | `codewhale` |
42 | Crates.io crates | `deepseek-tui-cli` / `deepseek-tui` / `deepseek-*` | `codewhale-cli` / `codewhale-tui` / `codewhale-*` |
43 | Release assets | `deepseek-<platform>` / `deepseek-tui-<platform>` | `codewhale-<platform>` / `codew-<platform>`; `codewhale-tui-<platform>` remains a compatibility-only filename |
44 | Checksum manifest | `deepseek-artifacts-sha256.txt` | `codewhale-artifacts-sha256.txt` |
45
46 ## What changed for local state
47
48 New installs write product-owned state under `~/.codewhale/`. Existing
49 `~/.deepseek/` config, sessions, skills, tasks, MCP config, memory, and notes
50 remain readable as legacy fallbacks while you migrate. Codewhale never deletes
51 the legacy directory automatically.
52
53 ## What did NOT change
54
55 Anything that targets the DeepSeek provider API stays exactly as it was:
56
57 - **Environment variables**: `DEEPSEEK_API_KEY`, `DEEPSEEK_BASE_URL`,
58 `DEEPSEEK_MODEL`, `DEEPSEEK_PROVIDER`, `DEEPSEEK_PROFILE`,
59 `DEEPSEEK_LOG_LEVEL`, plus the existing `DEEPSEEK_TUI_*` runtime knobs
60 (`DEEPSEEK_TUI_BIN`, `DEEPSEEK_TUI_RELEASE_BASE_URL`, etc.). They're kept
61 for backward compatibility; renaming them would break every shell rc on
62 the planet.
63 - **`DEEPSEEK_YOLO`**: now deprecated, but still read as an alias of
64 `CODEWHALE_YOLO` through 0.9.x so existing scripts keep working (when both
65 are set, `CODEWHALE_YOLO` wins). It is removed in 0.10 (#5443); use
66 `CODEWHALE_YOLO` in new scripts.
67 - **Model IDs**: `deepseek-v4-pro`, `deepseek-v4-flash`, and the legacy
68 aliases `deepseek-chat` and `deepseek-reasoner`.
69 - **Hosts**: `api.deepseek.com` (global). The legacy typo host
70 `api.deepseeki.com` is not an official DeepSeek endpoint; it is only
71 still accepted in URL heuristics for existing configs and is not
72 offered as a fallback (#1079).
73 - **GitHub repository URL**: `https://github.com/Hmbown/CodeWhale`.
74 The old `Hmbown/DeepSeek-TUI` URL redirects there during the transition.
75 - **Homebrew tap and formula**: the formula is `codewhale`. The tap GitHub
76 repo is still `Hmbown/homebrew-deepseek-tui` until it is renamed;
77 `brew tap Hmbown/deepseek-tui && brew install codewhale` is the current
78 path. The legacy `deepseek-tui` formula remains a deprecated alias for
79 one overlap release.
80 - **Docker image**: `ghcr.io/hmbown/codewhale`.
81
82 ## Deprecation shims (removed in v0.9.0)
83
84 To keep existing shell aliases, scripts, and CI working through the rename,
85 v0.8.41 and later v0.8.x releases shipped **deprecation shims**:
86
87 - A `deepseek` binary that prints a one-line warning to stderr and forwards
88 argv to `codewhale`.
89 - A `deepseek-tui` binary that does the same for `codewhale-tui`.
90 - The legacy `deepseek-tui` npm package is deprecated and no longer receives
91 new releases. Install the `codewhale` npm package instead.
92
93 These binary shims are removed in **v0.9.0**. DeepSeek provider support, model
94 IDs, `DEEPSEEK_*` environment variables, and legacy `~/.deepseek/` state
95 fallbacks remain supported.
96
97 ## Migrating in practice
98
99 ### npm
100
101 ```bash
102 npm uninstall -g deepseek-tui
103 npm install -g codewhale
104 ```
105
106 ### Cargo
107
108 ```bash
109 cargo uninstall deepseek-tui-cli 2>/dev/null || true
110 cargo uninstall deepseek-tui 2>/dev/null || true
111 cargo install codewhale-cli --locked
112 ```
113
114 Or in a checkout:
115
116 ```bash
117 cargo install --path crates/cli --locked --force
118 ```
119
120 Cargo installs the canonical `codewhale` command. Release/npm/Homebrew
121 installers also provide the byte-identical `codew` short name; Cargo users can
122 add an optional `codew` symlink beside `codewhale`.
123
124 ### Legacy `deepseek update`
125
126 Current v0.8.x compatibility binaries recognize when they are running under a
127 legacy `deepseek` or `deepseek-tui` filename. In that case, `deepseek update`
128 or `deepseek-tui update` downloads the canonical Codewhale release assets and
129 installs them beside the legacy binary as `codewhale` and `codewhale-tui` when
130 the install directory is writable. That describes the historical v0.8
131 compatibility updater, not the current install surface; after upgrading, use
132 `codewhale` or `codew`.
133
134 If that update path cannot write to the install directory, use the npm, Cargo,
135 Homebrew, or manual reinstall commands above. The legacy npm package
136 `deepseek-tui` remains deprecated and is not republished; npm users should move
137 to `npm install -g codewhale`.
138
139 ### Homebrew
140
141 **Current published state (v0.9.13, published 2026-09-14; workspace source version 0.9.13):** The
142 formula is `codewhale`. New installs:
143
144 ```bash
145 brew tap Hmbown/deepseek-tui
146 brew install codewhale
147 brew upgrade codewhale
148 ```
149
150 The tap GitHub repo is still `Hmbown/homebrew-deepseek-tui` until it is
151 renamed to `Hmbown/homebrew-codewhale` (then `brew tap Hmbown/codewhale`
152 works; the old tap name keeps working through GitHub's redirect). The
153 legacy `deepseek-tui` formula remains a deprecated alias for this overlap
154 release so existing `brew upgrade deepseek-tui` crontabs keep working.
155
156 **Remaining rollout:**
157
158 1. Rename the tap repo to `Hmbown/homebrew-codewhale` when adding
159 `HOMEBREW_TAP_PAT`, then tell Codewhalebot.
160 2. After one more minor release, remove the `deepseek-tui` alias.
161
162 ### Manual / GitHub Releases
163
164 `v0.8.41` through `v0.8.x` Releases attached the canonical `codewhale-*` /
165 `codewhale-tui-*` assets (plus `codew-*` from v0.8.66 onward) and
166 compatibility-only `deepseek-*` / `deepseek-tui-*` shim assets. Starting in
167 v0.9.0, Releases attach the current `codewhale-*` / `codew-*` assets, the
168 `codewhale-artifacts-sha256.txt` checksum manifest, and byte-identical
169 `codewhale-tui-*` compatibility filenames required by legacy update clients.
170 Those compatibility filenames are not a third installed command. Install or
171 update through `codewhale` before moving to v0.9.0.
172
173 ### Sessions, skills, and manual workspaces
174
175 Renaming the binary does not require starting over:
176
177 - **Config**: on first launch, Codewhale copies `~/.deepseek/config.toml` to
178 `~/.codewhale/config.toml` if the Codewhale file does not already exist.
179 It never overwrites a newer Codewhale config. You can inspect the active path
180 with `codewhale doctor`.
181 - **Sessions and tasks**: managed state is read from `~/.codewhale/...` when
182 present, with `~/.deepseek/...` used as the legacy fallback when only the old
183 directory exists. Existing saved sessions still appear in `codewhale sessions`
184 and the TUI resume picker.
185 - **Skills**: Codewhale discovers workspace skills first, then global skills,
186 including both `~/.codewhale/skills` and legacy `~/.deepseek/skills`. Existing
187 skill directories with `SKILL.md` do not need to be rewritten.
188 - **MCP config**: the default path is `~/.codewhale/mcp.json`. If that file is
189 absent, Codewhale still reads legacy `~/.deepseek/mcp.json`. To use a custom
190 MCP config file, set `mcp_config_path` in `config.toml` or
191 `DEEPSEEK_MCP_CONFIG`.
192 - **Manual binary installs**: keep the two current command files together on
193 your `PATH`: `codewhale` and `codew`. On Windows, the
194 recommended user-local location is `%LOCALAPPDATA%\Programs\CodeWhale\bin`.
195 On Unix-like systems, any user-writable `PATH` directory is fine as long as
196 both commands are present. Do not install a compatibility-only
197 `codewhale-tui-*` release filename as a third command.
198 - **Specified work directories**: running `codewhale` from a project directory,
199 or launching it with a specific workspace path, does not move project files.
200 Codewhale reads `<workspace>/.codewhale/config.toml` first and falls back to
201 legacy `<workspace>/.deepseek/config.toml` when the new path is absent.
202
203 If both `~/.codewhale/...` and `~/.deepseek/...` copies exist, the Codewhale
204 path wins. Keep the legacy directory until you have confirmed `codewhale
205 doctor`, `codewhale sessions`, and your expected skills all show the same state.
206
207 ### If sessions appear missing after an upgrade
208
209 Run `codewhale doctor` before copying or deleting anything. Doctor compares
210 top-level session JSON **filenames and filesystem metadata only** between
211 `~/.deepseek/sessions/` and `~/.codewhale/sessions/`. It does not read chat
212 contents, traverse `checkpoints/`, or modify either directory. The JSON form
213 exposes the same result at `legacy_state.session_recovery`.
214
215 If doctor lists recoverable filenames:
216
217 1. Back up both session directories (if present) and close other Codewhale
218 processes.
219 2. Run `codewhale sessions`. This invokes the existing additive migration,
220 which creates only missing destination files, never overwrites a file that
221 already exists under `~/.codewhale/sessions/`, skips checkpoint internals,
222 and leaves every legacy original in place.
223 3. Rerun `codewhale doctor`, then confirm the sessions appear with `codewhale
224 sessions`. If any filenames remain listed, keep both backups and report the
225 listed source/destination filenames without sharing chat contents.
226
227 An explicit `CODEWHALE_HOME` intentionally isolates that home and disables the
228 ambient `~/.deepseek` fallback. Doctor will not inspect the ambient legacy home
229 in that mode. To diagnose the default home without changing the isolated one,
230 use a separate shell with `CODEWHALE_HOME` unset and rerun `codewhale doctor`.
231
232 ## Why the name change
233
234 Codewhale is a shorter, terminal-friendlier handle for the same terminal
235 coding agent and the longer-term product direction: an agentic terminal for
236 open source and open-weight coding models, with DeepSeek — the provider the
237 project started with — remaining first-class alongside every other provider. The project name,
238 command names, package names, release assets, Docker image, and CNB mirror move
239 to Codewhale; the official DeepSeek provider, model IDs, env vars, and
240 `~/.deepseek/` config surface remain first-class.
241
242 ## Reporting issues with the rename
243
244 If your install broke during the migration, please open an issue at
245 <https://github.com/Hmbown/CodeWhale/issues> and include:
246
247 - The output of `codewhale --version` (or `deepseek --version` if you're
248 still on the shim).
249 - Which install path you used (npm, cargo, brew, manual).
250 - The exact command you ran and the full error output.
251
252 We'll prioritize migration regressions.
253
253 lines MARKDOWN