feat(v0.9.2): durable update and receipt-safe output presentation - #4859
Conversation
The startup release check previously surfaced a newer-version result only as a short-lived status toast, which is easy to miss during startup, onboarding, or a busy transcript. Users could keep running stale binaries even when a verified release was available. Thread a small `UpdateNotice` (current + latest) through the version-hint chain instead of a bare String, and at the startup drain point emit both the existing transient toast and a durable `HistoryCell::System` notice. The persistent notice shows current and latest versions, the release-notes link, and the exact `codewhale update` / `codewhale update --check` commands plus restart guidance, mirroring the existing toast+System pattern in `surface_prompt_override_notices`. All existing release-JSON guardrails are untouched: no notice for disabled updates, current/newer versions, or draft/prerelease/incomplete-asset releases. Adds `update_notice_block_is_persistent_and_actionable` covering the notice formatting and the current-version no-op, and updates the existing guardrail tests for the new return type. Closes #3961
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @Hmbown's task in 2m 56s —— View job Review complete
SummaryThis PR makes the update prompt durable (a new Findings1. Correctness — mirror/release-notes URL is not mirror-aware ( 2. Documentation accuracy — stale test-name reference ( Notes
|
| fn notice_block(&self) -> String { | ||
| format!( | ||
| "Update available: v{current} -> v{latest}\n\ | ||
| Release notes: https://github.com/Hmbown/CodeWhale/releases/tag/v{latest}\n\ |
There was a problem hiding this comment.
Bug: the "Release notes" link is hardcoded to github.com/Hmbown/CodeWhale, but version_hint_from_latest_tag is the shared path for both the direct GitHub check and the mirror paths (version_hint_from_release_mirror_env → CNB mirror via CODEWHALE_USE_CNB_MIRROR/RELEASE_BASE_URL_ENV, and version_hint_from_configured_update_uri). For a user running CodeWhale specifically because they're on a mirror (e.g. GitHub is unreachable for them), the new durable transcript notice will now advertise a github.com URL — which directly contradicts this PR's stated goal of "preserving all release-asset, mirror, ... guardrails" (the old toast never included a URL, so this is a new regression, not pre-existing behavior).
Consider omitting the release-notes line (or making it conditional/generic) when the notice originates from a mirror/custom-URI source, since UpdateNotice currently has no way to know which source produced it.
| | --- | --- | --- | | ||
| | `Alt-1` through `Alt-8` | Dispatch the corresponding slot | `hotbar_alt_digit_fires_from_composer_and_sidebar_states` | | ||
| | Bare `1` through `8` | Insert/retain ordinary composer input | `hotbar_bare_digit_inserts_text_even_when_composer_empty` | | ||
| | `Ctrl-number`, `Super/Cmd-number`, `Alt-0`, `Alt-9`, and F-keys | Never dispatch a Hotbar slot; `F1` remains help | `hotbar_slot_from_key_accepts_only_alt_one_through_eight` and global keybinding tests | |
There was a problem hiding this comment.
Minor: hotbar_slot_from_key_accepts_only_alt_one_through_eight (cited here and on line 66) doesn't exist in the codebase — I could only find hotbar_alt_digit_requires_plain_alt_one_through_eight in crates/tui/src/tui/ui/tests.rs, which is the test actually modified by this PR to cover this row. Since this doc's whole point is to be truthful regression evidence (not fabricated passes), a broken test-name reference undercuts that goal — worth fixing the name.
Expand Hotbar event regression coverage across all eight slots and reserved modifier/key shapes, and record a truthful terminal QA matrix without fabricating device passes. Resolve #4468 with a receipt-preserving presentation/export boundary: canonical model output and signed thinking remain immutable, while show_thinking and stream-json provide safe accessible derived views. Credit: #4468 proposal and measurements by @eugenicum. Refs #3758 Closes #4468
95e0d05 to
6942042
Compare
|
Claude finished @Hmbown's task in 1m 14s —— View job Review complete
SummaryThis is a re-review of the current PR head ( Findings (both previously reported, still unresolved in this diff)1. Correctness — mirror/release-notes URL is not mirror-aware ( 2. Documentation accuracy — stale test-name reference ( Notes
|
Compile-check codewhale-tui with a pinned real OpenHarmony SDK instead of a stub, explicitly gate Linux sandbox surfaces, and document clipboard degradation and distribution boundaries. Contributor lineage: @shenyongqing and @shenjackyuanjie. Closes #2970
|
Claude finished @Hmbown's task in 1m 56s —— View job Review complete
SummarySince the last pass, the head commit changed from Findings1. New — CI check silently drops 2. Still unresolved from prior review — mirror/release-notes URL is not mirror-aware ( 3. Still unresolved from prior review — stale test-name citation ( Notes on the new OpenHarmony additions
|
| set -euo pipefail | ||
| test -x "${OHOS_NATIVE_SDK}/llvm/bin/clang" | ||
| test -d "${OHOS_NATIVE_SDK}/sysroot" | ||
| . ./scripts/ohos-env.sh |
There was a problem hiding this comment.
Bug: RUSTFLAGS: -Dwarnings is set job-wide (line 38), but scripts/ohos-env.sh (sourced here) exports CARGO_ENCODED_RUSTFLAGS for the target-specific linker flags. Cargo's rustflags sources are mutually exclusive with CARGO_ENCODED_RUSTFLAGS taking priority over RUSTFLAGS — it does not merge them. So for this job's cargo check (line 71), -Dwarnings is silently dropped and warnings won't fail the build, even though the job is meant to be "a real tier-2 check."
This directly undercuts the PR's own stated principle for this doc/CI addition (docs/HarmonyOS.md: "fails if the SDK, Clang, or sysroot is unavailable rather than substituting host headers ... that could report false success") — the check can currently pass with warnings present.
Fix: append -Dwarnings into the CARGO_ENCODED_RUSTFLAGS value built in scripts/ohos-env.sh (joined with the \037 separator already used there) instead of relying on the job-level RUSTFLAGS env var.
Validate both inherited session workspaces and explicit cwd values before sandbox preparation or process launch, preserving the offending path and giving an actionable resume/fork or cwd recovery. This follows the post-#4491 diagnosis: foreground exec_shell does not allocate a ConPTY, and a deleted saved workspace is the session-scoped input that survives terminal restarts. Credit: original Windows report by @redjade75723. Closes #4100
|
Claude finished @Hmbown's task in 45s —— View job Review complete
SummarySince the last pass, two commits were added: The new Findings (all three previously reported, still unresolved)1. Correctness — mirror/release-notes URL is not mirror-aware ( 2. Documentation accuracy — stale test-name citation ( 3. CI — Notes
|

Summary
Product decisions
show_thinkingandstream-jsonare derived presentation surfacesexec_shellis not described as ConPTY; invalid inherited and explicit cwd values are distinguishedTesting
cargo fmt --all -- --checkgit diff --checkCloses #2970
Closes #3961
Closes #4100
Closes #4468
Refs #3758
Credit: OHOS lineage @shenyongqing and @shenjackyuanjie; Windows report @redjade75723; #4468 proposal and measurements @eugenicum.