Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

feat: add What's New dialog with unread release badge#637

Merged
breaking-brake merged 1 commit intomainbreaking-brake/cc-wf-studio:mainfrom
feat/whats-new-dialogbreaking-brake/cc-wf-studio:feat/whats-new-dialogCopy head branch name to clipboard
Mar 10, 2026
Merged

feat: add What's New dialog with unread release badge#637
breaking-brake merged 1 commit intomainbreaking-brake/cc-wf-studio:mainfrom
feat/whats-new-dialogbreaking-brake/cc-wf-studio:feat/whats-new-dialogCopy head branch name to clipboard

Conversation

@breaking-brake
Copy link
Copy Markdown
Owner

@breaking-brake breaking-brake commented Mar 10, 2026

Summary

Add a "What's New" feature to the More submenu that parses CHANGELOG.md and displays the latest 5 releases in a Radix UI dialog, with unread release count badges.

Motivation

Users have no way to discover what changed between extension updates. This feature surfaces recent changes directly in the UI, improving awareness of new features and bug fixes.

Changes

New Files:

  • src/extension/utils/changelog-parser.ts - Regex-based CHANGELOG.md parser (no external deps)
  • src/webview/src/components/dialogs/WhatsNewDialog.tsx - Radix UI dialog displaying changelog entries

Modified Files:

  • src/shared/types/messages.ts - Added ChangelogEntry types, message definitions, InitialStatePayload extensions
  • src/extension/commands/open-editor.ts - Handlers for GET_CHANGELOG, MARK_CHANGELOG_READ, SET_WHATS_NEW_BADGE; unread count in INITIAL_STATE
  • src/webview/src/services/vscode-bridge.ts - Bridge functions: getChangelog(), markChangelogRead(), setWhatsNewBadge()
  • src/webview/src/components/toolbar/MoreActionsDropdown.tsx - What's New menu item with badge, More button badge
  • src/webview/src/components/Toolbar.tsx - Dialog state management, unread count tracking
  • src/webview/src/App.tsx - Pass unreadReleaseCount and showWhatsNewBadge from INITIAL_STATE
  • src/webview/src/i18n/translation-keys.ts - New translation keys
  • src/webview/src/i18n/translations/{en,ja,ko,zh-CN,zh-TW}.ts - Translations for 5 languages

Testing

  • Manual E2E testing completed
  • npm run format && npm run lint && npm run check && npm run build passed

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features
    • Added "What's New" dialog to view recent software release updates and changelog entries
    • Unread badge indicator displays the number of available releases
    • Toggle badge visibility directly within the interface
    • Changelog entries include version details, release dates, and pull request links
    • Full multilingual support including English, Japanese, Korean, Simplified and Traditional Chinese

- Parse CHANGELOG.md and display latest 5 versions in Radix UI dialog
- Show unread release count badge on More button and menu item
- Track read state via globalState with version comparison
- Add toggle switch to enable/disable unread badge
- Support 5 languages (en, ja, ko, zh-CN, zh-TW)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 10, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 135421ab-6b97-4a88-8559-fc2f6c56c7fc

📥 Commits

Reviewing files that changed from the base of the PR and between 71c48b4 and b887662.

📒 Files selected for processing (14)
  • src/extension/commands/open-editor.ts
  • src/extension/utils/changelog-parser.ts
  • src/shared/types/messages.ts
  • src/webview/src/App.tsx
  • src/webview/src/components/Toolbar.tsx
  • src/webview/src/components/dialogs/WhatsNewDialog.tsx
  • src/webview/src/components/toolbar/MoreActionsDropdown.tsx
  • src/webview/src/i18n/translation-keys.ts
  • src/webview/src/i18n/translations/en.ts
  • src/webview/src/i18n/translations/ja.ts
  • src/webview/src/i18n/translations/ko.ts
  • src/webview/src/i18n/translations/zh-CN.ts
  • src/webview/src/i18n/translations/zh-TW.ts
  • src/webview/src/services/vscode-bridge.ts

📝 Walkthrough

Walkthrough

This PR introduces a "What's New" feature that displays changelog entries to users via a modal dialog. The system parses CHANGELOG.md, tracks unread release versions, displays an optional badge in the toolbar, and allows users to view and dismiss updates. Message handlers connect the extension backend to the webview frontend, with persistent state management for the badge visibility and last-viewed version.

Changes

Cohort / File(s) Summary
Changelog Parsing Utilities
src/extension/utils/changelog-parser.ts
New utility module providing parseChangelog(), extractVersions(), and countUnreadVersions() functions to parse Markdown-formatted changelog content and track unread versions.
Message Type Definitions
src/shared/types/messages.ts
Extended message types with ChangelogEntry, ChangelogSection, ChangelogItem data structures; added InitialStatePayload fields for unreadReleaseCount and showWhatsNewBadge; added WebviewMessage handlers (GET_CHANGELOG, MARK_CHANGELOG_READ, SET_WHATS_NEW_BADGE) and ExtensionMessage response (GetChangelogResult).
Extension Backend
src/extension/commands/open-editor.ts
Integrated changelog parsing into WEBVIEW_READY initialization; added message handlers for GET_CHANGELOG, MARK_CHANGELOG_READ, and SET_WHATS_NEW_BADGE; computes unread count and persists state.
App & Toolbar Components
src/webview/src/App.tsx, src/webview/src/components/Toolbar.tsx
Threaded unreadReleaseCount and showWhatsNewBadge state from initial payload through App to Toolbar; added effect tracking and callback wiring for badge visibility changes.
WhatsNew UI Components
src/webview/src/components/dialogs/WhatsNewDialog.tsx, src/webview/src/components/toolbar/MoreActionsDropdown.tsx
Introduced WhatsNewDialog component rendering changelog entries with badge toggle; extended MoreActionsDropdown with unread badge display and What's New menu item triggering dialog open.
VSCode Bridge Service
src/webview/src/services/vscode-bridge.ts
Added getChangelog(), markChangelogRead(), and setWhatsNewBadge() functions to facilitate webview-to-extension messaging for changelog operations.
Internationalization
src/webview/src/i18n/translation-keys.ts, src/webview/src/i18n/translations/*.ts
Extended WebviewTranslationKeys interface and added translations for toolbar.whatsNew, whatsNew.title, whatsNew.viewAllReleases, and whatsNew.showBadge across en, ja, ko, zh-CN, and zh-TW locales.

Sequence Diagram

sequenceDiagram
    participant User
    participant Webview as Webview Frontend
    participant Bridge as VSCode Bridge
    participant Extension as Extension Backend
    participant FS as File System

    User->>Webview: Open editor
    Webview->>Bridge: WEBVIEW_READY
    Bridge->>Extension: WEBVIEW_READY received
    Extension->>FS: Read CHANGELOG.md
    FS-->>Extension: Changelog content
    Extension->>Extension: Parse & count unread versions
    Extension-->>Bridge: INITIAL_STATE (unreadCount, showBadge)
    Bridge-->>Webview: INITIAL_STATE received
    Webview->>Webview: Initialize state (unreadCount, showBadge)
    Webview->>Webview: Render Toolbar with badge

    User->>Webview: Click What's New menu item
    Webview->>Bridge: GET_CHANGELOG
    Bridge->>Extension: GET_CHANGELOG received
    Extension->>FS: Read & parse CHANGELOG.md
    FS-->>Extension: Changelog content
    Extension->>Extension: Extract entries & current version
    Extension-->>Bridge: GET_CHANGELOG_RESULT (entries, unreadCount)
    Bridge-->>Webview: GET_CHANGELOG_RESULT
    Webview->>Webview: Display WhatsNewDialog with entries

    User->>Webview: Toggle badge visibility in dialog
    Webview->>Bridge: SET_WHATS_NEW_BADGE
    Bridge->>Extension: Update showWhatsNewBadge in state
    Extension-->>Bridge: State updated

    User->>Webview: Close What's New dialog
    Webview->>Bridge: MARK_CHANGELOG_READ
    Bridge->>Extension: Update lastViewedVersion in state
    Extension-->>Bridge: State updated
    Webview->>Webview: Refresh badge (unreadCount = 0)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested labels

released

Poem

🐰 A badge now hops with news so bright,
Showing changes fresh and right!
Dialogs bloom with version tales,
Parsed from changelogs, never fails.
Translation keys in languages new—
What's New indeed, through and through! 🌟

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/whats-new-dialog

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Comment @coderabbitai help to get the list of available commands and usage tips.

@breaking-brake breaking-brake merged commit 9a6f568 into main Mar 10, 2026
3 of 4 checks passed
@breaking-brake breaking-brake deleted the feat/whats-new-dialog branch March 10, 2026 13:45
@breaking-brake breaking-brake mentioned this pull request Mar 10, 2026
braking-brake-semantic-release Bot pushed a commit that referenced this pull request Mar 10, 2026
## [3.27.0](v3.26.3...v3.27.0) (2026-03-10)

### Features

* add Claude API skill upload, test, and sample code generation ([#635](#635)) ([71c48b4](71c48b4)), closes [#626](#626) [#405](#405)
* add What's New dialog with unread release badge ([#637](#637)) ([9a6f568](9a6f568))
@braking-brake-semantic-release
Copy link
Copy Markdown

🎉 This PR is included in version 3.27.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.