From 411ae89c192492ab8bdbed00b6360b461c7d32a2 Mon Sep 17 00:00:00 2001 From: Hunter Bown Date: Sun, 24 May 2026 16:45:44 -0500 Subject: [PATCH] fix(release): repair v0.8.44 gates --- CHANGELOG.md | 26 +++++++++-- CONTRIBUTING.md | 5 +++ README.md | 34 +++++++++++++++ crates/config/src/lib.rs | 3 +- crates/tui/CHANGELOG.md | 72 ++++++++++++++++++++++++++++++- crates/tui/src/main.rs | 14 +++--- crates/tui/src/session_manager.rs | 5 +-- crates/tui/src/tui/plan_prompt.rs | 5 +-- crates/tui/src/tui/ui.rs | 18 -------- npm/deepseek-tui/package.json | 2 +- 10 files changed, 144 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ae6abf3..f6fda0e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,9 +17,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Session picker inline rename.** Press `r` in the session picker (Ctrl+R) to rename the selected session inline. Type the new title, Enter to confirm, Esc to cancel (#1600). -- **Session picker on clean startup.** When saved sessions exist and no - `--resume`/`--continue`/`--fresh` flag is given, the session picker opens - automatically so you can pick up where you left off (#1638). - **Plan detail display.** The \"Plan Confirmation\" modal now shows the plan explanation and step list from `update_plan` so you can review what was proposed before accepting (#834). @@ -40,6 +37,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `.deepseek/config.toml`. Both are read; the CodeWhale root takes precedence. - **Doctor reports active state root** and whether legacy `~/.deepseek/` state is also present. +- **README contributor acknowledgements are current for this release.** + Thanks @jeoor, @LING71671, and @ousamabenyounes for the fixes and reports + now reflected in the public credits. +- **Harvested-contribution credit audit completed.** The README Thanks list now + includes previously missed community helpers whose code, reports, or review + notes were already credited in older changelog entries but not in the public + contributor surface: @mvanhorn, @krisclarkdev, @tdccccc, @LittleBlacky, + @AnaheimEX, @THatch26, @alvin1, @knqiufan, @IIzzaya, @duanchao-lab, + @imkingjh999, @eng2007, @chennest, @kunpeng-ai-lab, @asdfg314284230, + @maker316, @lalala-233, @muyuliyan, @czf0718, @MeAiRobot, @tiger-dog, + @MMMarcinho, @lucaszhu-hue, @sandofree, @zhuangbiaowei, @NorethSea, + @Jianfengwu2024, @Fire-dtx, @oooyuy92, @qinxianyuzou, @tyouter, + @xulongzhe, @YaYII, @47Cid, and @JafarAkhondali. +- **Harvest guidance now requires GitHub-visible attribution.** Maintainer + harvests should preserve the original commit author where possible or add + `Co-authored-by` trailers from the original PR commits, in addition to the + existing `Harvested from PR #N by @handle` trailer and changelog credit. - **Enter now steers when busy-waiting.** When the model is busy but not actively streaming (waiting on tool results, sub-agents, or shell commands), pressing Enter tries to steer your message into the current @@ -55,6 +69,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 preventing unbounded growth of `~/.codewhale/sessions/`. - **Checkpoint path resolution** no longer hardcodes `~/.deepseek/` — uses the resolved session directory instead. +- **Plain startup no longer auto-opens the session picker.** `codewhale` and + `codew` start in a fresh composer again even when saved sessions exist. + Use `/sessions`, Ctrl+R, `--resume`, or `--continue` when you want to resume. - **Work sidebar now refreshes immediately** after `checklist_write`, `checklist_update`, and `update_plan` tool calls, matching the existing `todo_write` behavior instead of relying on the 2.5s periodic poll (#1787). @@ -4789,7 +4806,8 @@ Welcome — and thank you. - Hooks system and config profiles - Example skills and launch assets -[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.43...HEAD +[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.44...HEAD +[0.8.44]: https://github.com/Hmbown/CodeWhale/compare/v0.8.43...v0.8.44 [0.8.43]: https://github.com/Hmbown/CodeWhale/compare/v0.8.42...v0.8.43 [0.8.42]: https://github.com/Hmbown/CodeWhale/compare/v0.8.41...v0.8.42 [0.8.41]: https://github.com/Hmbown/CodeWhale/compare/v0.8.40...v0.8.41 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0abba621..759b6d44 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -95,6 +95,11 @@ When this happens: - The harvested commit's message includes `Harvested from PR #N by @your-handle`. This is the contract: that line is your credit and the signal that your contribution shipped. +- If the maintainer copies or adapts your code, the harvested commit also + keeps attribution with the original author identity when possible: either by + preserving the commit author on a cherry-pick or by adding a + `Co-authored-by: Name ` trailer from the original PR commit. This is + what lets GitHub's contribution surfaces recognize more than prose credit. - The `CHANGELOG.md` entry for the next release credits you by handle. - The auto-close workflow closes your PR with a templated thank-you and a link to the commit on `main`. diff --git a/README.md b/README.md index 81a05c58..9bfcd26b 100644 --- a/README.md +++ b/README.md @@ -668,6 +668,40 @@ This project ships with help from a growing community of contributors: - **[eltociear](https://github.com/eltociear)** — Japanese README translation (#746) - **[Ling](https://github.com/LING71671)** — `grep_files` cancellation-token support and Ctrl+Z composer-draft recovery (#1839, #1911) - **[Ben Younes](https://github.com/ousamabenyounes)** — Linux Wayland (non-wlroots) clipboard support (#1938) +- **[Matt Van Horn](https://github.com/mvanhorn)** — Docker first-run permission fix and runtime system-prompt regression tests (#1699, #1702) +- **[Kristopher Clark](https://github.com/krisclarkdev)** — compaction user-query preservation fix (#1704) +- **[tdccccc](https://github.com/tdccccc)** — composer scroll fix and pager mouse-wheel support (#1715, #1716) +- **[LittleBlacky](https://github.com/LittleBlacky)** — provider-gated `reasoning_content` stream fix (#1680) +- **[Anaheim](https://github.com/AnaheimEX)** — `rlm_open` blank-source schema validation report (#1712) +- **[THatch26](https://github.com/THatch26)** — terminal resize paging fix (#1724) +- **[Alvin](https://github.com/alvin1)** — Zed ACP id compatibility report (#1696) +- **[knqiufan](https://github.com/knqiufan)** — sub-agent file-write delegation work (#1833) +- **[IIzzaya](https://github.com/IIzzaya)** — exact-alias-first slash-completion ordering idea (#1811) +- **[DC](https://github.com/duanchao-lab)** — terminal cleanup-guard idea (#1630) +- **[imkingjh999](https://github.com/imkingjh999)** — provider/model switching fixes (#1642) +- **[Photo](https://github.com/eng2007)** — provider-aware `/model` picker catalog work (#1201) +- **[chennest](https://github.com/chennest)** — diagnostics schema report (#1685) +- **[kunpeng-ai-lab](https://github.com/kunpeng-ai-lab)** — Windows composer scroll fix (#1578) +- **[WuMing](https://github.com/asdfg314284230)** — Windows PowerShell flicker fix (#1591) +- **[maker316](https://github.com/maker316)** — LoopGuard/checklist loop report (#1574) +- **[lalala](https://github.com/lalala-233)** — approval denial regression report (#1617) +- **[muyuliyan](https://github.com/muyuliyan)** — `pandoc_convert` validation fix (#1523) +- **[czf0718](https://github.com/czf0718)** — resize and turn-completion flicker fix (#1537) +- **[MeAiRobot](https://github.com/MeAiRobot)** — toast overlay composer-input fix (#1485) +- **[tiger-dog](https://github.com/tiger-dog)** — approval modal collapse and markdown identifier fixes (#1455) +- **[MMMarcinho](https://github.com/MMMarcinho)** — opt-in `image_analyze` vision tool (#1467) +- **[lucaszhu-hue](https://github.com/lucaszhu-hue)** — AtlasCloud provider integration (#1436) +- **[sandofree](https://github.com/sandofree)** — Tavily and Bocha `web_search` backends (#1294) +- **[zhuangbiaowei](https://github.com/zhuangbiaowei)** — `/change` release-notes command (#1416) +- **[NorethSea](https://github.com/NorethSea)** — updater companion-binary refresh fix (#1492) +- **[Jianfengwu2024](https://github.com/Jianfengwu2024)** — Windows MSVC toolchain environment preservation (#1487) +- **[Fire-dtx](https://github.com/Fire-dtx)** — npm postinstall recoverability work (#1059) +- **[oooyuy92](https://github.com/oooyuy92)** — long-session palette readability report (#1070, #936) +- **[qinxianyuzou](https://github.com/qinxianyuzou)** — zh-Hans destructive approval wording (#1087, #1091) +- **[tyouter](https://github.com/tyouter)** — session title/history preview cleanup (#1510) +- **[xulongzhe](https://github.com/xulongzhe)** — issue-template and vision-boundary follow-ups (#1530, #1544) +- **[YaYII](https://github.com/YaYII)** — trusted media path work (#1462) +- **[47Cid](https://github.com/47Cid)** and **[Jafar Akhondali](https://github.com/JafarAkhondali)** — responsible security disclosures and hardening reports --- diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index a687ab81..0b5992fa 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1565,8 +1565,7 @@ pub fn migrate_config_if_needed() -> Result<()> { } // Copy the config to the new home. if let Some(parent) = primary.parent() { - std::fs::create_dir_all(parent) - .context("failed to create codewhale config directory")?; + std::fs::create_dir_all(parent).context("failed to create codewhale config directory")?; } std::fs::copy(&legacy, &primary) .context("failed to migrate config from deepseek to codewhale home")?; diff --git a/crates/tui/CHANGELOG.md b/crates/tui/CHANGELOG.md index 5de583bf..f6fda0e4 100644 --- a/crates/tui/CHANGELOG.md +++ b/crates/tui/CHANGELOG.md @@ -7,6 +7,75 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.8.44] - 2026-05-24 + +### Added + +- **`codew` convenience alias.** `codew` is a short-form command that silently + forwards to `codewhale`. Six fewer keystrokes, same binary. Ships with the + Rust `codewhale-cli` crate and the npm `codewhale` package (#2013). +- **Session picker inline rename.** Press `r` in the session picker (Ctrl+R) + to rename the selected session inline. Type the new title, Enter to confirm, + Esc to cancel (#1600). +- **Plan detail display.** The \"Plan Confirmation\" modal now shows the plan + explanation and step list from `update_plan` so you can review what was + proposed before accepting (#834). +- **Agent team UX.** Delegate cards in the transcript now show human-readable + roles (scout, builder, reviewer, verifier, executor) and the completion + summary instead of raw `agent_xxx` IDs (#1981). +- **`--continue` / `-c` CLI flag.** `codewhale --continue` resumes your most + recent interactive session for the current workspace. + +### Changed + +- **App state migrates to `~/.codewhale/`.** New installs write product-owned + state (config, sessions, tasks, skills, logs, etc.) under `~/.codewhale/`. + `~/.deepseek/` continues to work as a compatibility fallback — no data loss, + no forced migration. `CODEWHALE_HOME` and `CODEWHALE_CONFIG_PATH` env vars + are now supported alongside existing `DEEPSEEK_*` vars (#2011). +- **Project config overlay prefers `.codewhale/config.toml`** before + `.deepseek/config.toml`. Both are read; the CodeWhale root takes precedence. +- **Doctor reports active state root** and whether legacy `~/.deepseek/` + state is also present. +- **README contributor acknowledgements are current for this release.** + Thanks @jeoor, @LING71671, and @ousamabenyounes for the fixes and reports + now reflected in the public credits. +- **Harvested-contribution credit audit completed.** The README Thanks list now + includes previously missed community helpers whose code, reports, or review + notes were already credited in older changelog entries but not in the public + contributor surface: @mvanhorn, @krisclarkdev, @tdccccc, @LittleBlacky, + @AnaheimEX, @THatch26, @alvin1, @knqiufan, @IIzzaya, @duanchao-lab, + @imkingjh999, @eng2007, @chennest, @kunpeng-ai-lab, @asdfg314284230, + @maker316, @lalala-233, @muyuliyan, @czf0718, @MeAiRobot, @tiger-dog, + @MMMarcinho, @lucaszhu-hue, @sandofree, @zhuangbiaowei, @NorethSea, + @Jianfengwu2024, @Fire-dtx, @oooyuy92, @qinxianyuzou, @tyouter, + @xulongzhe, @YaYII, @47Cid, and @JafarAkhondali. +- **Harvest guidance now requires GitHub-visible attribution.** Maintainer + harvests should preserve the original commit author where possible or add + `Co-authored-by` trailers from the original PR commits, in addition to the + existing `Harvested from PR #N by @handle` trailer and changelog credit. +- **Enter now steers when busy-waiting.** When the model is busy but not + actively streaming (waiting on tool results, sub-agents, or shell + commands), pressing Enter tries to steer your message into the current + turn instead of silently queueing it. During active streaming, Enter + still queues to avoid interrupting in-flight reasoning (#2009). + +### Fixed + +- **`/save` no longer creates repo-local `session_*.json`.** Default saves + now go to the managed sessions directory instead of the current workspace. + Explicit `/save path/to/file.json` exports still work as before (#2010). +- **Boot-time session prune** caps managed sessions at 50 on every startup, + preventing unbounded growth of `~/.codewhale/sessions/`. +- **Checkpoint path resolution** no longer hardcodes `~/.deepseek/` — uses + the resolved session directory instead. +- **Plain startup no longer auto-opens the session picker.** `codewhale` and + `codew` start in a fresh composer again even when saved sessions exist. + Use `/sessions`, Ctrl+R, `--resume`, or `--continue` when you want to resume. +- **Work sidebar now refreshes immediately** after `checklist_write`, + `checklist_update`, and `update_plan` tool calls, matching the existing + `todo_write` behavior instead of relying on the 2.5s periodic poll (#1787). + ## [0.8.43] - 2026-05-24 ### Fixed @@ -4737,7 +4806,8 @@ Welcome — and thank you. - Hooks system and config profiles - Example skills and launch assets -[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.43...HEAD +[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.44...HEAD +[0.8.44]: https://github.com/Hmbown/CodeWhale/compare/v0.8.43...v0.8.44 [0.8.43]: https://github.com/Hmbown/CodeWhale/compare/v0.8.42...v0.8.43 [0.8.42]: https://github.com/Hmbown/CodeWhale/compare/v0.8.41...v0.8.42 [0.8.41]: https://github.com/Hmbown/CodeWhale/compare/v0.8.40...v0.8.41 diff --git a/crates/tui/src/main.rs b/crates/tui/src/main.rs index 5c2dbcb2..34cb7fce 100644 --- a/crates/tui/src/main.rs +++ b/crates/tui/src/main.rs @@ -1575,9 +1575,9 @@ fn resolve_cors_origins(config: &Config, flag_origins: &[String]) -> Vec } fn deepseek_home_dir() -> PathBuf { - codewhale_config::codewhale_home() - .unwrap_or_else(|_| dirs::home_dir() - .map_or_else(|| PathBuf::from(".codewhale"), |h| h.join(".codewhale"))) + codewhale_config::codewhale_home().unwrap_or_else(|_| { + dirs::home_dir().map_or_else(|| PathBuf::from(".codewhale"), |h| h.join(".codewhale")) + }) } /// Resolve the default tools directory. Mirrors `default_skills_dir` shape. @@ -2076,10 +2076,10 @@ async fn run_doctor(config: &Config, workspace: &Path, config_path_override: Opt // State root (v0.8.44) println!(); println!("{}", "State Root:".bold()); - let code_home = codewhale_config::codewhale_home() - .unwrap_or_else(|_| PathBuf::from("~/.codewhale")); - let legacy_home = codewhale_config::legacy_deepseek_home() - .unwrap_or_else(|_| PathBuf::from("~/.deepseek")); + let code_home = + codewhale_config::codewhale_home().unwrap_or_else(|_| PathBuf::from("~/.codewhale")); + let legacy_home = + codewhale_config::legacy_deepseek_home().unwrap_or_else(|_| PathBuf::from("~/.deepseek")); let active_root = if code_home.exists() { &code_home } else if legacy_home.exists() { diff --git a/crates/tui/src/session_manager.rs b/crates/tui/src/session_manager.rs index 0ae53e4d..c5a69193 100644 --- a/crates/tui/src/session_manager.rs +++ b/crates/tui/src/session_manager.rs @@ -617,9 +617,8 @@ fn is_git_metadata_entry(path: &Path) -> bool { /// v0.8.44: prefers `~/.codewhale/sessions`, falls back to /// `~/.deepseek/sessions` for existing installs. pub fn default_sessions_dir() -> std::io::Result { - codewhale_config::resolve_state_dir("sessions").map_err(|e| { - std::io::Error::new(std::io::ErrorKind::NotFound, e.to_string()) - }) + codewhale_config::resolve_state_dir("sessions") + .map_err(|e| std::io::Error::new(std::io::ErrorKind::NotFound, e.to_string())) } /// Prune snapshots older than `max_age` for `workspace`. diff --git a/crates/tui/src/tui/plan_prompt.rs b/crates/tui/src/tui/plan_prompt.rs index 01e3faec..5ac2da1c 100644 --- a/crates/tui/src/tui/plan_prompt.rs +++ b/crates/tui/src/tui/plan_prompt.rs @@ -102,10 +102,7 @@ pub struct PlanPromptView { impl PlanPromptView { pub fn new(plan: Option) -> Self { - Self { - selected: 0, - plan, - } + Self { selected: 0, plan } } fn max_index(&self) -> usize { diff --git a/crates/tui/src/tui/ui.rs b/crates/tui/src/tui/ui.rs index 897834e6..c0008c91 100644 --- a/crates/tui/src/tui/ui.rs +++ b/crates/tui/src/tui/ui.rs @@ -474,24 +474,6 @@ pub async fn run_tui(config: &Config, options: TuiOptions) -> Result<()> { }; refresh_active_task_panel(&mut app, &task_manager).await; - // v0.8.44: push session picker on clean startup when saved sessions - // exist and no explicit resume was requested (#1638). - if options.resume_session_id.is_none() - && options.initial_input.is_none() - && !options.skip_onboarding - { - if let Ok(manager) = crate::session_manager::SessionManager::default_location() { - if let Ok(sessions) = manager.list_sessions() { - if !sessions.is_empty() { - app.view_stack - .push(crate::tui::session_picker::SessionPickerView::new( - &app.workspace, - )); - } - } - } - } - let engine_config = build_engine_config(&app, config); // Spawn the Engine - it will handle all API communication diff --git a/npm/deepseek-tui/package.json b/npm/deepseek-tui/package.json index cb6063b8..bbca3bb6 100644 --- a/npm/deepseek-tui/package.json +++ b/npm/deepseek-tui/package.json @@ -1,6 +1,6 @@ { "name": "deepseek-tui", - "version": "0.8.43", + "version": "0.8.44", "description": "Legacy compatibility package. Renamed to `codewhale`; run `npm install -g codewhale` for new installs.", "author": "Hmbown", "license": "MIT",