Skip to content

Show TUI-impacting changelog updates - #14541

Merged
moirahuang merged 1 commit into
masterfrom
moira/tui-changelog
Jul 30, 2026
Merged

Show TUI-impacting changelog updates#14541
moirahuang merged 1 commit into
masterfrom
moira/tui-changelog

Conversation

@moirahuang

@moirahuang moirahuang commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Description

Teach the release changelog pipeline to classify changes that impact Warp Agent CLI users and carry them through a dedicated tui_updates payload. Stable releases use semantic impact classification, including shared Agent capabilities; dev and preview releases preserve the legacy generator and use explicit CHANGELOG-TUI markers plus deterministic TUI-labeled commit/title inference. Explicit shared impacts can appear in both the regular changelog and tui_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_updates and 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"]
Loading

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 new section if there's nothing in it.

Screenshot 2026-07-30 at 10 57 32 AM
  • python3 .agents/skills/changelog-draft/scripts/test_tui_updates.py (5 passed)
  • Parsed .github/workflows/create_release.yml with Ruby Psych
  • cargo nextest run -p channel_versions -E 'test(changelog_tui_updates_are_backward_compatible)'
  • ./script/format
  • All three Clippy invocations from script/presubmit passed
  • Focused TUI render tests were previously skipped at request

Agent Mode

  • Warp Agent Mode - This PR was created via Warp’s AI Agent 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

@cla-bot cla-bot Bot added the cla-signed label Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@moirahuang
moirahuang marked this pull request as ready for review July 30, 2026 17:59
@moirahuang
moirahuang requested a review from kevinyang372 July 30, 2026 17:59
@warp-for-oss

warp-for-oss Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@moirahuang

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 /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@warp-for-oss warp-for-oss 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.

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_updates in changelog.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)')

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.

⚠️ [IMPORTANT] This job can now upload 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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this valid?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

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 kevinyang372 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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)')

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this valid?

Co-Authored-By: Oz <oz-agent@warp.dev>
@moirahuang
moirahuang force-pushed the moira/tui-changelog branch from ae2704c to 32bd06e Compare July 30, 2026 21:38
@moirahuang moirahuang changed the title Show TUI-specific changelog updates Show TUI-impacting changelog updates Jul 30, 2026
@moirahuang

Copy link
Copy Markdown
Contributor Author

Addressed the broader TUI-impact feedback in 32bd06e4cd: CHANGELOG-TUI now means an update should be shown to Warp Agent CLI users, including shared Agent capabilities. Explicit TUI entries can coexist with regular/Oz entries, the Preview/Dev post-processor preserves those shared regular entries, and Stable classification now evaluates TUI impact independently from the regular category.

@moirahuang

Copy link
Copy Markdown
Contributor Author

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

yeah that's fair, updated

@moirahuang
moirahuang enabled auto-merge (squash) July 30, 2026 21:40
@moirahuang
moirahuang merged commit b8030ef into master Jul 30, 2026
33 checks passed
@moirahuang
moirahuang deleted the moira/tui-changelog branch July 30, 2026 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants