Skip to content

0.10.2: Terminal dock, shell wait controls, recovery and contributor fixes - #6907

Merged
Hmbown merged 61 commits into
mainfrom
wave/0.10.2
Oct 9, 2026
Merged

Hmbown merged 61 commits into
mainfrom
wave/0.10.2

Conversation

@Hmbown

@Hmbown Hmbown commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

This 0.10.2 candidate adds a usable Terminal dock, lets operators release a shell wait while the command keeps running, repairs shared Runtime recovery and approval routing, and simplifies the homepage around actual capabilities, models, integrations and installation.

Candidate: 1bddf50a7e584eba454854fe674624cd4ae6fcd0 (previous head 5392b9a3b059ae945f852aac672a901b10e70e52). Merge requires every applicable check on this exact head to pass.

Changes

  • Terminal dock: /workbar terminal lists workspace PTY sessions, renders ANSI output, resizes the selection and accepts keyboard input. Ctrl+N opens a shell; Alt+Up/Alt+Down select sessions; Esc returns to the composer. Input validates the displayed session identity and current policy. Current-shell variables, directories, aliases and interactive stdin are preserved. Canonical-mode raw batches of 1024 bytes or more are refused before writing across the dock, terminal/send and Runtime API. Live PTYs are supported on macOS/Linux; Windows shows an explicit limitation.

  • Shell waits: Ctrl+B and same-turn steering release all currently active waits owned by the current session, including background-task barriers. Commands keep running in /jobs. Cancellation keeps its existing meaning; other sessions and later waits remain independent, and output deltas are not replayed.

  • Child approvals: child approval receipts keep the actual decider (Engine, Host or user). A timeout stays a denial attributed to Host.

  • Recovery, plugins and approvals: startup holds the shared store lease through owner admission/recovery, verifies process/publication identity before retiring stale endpoints and bounds contention without replaying an uncertain attach. Hard-linked private files remain refused. Plugin discovery excludes staging/backup directories, local updates compare the installed bundle, and failed publication preserves competing destinations and recovery copies. Runtime uses the incumbent disposition resolver before automatic approval. ACP projects that same authority: ordinary Full Access writes run, built-in and repository policy holds fail closed, and Rust-minted forced extension requests retain their permission round trip.

  • Files, review and providers: simultaneous API creates return 201+409 without overwriting the winner. /undo restores a whole request while preserving later hand edits, and refuses ambiguous or unmatched requests; /diff uses session restore points outside Git; Esc Esc explains retained file edits. Plan hand-off, MCP discovery/status, background-shell cancellation, provider timeout/truncation diagnostics and cache-write accounting improve. Omitted or zero goal step limits use the shared uncapped resolver; positive limits retain their clamp. Validated MCP/provider OAuth callbacks allow fifteen minutes.

  • Website: show one actual native TUI capture below the introduction, with Ratatui components on their own page. Replace rotating views and the invented report demo with straightforward copy about building apps, automating work, using connected tools and choosing existing model APIs or local/self-hosted inference. Remove clipped slogans and internal verification prose from product, plugins, setup guides and common states. Update all eighteen homepage and Computer Use locale packs plus shared catalogs. Replace broad Slack/Gmail promises with per-service setup and authentication; documentation distinguishes Slack bot commands from agent service tools and records the missing hosted qualification. Preserve the brand, whale and explicit release/development availability. Published-release facts identify v0.10.1.

  • Release: version stamping includes fixtures, and all crate tarballs are checked before the first upload. The v0.10.1 release record is merged. CI retains bounded apt installs, the persistence budget and the extension harness deadline.

  • Computer Use: vendor canonical 59725a28b224 (CU PR14): compact since observation diffs with complete state targeting, fresh unique named batch lookup, completed-effect receipts and optional final reads. Failed waits/ambiguous/stale targets stop before further input. macOS query/role reaches the native deeper walk and common key spellings work. Preserve per-call permission/grant/route/human-control gates, existing Engine guidance delivery and intentional bundle variants.

Contributors

The original PRs are merged into the integration branch with their history preserved: #6906 by @jayanthvee (Windows npm launcher guidance), #6913 by @dajiaohuang (cache-write accounting, repaired on the original fork), #6916 by @gaord (embedder telemetry surface, preserving opt-outs), and #6919 by @Lstarsky0 (localized profile replies). OAuth callback-window reference: @asto18089. Provider failure reports: @BX166. All four original heads remain ancestors of this candidate.

Candidate 1bddf50

This head adds one repair commit on 5392b9a3b0: fix(tui): repair undo identity, child approvals, plan handoff, OCR test (23 files). It addresses the open review thread on undo request identity (debug_operations.rs:245-251), the Plan hand-off thread (plan_handoff.rs:48, #6902), and the OCR cancellation fixture. The CHANGELOG ownership thread is a maintainer question and stays open.

Local evidence (macOS arm64, debug, library tests; not hosted CI):

  • cargo test -p codewhale-tui --lib --locked --no-run -j 2: exit 0, 0 errors.
  • With RUST_MIN_STACK=8388608, the workflow-level value in ci.yml: plan_handoff 16/16 and core::engine::tests::child_host 19/19 pass.
  • With the 2 MiB default test-thread stack: plan_handoff 15/16 and child_host 10/19 pass. The rest overflow the stack in debug builds. The measured need is 4 to 8 MiB. All nine overflowing child_host tests exist at the previous head and passed its Linux and macOS CI.
  • debug_mutation_host_tests 38/38; an_agent_approval_answer_reaches_the_agent_while_the_engine_is_busy 1/1; image_ocr::host_tests 8/8, including real_host_ocr_cancellation_bounds_parser_tree_and_never_replays.
  • cargo fmt -p codewhale-tui -- --check and git diff --check: clean.

Not run here: the full 19k-test suite, nextest, Windows, doctests, and macOS hosted timing. Hosted checks on this exact head are the qualifying evidence.

Follow-up before merge: .github/workflows/ci.yml sets RUST_MIN_STACK to 8 MiB, while the comment in .config/nextest.toml says 16 MiB. Reconcile the two.

Refs #6912, #6915, #6910, #6911, #6512, #6865, #6889, #6902, #6909, #6471

These are related or partial work. Closing keywords are added only before merge, and only for items the merged head demonstrably closes.

Earlier receipts (before the repair; superseded for 1bddf50)

  • The shell-wait repair passes 17/17 focused checks. ACP Runtime projection passes 1/1; the actual ACP Engine policy/repository-law case passes 1/1 after correcting the fixture's operator/client terminal admission. The original failed fixture receipt is retained. Localization passes 54/54 across the fifteen complete packs. Formatting and TUI/CLI all-target/all-feature warnings-as-errors Clippy pass; the fresh CLI build passes.
  • The actual native CLI walkthrough passes 2/2: Ctrl+B releases a 600000ms wait in 0.071s, steering in 0.490s. Both processes survive, each output canary appears once, and the steer reaches the model. All five owned PIDs and three process groups are independently verified absent after cleanup. Binary SHA256: 55b24c2980ece253d9ab367951e372206f7a8133cbc1899b423a7d0f0067719c. Subsequent Rust changes are test-only; production Rust/localization bytes are unchanged. Website and documentation changes are qualified separately below. The seven model requests use a loopback fixture.
  • The prior b7 candidate's Ubuntu job ran 19098 tests: 19096 passed, 2 failed, 34 skipped. Both failures were obsolete OAuth/local-plugin expectations. The previous Windows job likewise passed 18364 and failed 2, with 27 skipped; its raw log confirms the same two stale expectations. Their repairs plus the existing local-update preservation control now pass 3/3. The prior Windows recorder job passed 75/76; the rotation test depended on wall-clock scheduling despite the recorder permitting stall recovery. The raw Windows log does not establish a specific stall. A controlled fixture clock preserves exact archive-row assertions, and all 11/11 recorder tests pass locally, including suspension, lock and history-preservation controls. Original failed logs are retained.
  • Earlier receipts remain separate: Terminal/dock 208/208; cache/goal/OAuth 23/23; profile 1/1; telemetry 11/11 and 53/53; startup/plugin/approval 77/77; private-file/config 18/18; server 22/22; registry 6/6. Earlier rebuilt CLI dcb50251908d passes actual 80/80 isolated startup checks and 9/9 native app recovery checks with zero provider requests. These precede the shell-wait change and do not substitute for merged-SHA qualification. Files creation passes 4/4 tests and 8/8 two-process trials; the separate existing-file revision-check/replace race remains open.
  • npm test && npm run check:web passes on the exact 52 final website/docs paths: wrapper 101, SDK 19, extension host 413 passed/7 skipped, dependency guards 7, web 74 files/772 tests; 894 static pages, 0 lint errors/1 existing warning. All eighteen locale packs and en/zh catalogs pass parity. Final English desktop/mobile previews show one actual native TUI frame, no page overflow and the corrected headline wrapping. Earlier layout checks also covered light/dark, Chinese and Arabic RTL. Original failed receipts are retained; the final gate records stable source hashes. Notes/credit checks previously passed 24/24 and shell-wait notes 18/18.
  • The prior pinned Cloudflare build and prebuilt dry run passed at earlier source 824c7314f7, with no upload, cache population or deployment. The homepage has since changed; this older bundle is historical adapter/configuration evidence. The deployment workflow must rebuild the actual merged source.
  • All 28 actual tarballs at the earlier clean 6d9fb2150e head pass the 10485760-byte guard and are saved with hashes/VCS metadata. TUI is 9950054 bytes (9.49 MiB, 94% of the cap). The final copy-only commit changes no crate source. These remain earlier-head receipts; merged-SHA packaging/qualification is still required. No uploads occurred.
  • Superseded hosted runs for the previous head 5392b9a3…: CI 37776827010, Web 37776826989, Pet 37776826967, OpenHarmony 37776826963, CodeQL 37776826932, cargo-deny 37776826920, telemetry 37776826996, DCO 37776827108 and security audit 37776826972. Read their actual results before merging. Runs on 6d9fb2150e or older source are superseded and do not qualify this head. Earlier author-credit and OHOS target-selection failures are retained and repaired.

After all applicable final-head checks pass, merge with contributor history preserved and qualify the actual merged SHA with RC and shared-process-twice checks. Website deployment is approved. Dispatch the main-only website workflow after green integration and verify the exact public revision. Tagging and release publication still require human approval. No deployment or publication has occurred yet.

Computer Use integration qualification

Integration head 1bddf50a7e584eba454854fe674624cd4ae6fcd0 includes the reviewed canonical Computer Use source 59725a28b224, on top of 5392b9a3b059ae945f852aac672a901b10e70e52. The slice adds only the owned runtime/guide/test files and the public preview registry row; unrelated local documentation, web and avatar work is excluded. Engine sessions, logged MCP instruction delivery, approvals and deliberate bundle variants are preserved.

  • Final embedded protocol/manifest/guide gate: 67 passed, 0 failed, 0 skipped. Canonical full gate: 442 passed, 0 failed, 27 skipped (469 total). Marketplace full gate: 1,036 passed, 0 failed, 36 skipped; browser 13 passed, 9 skipped. Complete runtime byte equality across all three copies, catalog, wiki and diff checks pass.
  • Review controls refuse named uniqueness/absence from truncated walks, preserve missing-app absent waits without a target state, reject merged aliases selecting another computer, preflight existing pure argument checks, and keep unsuccessful wait rechecks out of the targeting cache. Three sets of negative checks fail against their respective previous source. Runtime conditions remain per-call; batches preserve earlier effects rather than promising atomicity.
  • Direct-source MCP/native AppKit oracle confirms named Unicode edit + Apply, diff reads and ambiguity refusal. Earlier failed settling assertions are retained; final bounded read-only settling checks pass. Action foreground/pointer samples are unchanged; fixture launch changes foreground. This is not continuous coexistence or an installed/real-model task.
  • The preceding npm test && npm run check:web passed in the existing release checkout: extension host 413 passed / 7 skipped, web Node 12/12, web Vitest 772/772, web build/type/docs/lint successful with one existing warning. These are local receipts from a shared checkout, and precede the final CU-only fixes. No Rust source is changed or exhaustive Rust/build acceptance claimed; all applicable hosted checks must pass on the exact integration head.

SHA-6352/C16 remains open for installed-model, fresh-grant and human-coexistence acceptance. No install, publication, provider spend or deploy is performed. Refs SHA-6645.

CodeWhale Bot and others added 28 commits October 7, 2026 15:23
Conflict resolution against the undo commit: /diff takes diff-command's
implementation (session restore points first, then the workspace repo, with a
rev-parse probe replacing undo's exit-status check). The undo commit's test
diff_outside_a_git_repository_says_so_instead_of_no_changes now expects the
NoBaseline message instead of 'Git diff failed'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The footer change itself is already in the undo commit with the wording from
UNDO-DESIGN.md ('Files not changed; conversation rewound. /undo puts files
back'), so this patch's BACKTRACK_REWOUND_NOTICE hunk in apply.rs is dropped.
Kept: the docs and the footer-width test, rewritten to the design wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applied cleanly on top of edit-approval-preview and approval-default-and-labels;
all 15 locale packs carry the same 2486 keys as en.json.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applied from the reviewer's on-disk 3-line-context diff
(qa-tmp/batch-0102/mcp-cli-and-status/review/mcp-cli-and-status.reviewed.patch);
both the saved corrected patch and the original in all.json are corrupt at
line 506. It carries the reviewer's one fix: the doc comment on
mcp_subcommand_help names McpCommand in plain backticks, not as an intra-doc
link to a private item.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On Windows npm installs the launcher's node.exe stays codewhale.exe's parent, so killing node.exe by name ends the session (#6827). Tell the agent up front, as a static fact, so it stops servers by PID or port instead of hitting the safety gate.

Signed-off-by: Jayanth Vasupilli <156448548+jayanthvee@users.noreply.github.com>
…n record_mcp_configured_servers

The method takes &ToolSurfacePolicy (pub(in crate::core::engine)) but was
pub(super), which -D warnings rejects. Its only callers are engine submodules,
so module-private is enough.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/profile answered in English whatever the UI language: the usage text,
"Switching to profile ...", the "Switched to profile ..." line with the
new model and provider, the "Profile: ..." status, and the failure
status. Move the five into the locale packs.

The zh-Hans and zh-Hant descriptions of the command also said "config"
twice (配置配置文件, 設定設定檔案); fix those while here.

English output is unchanged.

Signed-off-by: Lstarsky0 <59827030+Lstarsky0@users.noreply.github.com>
…in the wrap test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Hmbown Hmbown added this to the v0.10.2 milestone Oct 8, 2026
@Hmbown Hmbown added the v0.10.2 Targeting v0.10.2 label Oct 8, 2026
CodeWhale Bot added 2 commits October 8, 2026 03:06
Exercise localized usage, missing-profile and successful-switch replies while
preserving the selected profile action and stable command vocabulary. Keep
this maintainer regression above the original contributor PR #6919 merge.

Validation at source 499468bbf066: the localized profile command test 1/1 PASS;
localization 54/54 PASS, all 15 complete packs share 2502 keys. These receipts
precede the unrelated startup repair. Production TUI/CLI all-target/all-feature
warnings-as-errors Clippy and CLI build PASS. Final combined hosted CI remains
required before main.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
The original #6913 commit uses Wu Shuwen <mikewushuwen@outlook.com>.
GitHub identifies that exact original commit as @dajiaohuang, user108231307.
Record both aliases in the existing author map so the release credit guard
finds the existing canonical, changelog and website credits.

Validation: scripts/check-contributor-credit.py PASS for all5 contributors
since v0.10.1 and all3 credit surfaces; git diff --check PASS. Retain the
preceding hosted Version drift failure from run37760698490/job113256494428.
This identity-data-only repair changes no production Rust or website rendering.
Earlier required npm/web gate:101 wrapper,19 SDK,413 extension/7skip,7 guard,
74 web files/772 tests PASS; check:web PASS,894 pages,0errors/1warning.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
@Hmbown Hmbown changed the title 0.10.2: undo and diff, plan hand-off, MCP CLI, provider truncation fixes 0.10.2: Terminal dock, safe recovery, contributor fixes and website redesign Oct 8, 2026
@Hmbown
Hmbown marked this pull request as ready for review October 8, 2026 10:10
Copilot AI balanced review requested due to automatic review settings October 8, 2026 10:10

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Devin Review

Comment thread CHANGELOG.md

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Changelog ownership needs review

This PR edits both changelogs, while contribution guidance reserves entries for merge time. Check whether the issue-linked feat: exception requires these hunks.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The #6902 hand-off still skips prose-only plans and does not seed approved plans into To-dos, while final CI remains in progress.

1 open finding
What changed in this PR

This release candidate integrates Terminal dock support, safer Runtime/plugin recovery, workflow and provider fixes, localization, website redesign, and synchronized v0.10.2 release infrastructure.

Changes:

  • Adds interactive PTY monitoring/input and strengthens Runtime, plugin, file, and approval safety.
  • Restores request-level undo/diff and a partial Plan-to-Work hand-off; improves provider limits and telemetry.
  • Refreshes documentation, localization, website content, package versions, and release checks.
File Description
.github/​AUTHOR_MAP Adds contributor aliases.
.github/​workflows/​ci.yml Updates CI behavior.
CHANGELOG.md Records v0.10.2 changes.
Cargo.lock Updates Rust dependency lock.
Cargo.toml Updates workspace release metadata.
README.ar.md Updates Arabic documentation.
README.ca.md Updates Catalan documentation.
README.de.md Updates German documentation.
README.es-419.md Updates Spanish documentation.
README.fr.md Updates French documentation.
README.hi.md Updates Hindi documentation.
README.id.md Updates Indonesian documentation.
README.it.md Updates Italian documentation.
README.ja-JP.md Updates Japanese documentation.
README.ko-KR.md Updates Korean documentation.
README.md Updates primary project documentation.
README.pl.md Updates Polish documentation.
README.pt-BR.md Updates Portuguese documentation.
README.ru.md Updates Russian documentation.
README.tr.md Updates Turkish documentation.
README.uk.md Updates Ukrainian documentation.
README.vi.md Updates Vietnamese documentation.
README.zh-CN.md Updates Simplified Chinese documentation.
README.zh-TW.md Updates Traditional Chinese documentation.
crates/​agent/​Cargo.toml Bumps crate metadata.
crates/​app-server/​Cargo.toml Bumps app-server metadata.
crates/​app-server/​src/​daemon_client.rs Revalidates stale Runtime ownership.
crates/​app-server/​src/​daemon_socket.rs Safely retires and republishes endpoints.
crates/​app-server/​src/​lib.rs Integrates app-server changes.
crates/​app-server/​tests/​daemon_socket.rs Tests daemon recovery.
crates/​cli/​Cargo.toml Bumps CLI metadata.
crates/​cli/​src/​lib.rs Updates CLI behavior.
crates/​cloud-facts/​Cargo.toml Bumps crate metadata.
crates/​command-contract/​Cargo.toml Bumps command-contract metadata.
crates/​command-contract/​src/​facets.rs Extends command facets.
crates/​command-contract/​src/​facets/​debug_operations.rs Updates debug command contracts.
crates/​command-contract/​src/​outcome.rs Extends typed outcomes.
crates/​command-contract/​src/​tests.rs Tests command contracts.
crates/​config/​Cargo.toml Bumps config metadata.
crates/​config/​src/​private_directory.rs Hardens private-file handling.
crates/​config/​src/​route/​providers-export.golden.json Refreshes provider fixture.
crates/​core/​Cargo.toml Bumps core metadata.
crates/​execpolicy/​Cargo.toml Bumps policy metadata.
crates/​execpolicy/​src/​command_safety.rs Updates command safety rules.
crates/​hooks/​Cargo.toml Bumps hooks metadata.
crates/​lane/​Cargo.toml Bumps lane metadata.
crates/​localization/​Cargo.toml Bumps localization metadata.
crates/​localization/​locales/​ca.json Localizes profile and workflow text.
crates/​localization/​locales/​de.json Localizes profile and workflow text.
crates/​localization/​locales/​en.json Adds source locale strings.
crates/​localization/​locales/​es-419.json Localizes profile and workflow text.
crates/​localization/​locales/​fr.json Localizes profile and workflow text.
crates/​localization/​locales/​hi.json Localizes profile and workflow text.
crates/​localization/​locales/​id.json Localizes profile and workflow text.
crates/​localization/​locales/​ja.json Localizes profile and workflow text.
crates/​localization/​locales/​ko.json Localizes profile and workflow text.
crates/​localization/​locales/​pt-BR.json Localizes profile and workflow text.
crates/​localization/​locales/​ru.json Localizes profile and workflow text.
crates/​localization/​locales/​uk.json Localizes profile and workflow text.
crates/​localization/​locales/​vi.json Localizes profile and workflow text.
crates/​localization/​locales/​zh-Hans.json Localizes profile and workflow text.
crates/​localization/​locales/​zh-Hant.json Localizes profile and workflow text.
crates/​localization/​src/​lib.rs Extends localization identifiers.
crates/​models/​Cargo.toml Bumps models metadata.
crates/​models/​src/​lib.rs Adds output-ceiling semantics.
crates/​palette/​Cargo.toml Bumps palette metadata.
crates/​runtime/​Cargo.toml Bumps Runtime metadata.
crates/​runtime/​src/​goal_loop.rs Makes default goal steps uncapped.
crates/​secrets/​Cargo.toml Bumps secrets metadata.
crates/​state/​Cargo.toml Bumps state metadata.
crates/​telemetry/​Cargo.toml Bumps telemetry metadata.
crates/​telemetry/​src/​event.rs Adds embedder telemetry.
crates/​telemetry/​src/​tests.rs Tests telemetry changes.
crates/​tools/​Cargo.toml Bumps tools metadata.
crates/​tui/​CHANGELOG.md Records TUI changes.
crates/​tui/​Cargo.toml Updates TUI dependencies and version.
crates/​tui/​src/​acp_server.rs Updates ACP Runtime behavior.
crates/​tui/​src/​client/​stream_entry.rs Handles stream completion details.
crates/​tui/​src/​client/​wire.rs Parses cache-write usage.
crates/​tui/​src/​commands/​contract.rs Integrates command contract changes.
crates/​tui/​src/​commands/​contract/​debug_operations.rs Implements request undo and session diff.
crates/​tui/​src/​commands/​contract/​fixtures/​config_policy/​status.json Refreshes policy fixture.
crates/​tui/​src/​commands/​debug_group.rs Updates debug commands.
crates/​tui/​src/​commands/​debug_mutation_host_tests.rs Tests mutation routing.
crates/​tui/​src/​commands/​groups/​config/​config.rs Adds Terminal dock configuration.
crates/​tui/​src/​commands/​groups/​core/​core.rs Updates core command behavior.
crates/​tui/​src/​commands/​groups/​debug/​operations_tests.rs Tests undo and diff.
crates/​tui/​src/​commands/​groups/​debug/​undo.rs Formats request-level undo outcomes.
crates/​tui/​src/​commands/​groups/​plugins/​mod.rs Updates plugin commands.
crates/​tui/​src/​commands/​groups/​plugins/​tests.rs Tests plugin commands.
crates/​tui/​src/​commands/​groups/​session/​control_test_support.rs Updates session test support.
crates/​tui/​src/​commands/​groups/​session/​relay.rs Repairs relay behavior.
crates/​tui/​src/​commands/​groups/​skills/​restore.rs Updates restore handling.
crates/​tui/​src/​commands/​mod.rs Registers command changes.
crates/​tui/​src/​commands/​session_acceptance.rs Updates session acceptance tests.
crates/​tui/​src/​compaction/​last_round.rs Adjusts compaction behavior.
crates/​tui/​src/​config.rs Updates limits and callback configuration.
crates/​tui/​src/​config/​tests.rs Tests configuration changes.
crates/​tui/​src/​context_report.rs Updates context reporting.
crates/​tui/​src/​core/​authority.rs Centralizes permission resolution.
crates/​tui/​src/​core/​engine.rs Integrates engine behavior changes.
crates/​tui/​src/​core/​engine/​approval.rs Updates approval routing.
crates/​tui/​src/​core/​engine/​streaming.rs Handles stream-limit outcomes.
crates/​tui/​src/​core/​engine/​tests/​profile_constitution.rs Tests profile behavior.
crates/​tui/​src/​core/​engine/​tests/​test_cases_20.rs Extends engine regressions.
crates/​tui/​src/​core/​engine/​turn_loop/​continuation.rs Updates turn continuation.
crates/​tui/​src/​core/​engine/​turn_loop/​model_step.rs Detects provider output ceilings.
crates/​tui/​src/​core/​engine/​turn_loop/​preparation.rs Updates turn preparation.
crates/​tui/​src/​lib.rs Exposes integrated TUI changes.
crates/​tui/​src/​mcp.rs Improves MCP status and discovery.
crates/​tui/​src/​mcp/​oauth.rs Extends MCP OAuth callback timeout.
crates/​tui/​src/​mcp/​tests.rs Tests MCP changes.
crates/​tui/​src/​oauth.rs Extends provider OAuth timeout.
crates/​tui/​src/​plugins/​builtin.rs Updates bundled plugins.
crates/​tui/​src/​plugins/​discovery.rs Excludes internal plugin paths.
crates/​tui/​src/​plugins/​discovery_internal_paths_tests.rs Tests discovery exclusions.
crates/​tui/​src/​plugins/​install/​dsh.rs Updates DSH installation.
crates/​tui/​src/​plugins/​install/​dsh_tests.rs Tests DSH installation.
crates/​tui/​src/​plugins/​install/​mod.rs Improves plugin update handling.
crates/​tui/​src/​plugins/​install/​place.rs Publishes plugins exclusively.
crates/​tui/​src/​plugins/​install/​stage.rs Updates staged installation.
crates/​tui/​src/​plugins/​install/​tests.rs Tests plugin installation.
crates/​tui/​src/​plugins/​install/​tests/​place_recovery.rs Tests publication recovery.
crates/​tui/​src/​plugins/​mutation.rs Updates plugin mutations.
crates/​tui/​src/​profile_constitution.rs Localizes profile responses.
crates/​tui/​src/​prompts.rs Updates prompt assembly.
crates/​tui/​src/​receipts.rs Updates persisted receipts.
crates/​tui/​src/​runtime_api.rs Integrates Runtime API changes.
crates/​tui/​src/​runtime_api/​plugins.rs Updates plugin API behavior.
crates/​tui/​src/​runtime_api/​terminal.rs Guards Runtime terminal input.
crates/​tui/​src/​runtime_api/​tests.rs Tests Runtime APIs.
crates/​tui/​src/​runtime_api/​tests/​owner_bootstrap.rs Tests owner recovery.
crates/​tui/​src/​runtime_api/​workspace.rs Makes file creation exclusive.
crates/​tui/​src/​runtime_handoff.rs Updates Runtime hand-off state.
crates/​tui/​src/​runtime_threads.rs Repairs Runtime threads and approvals.
crates/​tui/​src/​runtime_threads/​tests.rs Tests Runtime thread behavior.
crates/​tui/​src/​settings.rs Adds Terminal dock settings.
crates/​tui/​src/​snapshot/​repo.rs Supports session diff and safer restore.
crates/​tui/​src/​task_manager.rs Repairs task lifecycle behavior.
crates/​tui/​src/​tests/​telemetry_surface.rs Tests telemetry surfaces.
crates/​tui/​src/​tools/​approval_summary.rs Clarifies approval summaries.
crates/​tui/​src/​tools/​shell.rs Repairs shell execution behavior.
crates/​tui/​src/​tools/​shell/​tests.rs Tests shell changes.
crates/​tui/​src/​tools/​subagent/​mod.rs Updates subagent behavior.
crates/​tui/​src/​tools/​subagent/​tests.rs Tests subagent behavior.
crates/​tui/​src/​tools/​tasks.rs Updates task tools.
crates/​tui/​src/​tools/​terminal_session.rs Adds safe PTY input and concurrency.
crates/​tui/​src/​tui/​app.rs Integrates Plan and Terminal state.
crates/​tui/​src/​tui/​app/​tests.rs Tests application state.
crates/​tui/​src/​tui/​app/​types.rs Extends application types.
crates/​tui/​src/​tui/​approval.rs Updates approval presentation.
crates/​tui/​src/​tui/​approval/​previews.rs Clarifies edit previews.
crates/​tui/​src/​tui/​approval/​tests.rs Tests approval UI.
crates/​tui/​src/​tui/​auto_review.rs Updates Auto-Review behavior.
crates/​tui/​src/​tui/​goldens/​dock_80x24.txt Refreshes dock golden output.
crates/​tui/​src/​tui/​history.rs Updates transcript history.
crates/​tui/​src/​tui/​history/​checklist.rs Updates checklist rendering.
crates/​tui/​src/​tui/​history/​constants.rs Adjusts history constants.
crates/​tui/​src/​tui/​history/​tests.rs Tests history rendering.
crates/​tui/​src/​tui/​history/​tool_output.rs Improves output previews.
crates/​tui/​src/​tui/​mod.rs Registers TUI modules.
crates/​tui/​src/​tui/​phase_strip/​tideline_tests.rs Tests phase-strip changes.
crates/​tui/​src/​tui/​plan_handoff.rs Adds Plan completion hand-off.
crates/​tui/​src/​tui/​shell_key_routing.rs Updates shell key routing.
crates/​tui/​src/​tui/​tideline.rs Adds Terminal dock indicators.
crates/​tui/​src/​tui/​ui/​apply.rs Applies UI state changes.
crates/​tui/​src/​tui/​ui/​event_loop.rs Polls Terminal and opens hand-offs.
crates/​tui/​src/​tui/​ui/​handlers.rs Handles Plan hand-off choices.
crates/​tui/​src/​tui/​ui/​overlays.rs Updates overlays.
crates/​tui/​src/​tui/​ui/​session_state.rs Persists session UI state.
crates/​tui/​src/​tui/​ui/​tests.rs Tests UI behavior.
crates/​tui/​src/​tui/​ui/​tests/​plan_handoff.rs Tests Plan hand-off conditions.
crates/​tui/​src/​tui/​views/​extensions.rs Updates extension views.
crates/​tui/​src/​tui/​widgets/​approval_band_legacy.rs Updates legacy approval band.
crates/​tui/​src/​tui/​widgets/​mod.rs Registers widget changes.
crates/​tui/​src/​tui/​work_surface/​input.rs Routes Terminal input.
crates/​tui/​src/​tui/​work_surface/​interaction.rs Adds Terminal interaction.
crates/​tui/​src/​tui/​work_surface/​mod.rs Registers Terminal panel.
crates/​tui/​src/​tui/​work_surface/​model.rs Adds Terminal work-surface state.
crates/​tui/​src/​tui/​work_surface/​render/​body_tests.rs Tests dock rendering.
crates/​tui/​src/​tui/​work_surface/​render/​dock_tabs_legacy.rs Adds Terminal legacy tab.
crates/​tui/​src/​tui/​work_surface/​render/​layout.rs Updates dock layout.
crates/​tui/​src/​tui/​work_surface/​render/​mod.rs Integrates Terminal rendering.
crates/​tui/​src/​tui/​work_surface/​terminal.rs Implements the Terminal dock.
crates/​tui/​src/​tui/​work_surface/​views.rs Adds Terminal panel views.
crates/​tui/​tests/​cucumber/​launch_card_pty.rs Tests PTY launch behavior.
crates/​tui/​tests/​integration/​exec_turn_usage.rs Tests usage accounting.
docs/​CONFIGURATION.md Documents configuration changes.
docs/​CONTRIBUTORS.md Updates contributor credits.
docs/​GUIDE.md Documents workflows and hand-off.
docs/​INSTALL.md Updates launcher guidance.
docs/​KEYBINDINGS.md Documents Terminal shortcuts.
docs/​MCP.md Updates MCP documentation.
docs/​MODES.md Documents Plan hand-off.
docs/​PRODUCT.md Refreshes product explanation.
docs/​TELEMETRY.md Documents embedder telemetry.
docs/​design/​DESIGN.md Updates design documentation.
docs/​features.toml Registers user-visible features.
docs/​public-surface-facts.json Refreshes public capability facts.
docs/​zh_hans/​CONFIGURATION.md Localizes configuration changes.
docs/​zh_hans/​GUIDE.md Localizes workflow guidance.
docs/​zh_hans/​KEYBINDINGS.md Localizes keybindings.
docs/​zh_hans/​MODES.md Localizes mode documentation.
docs/​zh_hans/​TELEMETRY.md Localizes telemetry documentation.
extensions/​vscode/​package-lock.json Updates extension lock metadata.
extensions/​vscode/​package.json Bumps extension release metadata.
npm/​codewhale/​package.json Bumps npm launcher metadata.
npm/​runtime-sdk/​package.json Bumps Runtime SDK metadata.
package-lock.json Updates root npm lock.
scripts/​check-persistence-backlog-budget.py Adjusts persistence budget checking.
scripts/​ci-apt-install.sh Bounds CI package installation.
scripts/​release/​check-crate-sizes.py Checks all crate tarball sizes.
scripts/​release/​check-versions.sh Validates synchronized versions.
scripts/​release/​prepare-release.sh Updates release preparation.
scripts/​release/​prepare-release.test.sh Tests release preparation.
scripts/​release/​publish-crates.sh Adds pre-upload size checks.
scripts/​release/​publish-crates.test.py Tests crate publication flow.
scripts/​remote-smoke/​setup-vm.sh Updates remote smoke setup.
scripts/​runtime-contract-budget.json Refreshes Runtime contract budget.
scripts/​test_check_persistence_backlog_budget.py Tests persistence budget checks.
telemetry-ingest/​src/​schema.ts Adds embedder telemetry schema.
telemetry-ingest/​test/​ingest.test.ts Tests telemetry ingestion.
vendor/​codewhale-ratatui/​src/​components/​workbar.rs Adds Terminal workbar support.
vendor/​codewhale-ratatui/​src/​gallery/​showcase.rs Updates component showcase.
vendor/​codewhale-ratatui/​src/​gallery/​workbar.rs Updates workbar gallery.
web/​app/​[locale]/​faq/​page.tsx Refreshes localized FAQ content.
web/​app/​[locale]/​page.tsx Redesigns the homepage report.
web/​app/​[locale]/​runtime/​page.tsx Updates Runtime product content.
web/​app/​styles/​base.css Updates base styling.
web/​app/​styles/​home.css Styles the redesigned homepage.
web/​app/​styles/​shell.css Updates site shell styling.
web/​gt-catalog/​en.json Updates English translation catalog.
web/​gt-catalog/​zh.json Updates Chinese translation catalog.
web/​lib/​content/​getting-started.ts Refreshes getting-started copy.
web/​lib/​content/​native-terminal.ts Updates terminal capability copy.
web/​lib/​content/​product.ts Refreshes product copy.
web/​lib/​docs-ia.test.ts Tests documentation navigation.
web/​lib/​example-sales-report.ts Generates the sample weekly report.
web/​lib/​facts.generated.ts Refreshes generated capability facts.
web/​lib/​fleet-public-surface.test.ts Tests fleet claims.
web/​lib/​gpui-role-tokens.test.ts Tests design role tokens.
web/​lib/​i18n/​dictionaries.test.ts Tests localized dictionaries.
web/​lib/​i18n/​dictionaries/​ar/​chrome.ts Updates Arabic chrome strings.
web/​lib/​i18n/​dictionaries/​ar/​home.ts Updates Arabic homepage strings.
web/​lib/​i18n/​dictionaries/​ca/​chrome.ts Updates Catalan chrome strings.
web/​lib/​i18n/​dictionaries/​ca/​home.ts Updates Catalan homepage strings.
web/​lib/​i18n/​dictionaries/​de/​chrome.ts Updates German chrome strings.
web/​lib/​i18n/​dictionaries/​de/​home.ts Updates German homepage strings.
web/​lib/​i18n/​dictionaries/​en/​chrome.ts Updates English chrome strings.
web/​lib/​i18n/​dictionaries/​en/​home.ts Updates English homepage strings.
web/​lib/​i18n/​dictionaries/​es/​chrome.ts Updates Spanish chrome strings.
web/​lib/​i18n/​dictionaries/​es/​home.ts Updates Spanish homepage strings.
web/​lib/​i18n/​dictionaries/​fr/​chrome.ts Updates French chrome strings.
web/​lib/​i18n/​dictionaries/​fr/​home.ts Updates French homepage strings.
web/​lib/​i18n/​dictionaries/​hi/​chrome.ts Updates Hindi chrome strings.
web/​lib/​i18n/​dictionaries/​hi/​home.ts Updates Hindi homepage strings.
web/​lib/​i18n/​dictionaries/​id/​chrome.ts Updates Indonesian chrome strings.
web/​lib/​i18n/​dictionaries/​id/​home.ts Updates Indonesian homepage strings.
web/​lib/​i18n/​dictionaries/​it/​chrome.ts Updates Italian chrome strings.
web/​lib/​i18n/​dictionaries/​it/​home.ts Updates Italian homepage strings.
web/​lib/​i18n/​dictionaries/​ja/​chrome.ts Updates Japanese chrome strings.
web/​lib/​i18n/​dictionaries/​ja/​home.ts Updates Japanese homepage strings.
web/​lib/​i18n/​dictionaries/​ko/​chrome.ts Updates Korean chrome strings.
web/​lib/​i18n/​dictionaries/​ko/​home.ts Updates Korean homepage strings.
web/​lib/​i18n/​dictionaries/​pl/​chrome.ts Updates Polish chrome strings.
web/​lib/​i18n/​dictionaries/​pl/​home.ts Updates Polish homepage strings.
web/​lib/​i18n/​dictionaries/​pt-BR/​chrome.ts Updates Portuguese chrome strings.
web/​lib/​i18n/​dictionaries/​pt-BR/​home.ts Updates Portuguese homepage strings.
web/​lib/​i18n/​dictionaries/​ru/​chrome.ts Updates Russian chrome strings.
web/​lib/​i18n/​dictionaries/​ru/​home.ts Updates Russian homepage strings.
web/​lib/​i18n/​dictionaries/​tr/​chrome.ts Updates Turkish chrome strings.
web/​lib/​i18n/​dictionaries/​tr/​home.ts Updates Turkish homepage strings.
web/​lib/​i18n/​dictionaries/​types.ts Extends dictionary types.
web/​lib/​i18n/​dictionaries/​uk/​chrome.ts Updates Ukrainian chrome strings.
web/​lib/​i18n/​dictionaries/​uk/​home.ts Updates Ukrainian homepage strings.
web/​lib/​i18n/​dictionaries/​vi/​chrome.ts Updates Vietnamese chrome strings.
web/​lib/​i18n/​dictionaries/​vi/​home.ts Updates Vietnamese homepage strings.
web/​lib/​i18n/​dictionaries/​zh/​chrome.ts Updates Chinese chrome strings.
web/​lib/​i18n/​dictionaries/​zh/​home.ts Updates Chinese homepage strings.
web/​lib/​llms-txt.ts Updates machine-readable site copy.
web/​lib/​media-manifest.ts Refreshes media metadata.
web/​lib/​ocean-contract.test.ts Tests visual contracts.
web/​lib/​public-surface-contract.test.ts Tests capability claims.
web/​lib/​release-credits.ts Updates release credits.
web/​lib/​terminal-capture.generated.ts Refreshes generated terminal captures.
web/​lib/​terminal-capture.test.ts Tests capture provenance.
web/​lib/​terminal-captures/​manifest.json Updates capture metadata.
web/​lib/​terminal-captures/​website-composer-100x24.json Refreshes composer capture.
web/​lib/​terminal-captures/​website-home-100x24.json Refreshes homepage capture.
web/​lib/​terminal-captures/​website-provider-picker-100x24.json Refreshes provider-picker capture.
web/​lib/​terminal-captures/​website-workbar-100x32.json Refreshes workbar capture.
web/​lib/​terminal-captures/​website-workbar-fleet-100x32.json Refreshes fleet capture.
web/​package-lock.json Updates website dependencies.
web/​package.json Updates Next.js and website metadata.
web/​public/​codewhale-tui:0102- demo.png Adds refreshed terminal artwork.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

Comment thread crates/tui/src/tui/plan_handoff.rs Resolved
CodeWhale Bot added 3 commits October 8, 2026 03:26
OpenHarmony is Unix but intentionally excludes the PTY registry. Route its
Terminal panel through the existing unsupported view, matching backend imports,
worker state and every input/render access. Gate the dock storage/type with the
same predicate, and the host-admission lease helper with its Unix-only callers,
so unsupported builds do not retain unread private state or unused methods.

Validation: preserve actual OHOS E0432 from37761606281/job113259242478.
Final3-file rustfmt and diff checks PASS. Actual rustc target predicates confirm
macOS/Linux selected code is unchanged, Windows unsupported behavior remains,
and OHOS no longer selects registry code. Full TUI/CLI all-target/all-feature
warnings-as-errors Clippy PASS after Terminal guard repair; source reconstruction
proves following storage/type/method cfg attributes preserve that exact host
item set. Reuse this host proof; actual real-SDK OHOS/Windows CI remains pending.
Independent read-only agent reviewed all platform-elided references and guards.

Earlier required npm/web gate PASS:101 wrapper,19 SDK,413 extension/7skip,
7 dependency guards,74web files/772tests;check:web894pages,0errors/1warning.
Actual hosted Web37761606327 and Version drift on824c7314 PASS. No web changes,
no provider calls, no deployment or publication. Refs #6912 and #6915.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Ctrl+B and explicit steering now detach active shell waits owned by the current
session without killing the task or consuming another session's output. Cover
single and multiple waits, cancellation, stale registrations and TUI dispatch;
localize the controls in all 15 TUI packs. Add real Engine and Runtime ACP
acceptance cases for Full Access, mandatory review and repository law.

Repair two stale Linux CI expectations (15-minute MCP login and unchanged local
plugin update), preserving installed payload/provenance and foreign-scope refusal.
Make the recorder archive test advance time deterministically through its existing
Node fixture seam; retain exact archive and data-preservation assertions.

Validation: shell wait tests 17/17; ACP Engine and Runtime cases 2/2; localization
54/54; CI expectation and update-preservation cases 3/3; recorder tests 11/11;
fmt and all-target/all-feature TUI+CLI Clippy passed. Fresh CLI build passed.
Actual native Ctrl+B and steering journeys 2/2 passed against the fresh binary;
loopback fixture only, detached tasks stayed alive, all owned processes exited.
The initial ACP terminal-admission fixture failure and recorder path-alias failure
were retained and corrected before these passes. Windows CI still must qualify.

Required web gate already passed on unchanged website: npm test (wrappers 101,
Runtime SDK 19, extension host 413 plus 7 skipped, security 7, web 772/74 files);
check:web passed facts, docs, tokens, lint, typecheck and 894-page production build.
Updated release-note checks subsequently passed 18/18. Merged-SHA RC and twice-run
shared-process acceptance remain release requirements.

Fixes #6909
Fixes #6471
Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Replace the invented sales report and sample prompts with actual capabilities,
models, connected tools and installation. Show one existing native TUI capture
below the intro, labelled as an unreleased development preview. Keep the whale
and the component explorer on its existing page. Remove the unused report
renderer, styles and nine keys from all18 locale packs and shared catalogs.

Use direct copy about building apps, workflows, Slack/Gmail connections and the
model APIs or inference the operator already has. Reconcile the product brief
with this direction. Check mode/permission vocabulary where the product page
explains those controls instead of requiring labels in the homepage layout.

Validation: required npm test && npm run check:web passed. Wrappers101/0,
Runtime SDK19/0, extension host413/0 plus7 skipped, security guards7/0,
web74/74 files and772/772 tests. Facts, latest v0.10.1 release,24 docs topics,
150 design tokens, types and894-page production build passed; lint0errors with
1existing unused-import warning. Initial web run770passed/2failed exposed two
obsolete homepage-label expectations; receipts retained, assertions moved to
canonical product copy, then the full required gate passed.

All18 HomeDict packs retain locale parity. Local desktop1440/mobile390,
light/dark, Chinese and Arabic RTL inspected; one real capture, no horizontal
overflow, native cells kept LTR. Impeccable detector returned no findings.
No deployment or publication; merged-source deployment rebuild remains required.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
@Hmbown Hmbown changed the title 0.10.2: Terminal dock, safe recovery, contributor fixes and website redesign 0.10.2: Terminal dock, shell wait controls, recovery and contributor fixes Oct 8, 2026
Describe building apps, automating workflows, model choice and connected tools
in direct language. Remove choppy slogans, robot voice and internal verification
prose from the homepage, product, plugins, setup guides and common states.
Update all 18 homepage and Computer Use locale packs and shared en/zh catalogs.
Keep the single real native TUI capture. Prevent observed English headline
hyphenation from splitting automate on desktop.

Replace broad Slack/Gmail promises with per-service setup and authentication.
Reconcile the agent documentation with current bot source: Slack commands
control Codewhale, while agent Slack tools need a separately configured service;
hosted authenticated Slack operation has not been qualified.

Validation: required npm test && npm run check:web passed on these exact
52 paths. Wrappers 101/0; Runtime SDK 19/0; extension host 413/0 plus 7 skipped;
dependency guards 7/0; web 74 files and 772/772 tests. Facts, latest release,
docs, tokens, types and 894-page production build passed. Lint 0 errors with
1 existing unused-import warning. All 18 locale packs and GT catalogs pass
parity checks. Final English desktop/mobile previews show one actual TUI
capture and no page overflow. Canonical Slack source audited separately.

Human website deployment approval is recorded; public deployment awaits green
merged source. No deployment, provider spend, tag or release publication.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
CodeWhale Bot added 2 commits October 8, 2026 05:35
Vendor the reviewed canonical 33ab021b1e3f runtime, regression fixtures and
packaged guidance into the existing Computer Use bundle. Keep Engine sessions,
MCP instruction delivery, approvals and the bundle's intentional variants.
Add the missing public feature registry row with preview qualification.

The existing tools now offer since diffs, unique fresh find targets in bounded
batches, explicit completed-effect receipts and final observations. macOS
query/role reaches the native deep walk and common key spellings normalize.
No new runtime, capture cache, provider or imported upstream code.

Validation:
- Embedded consumer focused protocol/manifest/guide gate: 62 passed,
  0 failed, 0 skipped. Complete canonical gate: 437 passed, 0 failed,
  27 skipped (464 total); full runtime byte comparison across all 3 trees passes.
- npm test && npm run check:web passed in this existing release checkout.
  Observed counts: extension host 413 passed/7 skipped; web Node checks 12/12;
  web Vitest 772/772. Web build/type/lint/docs gates pass (1 existing lint
  warning). No exhaustive Rust suite or rebuilt/installed binary claim.
- New feature row parses and has valid owner/docs/preview fields; web facts
  gate passes after the row change. git diff --check passes.
- Native source MCP/AppKit fixture independently confirms named Unicode edit
  and Apply, compact diffs and ambiguity refusal. Initial settling assertion
  failed; bounded read-only followup passes. Before/after action foreground
  and pointer samples are unchanged; fixture launch changes foreground.
  This is not continuous human coexistence or installed-model qualification.

All unrelated dirty docs, web and avatar files are excluded. This local commit
will be applied only to the already-existing wave/0.10.2 integration lane;
the old wave/0.10.1-next shared ref will not be pushed or rewritten.
Refs SHA-6645; SHA-6352/C16 packaged/model acceptance stays open.
Mirror canonical 6f4050ecd1eb in the bundled Computer Use runtime. Do not
infer unique targets or absence from a truncated native walk. A closed app
satisfies an absence wait without a targetable state; permission/fatal errors
remain refused. Runtime checks may refuse after earlier effects, and receipts
must guide recovery rather than replaying sent input.

Validation: embedded focused protocol/manifest/guide gate 66 passed,
0 failed, 0 skipped; canonical full gate 441 passed, 0 failed, 27 skipped.
Three defect regressions fail on pre-fix source (0 passed, 3 failed). All
runtime copies match byte for byte, except declared package/README/manifest
variants. Native source AppKit oracle passes again (named edit+Apply, diff,
ambiguity); action foreground/pointer samples unchanged, not continuous
coexistence proof. Root npm test/check:web passed for the preceding source;
these follow-ups only change CU runtime/guide/tests, with fresh CI required on
the integration head. No Rust source/build, install, real model or release.

Only five owned files are staged. Refs SHA-6645; SHA-6352/C16 stays open.
Validate computer selectors after merged alias resolution. Share existing
side-effect-free argument validation between preflight and execution. Cache a
wait's follow-up only when its condition still holds, preserving prior usable
implicit targets and pinned observations on unsuccessful rechecks.

Validation: embedded protocol/manifest/guide gate 67 passed, 0 failed,
0 skipped. Canonical full gate 442 passed, 0 failed, 27 skipped (469 total).
Marketplace full gate 1036 passed, 0 failed, 36 skipped; browser 13 passed,
9 skipped. Three additional negative controls fail on the pre-fix source;
full three-tree runtime comparison and diff checks pass. Native source AppKit
independent edit/Apply/diff/ambiguity oracle passes; action foreground/pointer
samples unchanged, not continuous coexistence or installed-model proof.
The prior root npm/web gate passed; this follow-up only changes CU files.
Exact-head hosted qualification remains required. No Rust source/build,
install, real-model spend, publication or deployment. Refs SHA-6645.
Hmbown pushed a commit that referenced this pull request Oct 8, 2026
/pet on now selects the native whale backdrop with the existing composer,
queue feedback and permission controls. F5, the painted hint and /pet inspect
open the same replies/agents inspector; Escape returns to the existing draft.
The standard transcript, metrics and work rail yield their space and hitboxes.
Explicit tools and focused worker transcripts remain available on demand.

Schedule native idle motion through the existing poll loop and honor the
selected palette. Localize all new controls in 15 packs. Keep incremental
reply formatting across streamed revisions and view changes using the actual
source identity, revision and existing append receipt; unknown edits revoke
provenance and rebuild correctly. No prompt/session/execution authority added.

Validation: 54 focused pet tests, 17 routing tests and 1 draft/focus guard
passed (72 checks, 0 failures); localization 54 passed, 0 failed. npm test:
1,317 passed, 7 skipped, 0 failed; npm run check:web passed. Changed Rust
formatting and scoped production Clippy with CI's 3 style allowances passed.
Five terminal sizes, both themes, composer paste/caret/mouse, queue visibility,
approval ownership, idle deadlines and incremental/rewrite fallback are covered.
Actual Engine buffer captures are under artifacts/ratatui-pet-main-20261008.

The vendored PetMode matches merged codewhale-ratatui #25 (6f0ab44) exactly;
its 8 focused tests and all 15 hosted checks passed. Stage only this slice's
31 paths, excluding the avatar author's two guard lines in pet_watch/mod.rs.
Physical terminal/audio/provider and installed/released acceptance stay open.
The 0.10.2 candidate #6907 is untouched.

Refs #6920, #6155
Hmbown pushed a commit that referenced this pull request Oct 8, 2026
Persist /pet on|off through Settings and the existing ordered background
writer. Restore the main pet backdrop without the launch overlay. The
Appearance setting reports saved and effective values separately; session
only overrides and rejected values leave the startup choice alone.

The inspector's c key and painted footer target invoke /copy, retaining its
completed-answer receipt, raw Markdown, recovery backup and queued-vs-accepted
clipboard wording. A bounded command receipt remains visible over Done.
Hidden, resized and truncated footer targets are cleared before input.
All three new labels are translated in the fifteen complete locale packs.

Validation, final source:
- Pet: 60 passed, 0 failed (restart/order/shutdown, malformed settings, drafts,
  real keyboard/pointer routes, copy authority and dark/light renderer).
- Ordered writer: 9 passed; shell routing: 17 passed; /copy: 14 passed;
  toast lifecycle: 6 passed; localized settings schema: 1 passed. No failures.
- Config schema: 4 passed; localization: 54 passed. Total: 165 passed, 0 failed.
- npm test: 1,317 passed, 7 skipped, 0 failed (545 Node + 772 Vitest).
- npm run check:web passed. Changed Rust formatting: 17 files passed.
- Production TUI Clippy passed with -D warnings and the CI's existing
  uninlined_format_args, too_many_arguments and unnecessary_map_or allowances.

Earlier local receipts retained: a test import used a retired private command
path (E0433), then the first compiled run passed 58 and failed 1 because its
unknown-key fixture assumed preservation beyond the existing serializer's
contract. Tests now use the public command entry and supported preference
annotations; malformed TOML remains byte-preserved. Final checks above pass.

Stage only 35 declared paths. Preserve unrelated shared documentation/web/
avatar changes, including the two avatar guards in pet_watch/mod.rs. The
shared library remains the merged #25 component; no new execution authority.
This source slice updates #6920. Actual 0.10.2 candidate #6907 integration,
local installed binary and live terminal/provider acceptance remain separate.

Refs SHA-6533
CodeWhale Bot and others added 2 commits October 8, 2026 17:37
Land the four 0.10.2 release repairs from the frozen review batch. The
source reviews passed. This commit adds local compile and focused-namespace
evidence, not hosted CI. Hosted CI on this head is the full proof.

Repairs:

- Undo (commands/contract/debug_operations.rs,
  commands/debug_mutation_host_tests.rs): refuse ambiguous, repeated,
  truncated, multiline, missing or multipart request labels instead of
  matching display snippets. Exactly one held match is required, and force
  cannot bypass identity checks. Addresses the P1 review on
  debug_operations.rs:245-251.
- Child approvals (core/engine/handle.rs, child_host.rs, tools/subagent/*):
  keep ApprovalDecider through the child Approved and Denied outcomes, so
  receipts attribute the actual decider. A timeout stays a denial,
  attributed to Host. Consumers migrated. Managed Computer Use consent
  authority is unchanged.
- Plan handoff (tui/plan_handoff.rs, tui/app.rs, tui/app/init.rs,
  tui/ui/*, docs/GUIDE.md, docs/MODES.md, docs/zh_hans/GUIDE.md):
  successful nonempty Plan prose offers handoff and queues its exact text
  once. Failed preparation rolls back only an unchanged owned seed.
  Refs #6902. Addresses the P2 review on plan_handoff.rs:48.
- OCR and CI (tools/image_ocr/host_tests.rs, .config/nextest.toml,
  .github/workflows/ci.yml): the cancellation fixture waits on an explicit
  descendant latch and observes cleanup, instead of racing a one-second
  write. OCR and PDF host tests join the max-threads-1 group. macOS test
  compilation sets CARGO_PROFILE_TEST_DEBUG=0 before cache setup.

Local evidence (macOS arm64, debug, library tests; not CI):

- cargo test -p codewhale-tui --lib --locked --no-run -j 2: exit 0,
  0 errors, one linker note.
- With RUST_MIN_STACK=8388608 (the workflow value in ci.yml):
  plan_handoff 16 passed, 0 failed; core::engine::tests::child_host
  19 passed, 0 failed.
- With the 2 MiB default test-thread stack: plan_handoff 15 of 16 and
  child_host 10 of 19 pass. The rest overflow the stack in debug builds.
  Measured stack need is 4 to 8 MiB. All nine child_host tests exist at
  HEAD and passed HEAD's CI on Linux and macOS.
- debug_mutation_host_tests 38 of 38; the approval routing test
  an_agent_approval_answer_reaches_the_agent_while_the_engine_is_busy
  1 of 1; image_ocr::host_tests 8 of 8, including
  real_host_ocr_cancellation_bounds_parser_tree_and_never_replays.
- cargo fmt -p codewhale-tui -- --check and git diff --check: clean.

Not run here: the full 19k-test suite, nextest, Windows, doctests, and
hosted macOS timing. The previous macOS job exceeded 2h45m.

Limits, as reviewed: checkpoint admission is queued acceptance, not disk
durability, and an accepted queued checkpoint cannot be recalled. Pending
Plan ownership is ephemeral. No restart recovery or permanent custody is
claimed.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ld-approval assertion)

Hosted run 37865763270 on 1bddf50 failed for exactly two reasons, read from
the raw job logs:

- Lint (job 113612126883): the only error is clippy::type_complexity at
  crates/tui/src/commands/contract/debug_operations.rs:460, the
  `&dyn Fn(&str) -> Result<Option<bool>, Box<DebugUndoOutcome>>` parameter of
  plan_undo_step. Name the shared result type once (RequestPositionResult) and
  use it for that parameter and for request_is_last's return type. No behavior
  change.
- Test (ubuntu, windows, macos): on macOS (job 113612126935) the summary is
  "19122 tests run: 19121 passed (2 slow), 1 failed, 33 skipped". The single
  failure is tools::subagent::tests::child_permission_gate::
  ask_with_a_prompting_host_raises_the_prompt_and_honours_the_answer at
  tests.rs:24510. The case already matched ToolError::PermissionDenied, then
  asserted that err.to_string() starts with "Tool 'bash' denied by user — ".
  ToolError's Display prefixes "Failed to authorize tool execution: "
  (crates/tools/src/lib.rs:78), so the string never matched. Assert on the
  typed message instead, as the sibling case at tests.rs:25375 does. The
  approval ownership, outcome, duplicate-resolution and durable-receipt
  assertions are unchanged, and production permission behavior is unchanged.

Evidence level: hosted-log diagnosis only. These two paths were not compiled or
run locally (the machine is under memory pressure), so the hosted run on this
exact head is the qualifying evidence. Refs #6907.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Hmbown pushed a commit that referenced this pull request Oct 9, 2026
Merge origin/feat/tui-native-pet-mode (fdae4dd) into the 0.10.2
candidate (1bddf50) on integrate/0.10.2-pet. The two changelogs
conflicted: the pet note now sits under 0.10.2 Added, cites the shared
components as codewhale-ratatui #23 and #25, and the 0.10.2 intro names
the pet view. Everything else auto-merged.

The vendored ratatui kit already carries upstream 6f0ab44 (#25) for the
pet path: lib.rs, whale_motion/ and assets/whale-motion/ are byte-identical.
It differs from upstream in three deliberate ways: the 0.10.2 Terminal
panel added by 1c82c93 (components/workbar.rs, gallery/workbar.rs,
gallery/showcase.rs); upstream's gallery avatar showcase, which the TUI pet
path does not use; and a doc line plus module order in avatar_sprite.rs and
components/mod.rs. The vendor manifest (UPSTREAM.json) still records
2ad795b3, so the kit owner should re-sync it or record these differences.

Not yet compiled, tested or installed. Build, focused tests, the npm gate
and installed-binary checks follow on this commit.

Refs #6920 #6907 SHA-6533 SHA-6645

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Hmbown pushed a commit that referenced this pull request Oct 9, 2026
…e is missing

- check-versions.sh: a missing providers-export golden or config-policy status
  fixture is an error, not a silent pass (#6559 T04).
- preflight.sh: with no base to compare against, the feature release-note
  receipt step is recorded as a failure, not "skipped" (#6559).

Evidence:
- bash -n on both scripts: ok.
- scripts/release/check-versions.sh on this tree: exit 1 before and after, with
  identical output. The failure predates this change. Feature commit
  5e2e59e (#6907) has no release-note receipt in CHANGELOG.md, and that is
  not fixed here.
- Both fixtures exist in this tree, so the new branches are not reached here.
  No existing test covers the missing-fixture case.

Refs #6559 (SHA-6775).

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
steinlon pushed a commit to steinlon/DeepSeek-TUI that referenced this pull request Oct 9, 2026
Replace the full-screen tank layout with the shared GPUI whale, current-session retained agents, streamed replies/errors and existing notices. Preserve composer/session state, route Enter through the existing agent transcript/approval event, and revalidate painted worker identities. Use the pet view motion policy and canonical completion clip without a second world, prompt or execution owner.

Validation: focused pet/owner/audio/persistence tests 30 passed, 0 failed; keyboard routing 17 passed, 0 failed; draft/focus binding guard 1 passed, 0 failed. Scoped production Clippy passed with the three deliberate project-style allowances from CI; changed-path formatting passed. Library PR codewhale-hq#23 merged after all 10 hosted checks passed; local component tests 5+1 passed and idle PTY 7/7 passed, with both 200-frame previews matching actual buffers.

Earlier raw Clippy hit 20 findings in unchanged code covered by those documented style allowances; its failure receipt is retained. Updated two old test assumptions for native availability and context-owned Tab. macOS warned that the large unit-test binary exceeds the compact unwind section limit; test exit was 0. No full local suite, live providers, physical terminal/audio, installed release or simultaneous desktop-owner acceptance claimed.

Stage only 13 declared paths. Saved foreign avatar hunks remain unstaged, including the two adjacent preview guards removed from the index by exact baseline subtraction. This feature stays separate from release-candidate PR codewhale-hq#6907. Evidence: artifacts/ratatui-full-pet-20261008; SHA-6533.
@Hmbown
Hmbown merged commit 8d2fb45 into main Oct 9, 2026
49 checks passed
@Hmbown
Hmbown deleted the wave/0.10.2 branch October 9, 2026 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v0.10.2 Targeting v0.10.2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants