Show TUI-impacting changelog updates - #14541
Conversation
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR adds a TUI-specific changelog surface across the changelog draft scripts, release payload shape, and Warp Agent CLI zero-state rendering.
Concerns
- The release workflow now publishes
tui_updatesinchangelog.json, but the changelog job still does not wait for the macOS/Linux TUI release jobs, so dev/preview releases can advertise TUI updates even if those artifacts fail later.
Verdict
Found: 0 critical, 1 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
| TUI_UPDATES=$(echo $CHANGELOG | jq -c '.tui_updates // []') | ||
| # Tweak the structure of the JSON, add in a top-level date field, and add in the markdown_sections field | ||
| CHANGELOG=$(echo $CHANGELOG_SECTIONS | jq --arg date "$DATE" --arg new_features "$NEW_FEATURES" --arg improvements "$IMPROVEMENTS" --arg image "$IMAGE" --argjson oz_updates "$OZ_UPDATES" '{"date": $date, "sections": to_entries | map({"title": .key, "items": .value}), "markdown_sections": [{"title": "New features", "markdown": $new_features}, {"title": "Improvements", "markdown": $improvements}, {"title": "Coming soon", "markdown": ""}]} + (if $image != "" then {"image_url": $image} else {} end) + (if ($oz_updates | length) > 0 then {"oz_updates": $oz_updates} else {} end)') | ||
| CHANGELOG=$(echo $CHANGELOG_SECTIONS | jq --arg date "$DATE" --arg new_features "$NEW_FEATURES" --arg improvements "$IMPROVEMENTS" --arg image "$IMAGE" --argjson oz_updates "$OZ_UPDATES" --argjson tui_updates "$TUI_UPDATES" '{"date": $date, "sections": to_entries | map({"title": .key, "items": .value}), "markdown_sections": [{"title": "New features", "markdown": $new_features}, {"title": "Improvements", "markdown": $improvements}, {"title": "Coming soon", "markdown": ""}]} + (if $image != "" then {"image_url": $image} else {} end) + (if ($oz_updates | length) > 0 then {"oz_updates": $oz_updates} else {} end) + (if ($tui_updates | length) > 0 then {"tui_updates": $tui_updates} else {} end)') |
There was a problem hiding this comment.
tui_updates for dev/preview releases, but generate_changelogs.needs still omits release_macos_tui and release_linux_tui. If one of those TUI artifact jobs fails after this job succeeds, the uploaded changelog advertises TUI updates for a release that did not actually ship the TUI artifact. Add a dependency/gate on the TUI release jobs before publishing this payload.
There was a problem hiding this comment.
Yes, for dev/preview releases this was valid: generate_changelogs did not wait for either TUI artifact matrix, so it could upload tui_updates after a TUI build failed. I added a channel-aware gate that requires both TUI jobs to succeed before changelog generation on dev/preview, while allowing their intentional skips on Stable and other channels.
kevinyang372
left a comment
There was a problem hiding this comment.
My main feedback is the current CHANGELOG-TUI update description seems to express that this is reserved for TUI specific updates. I would broaden it to include any updates that impact TUI.
For example, an improvement to our edit file tool call apply diff logic should be displayed in TUI changelog as well even if it's not TUI specific
| TUI_UPDATES=$(echo $CHANGELOG | jq -c '.tui_updates // []') | ||
| # Tweak the structure of the JSON, add in a top-level date field, and add in the markdown_sections field | ||
| CHANGELOG=$(echo $CHANGELOG_SECTIONS | jq --arg date "$DATE" --arg new_features "$NEW_FEATURES" --arg improvements "$IMPROVEMENTS" --arg image "$IMAGE" --argjson oz_updates "$OZ_UPDATES" '{"date": $date, "sections": to_entries | map({"title": .key, "items": .value}), "markdown_sections": [{"title": "New features", "markdown": $new_features}, {"title": "Improvements", "markdown": $improvements}, {"title": "Coming soon", "markdown": ""}]} + (if $image != "" then {"image_url": $image} else {} end) + (if ($oz_updates | length) > 0 then {"oz_updates": $oz_updates} else {} end)') | ||
| CHANGELOG=$(echo $CHANGELOG_SECTIONS | jq --arg date "$DATE" --arg new_features "$NEW_FEATURES" --arg improvements "$IMPROVEMENTS" --arg image "$IMAGE" --argjson oz_updates "$OZ_UPDATES" --argjson tui_updates "$TUI_UPDATES" '{"date": $date, "sections": to_entries | map({"title": .key, "items": .value}), "markdown_sections": [{"title": "New features", "markdown": $new_features}, {"title": "Improvements", "markdown": $improvements}, {"title": "Coming soon", "markdown": ""}]} + (if $image != "" then {"image_url": $image} else {} end) + (if ($oz_updates | length) > 0 then {"oz_updates": $oz_updates} else {} end) + (if ($tui_updates | length) > 0 then {"tui_updates": $tui_updates} else {} end)') |
Co-Authored-By: Oz <oz-agent@warp.dev>
ae2704c to
32bd06e
Compare
|
Addressed the broader TUI-impact feedback in |
yeah that's fair, updated |

Description
Teach the release changelog pipeline to classify changes that impact Warp Agent CLI users and carry them through a dedicated
tui_updatespayload. Stable releases use semantic impact classification, including shared Agent capabilities; dev and preview releases preserve the legacy generator and use explicitCHANGELOG-TUImarkers plus deterministic TUI-labeled commit/title inference. Explicit shared impacts can appear in both the regular changelog andtui_updates, while inferred TUI-only changes stay out of the desktop changelog.Changelog publication now waits for successful macOS and Linux TUI artifacts on dev and preview releases. The TUI zero state renders only
tui_updatesand hides “What’s new” when none exist.flowchart LR Artifacts["macOS + Linux<br/>TUI artifacts"] --> Gate{"Artifacts succeeded?"} Gate -->|No| Stop["Do not publish changelog"] Gate -->|Yes / not a TUI channel| Range["Release range"] Range --> Channel{"Stable release?"} Channel -->|Yes| Stable["Oz changelog agent<br/>semantic TUI-impact classification"] Channel -->|No: Preview / Dev| Legacy["Legacy generator<br/>explicit CHANGELOG markers"] Legacy --> Filter["TUI post-processor<br/>copy shared markers / move TUI-only labels"] Stable --> Payload["Release payload<br/>tui_updates"] Filter --> Payload Payload --> Empty{"tui_updates empty?"} Empty -->|No| Show["Show up to 3 TUI updates"] Empty -->|Yes| Hide["Hide What’s new"]Linked Issue
N/A
Testing
We don't have correctly marked new issues for now, so here's proof at least that we don't show the
What's newsection if there's nothing in it.python3 .agents/skills/changelog-draft/scripts/test_tui_updates.py(5 passed).github/workflows/create_release.ymlwith Ruby Psychcargo nextest run -p channel_versions -E 'test(changelog_tui_updates_are_backward_compatible)'./script/formatscript/presubmitpassedAgent Mode
Artifacts
CHANGELOG-TUI: Warp Agent CLI now shows updates that impact TUI users in its What’s new section.
Co-Authored-By: Oz oz-agent@warp.dev