Skip to content

feat: add Claude Code changelog link to version notifiers#820

Merged
AndyMik90 merged 3 commits intoAndyMik90:developfrom
StillKnotKnown:stillknotknown/acs-170-feature-add-claude-code-changelog-link-to-version-notifier
Jan 8, 2026
Merged

feat: add Claude Code changelog link to version notifiers#820
AndyMik90 merged 3 commits intoAndyMik90:developfrom
StillKnotKnown:stillknotknown/acs-170-feature-add-claude-code-changelog-link-to-version-notifier

Conversation

@StillKnotKnown
Copy link
Collaborator

@StillKnotKnown StillKnotKnown commented Jan 8, 2026

Summary

  • Add link to Claude Code Changelog in the Claude Code CLI status badge popover
  • Add link to Claude Code Changelog in the App Update Notification dialog
  • Convert AppUpdateNotification component to use i18n translations

Details

The "View Claude Code Changelog" link opens https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md in an external browser, allowing users to quickly check what's new in Claude Code before updating.

Changes

  • ClaudeCodeStatusBadge.tsx: Added changelog link after "Learn more about Claude Code" link
  • AppUpdateNotification.tsx: Added changelog link and converted to i18n
  • navigation.json (en/fr): Added viewChangelog and viewChangelogAriaLabel keys
  • dialogs.json (en/fr): Added full appUpdate section with all text keys

Fixes #817

Summary by CodeRabbit

  • New Features

    • Added Claude Code Changelog button and external link in update UI.
  • Internationalization

    • Added English and French translations for app update dialogs, labels, status messages, and ARIA text.
  • Improvements

    • Updated update notification UI text and formatting for clarity.
    • Added periodic version checks to surface updates more reliably.
    • Included an extra link-style button to view the changelog.

✏️ Tip: You can customize this high-level summary in your review settings.

Add link to Claude Code Changelog in both:
- Claude Code CLI status badge popover
- App Update Notification dialog

The link opens https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
in external browser, allowing users to check what's new in Claude Code.

Also converts AppUpdateNotification to use i18n translations.

Fixes AndyMik90#817
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 8, 2026

📝 Walkthrough

Walkthrough

Adds i18n support to update and Claude Code status UI, introduces a Claude Code Changelog external link in update UI, and updates related English and French translation files. No public API or exported signatures changed.

Changes

Cohort / File(s) Summary
App update UI
apps/frontend/src/renderer/components/AppUpdateNotification.tsx
Integrated useTranslation and replaced hard-coded strings with translation keys; added Claude Code Changelog external link and ExternalLink UI element; translated status/error text and adjusted release-notes rendering strings.
Status badge & popover
apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
Reordered imports, added Popover/Tooltip/ExternalLink usage, normalized string quoting, added isOpen/showUpdateWarning state, periodic version check (CHECK_INTERVAL_MS), new external links ("Learn more", "View Claude Code Changelog"), and updated translation calls.
English translations
apps/frontend/src/shared/i18n/locales/en/dialogs.json, apps/frontend/src/shared/i18n/locales/en/navigation.json
Added appUpdate block with update flow keys (titles, statuses, actions, errors) and claudeCode.viewChangelog/viewChangelogAriaLabel keys.
French translations
apps/frontend/src/shared/i18n/locales/fr/dialogs.json, apps/frontend/src/shared/i18n/locales/fr/navigation.json
Added French appUpdate block and claudeCode.viewChangelog/viewChangelogAriaLabel keys matching the English additions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

area/frontend

Suggested reviewers

  • AndyMik90
  • AlexMadera

Poem

🐰 A changelog hop, a tiny cheer—
Translations tucked and links appear.
Popovers bloom, tooltips take flight,
Claude Code notes now shine so bright. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a changelog link to version notifiers, which is the primary objective of this pull request.
Linked Issues check ✅ Passed The PR successfully implements all requirements from issue #817: adds changelog link to version notifiers, targets correct URL, uses proper external link behavior, and includes i18n translations.
Out of Scope Changes check ✅ Passed All changes are directly related to adding the changelog link and supporting i18n translations. No unrelated modifications were introduced.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48b84b1 and 3951612.

📒 Files selected for processing (1)
  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
🧰 Additional context used
📓 Path-based instructions (3)
apps/frontend/src/**/*.{ts,tsx,jsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Always use i18n translation keys for all user-facing text in the frontend instead of hardcoded strings

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
apps/frontend/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Use useTranslation() hook with namespace prefixes (e.g., 'navigation:items.key') for accessing translation strings in React components

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
apps/frontend/**/*.{ts,tsx}

⚙️ CodeRabbit configuration file

apps/frontend/**/*.{ts,tsx}: Review React patterns and TypeScript type safety.
Check for proper state management and component composition.

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
🧠 Learnings (6)
📓 Common learnings
Learnt from: MikeeBuilds
Repo: AndyMik90/Auto-Claude PR: 661
File: apps/frontend/src/renderer/components/onboarding/OllamaModelSelector.tsx:176-189
Timestamp: 2026-01-04T23:59:45.209Z
Learning: In the AndyMik90/Auto-Claude repository, pre-existing i18n issues (hardcoded user-facing strings that should be localized) can be deferred to future i18n cleanup passes rather than requiring immediate fixes in PRs that don't introduce new i18n violations.
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : When implementing new frontend features, add translation keys to all language files (minimum: en/*.json and fr/*.json)
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/**/*.{ts,tsx,jsx} : Always use i18n translation keys for all user-facing text in the frontend instead of hardcoded strings

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : When implementing new frontend features, add translation keys to all language files (minimum: en/*.json and fr/*.json)

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/**/*.{ts,tsx} : Use `useTranslation()` hook with namespace prefixes (e.g., 'navigation:items.key') for accessing translation strings in React components

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
📚 Learning: 2026-01-04T23:59:45.209Z
Learnt from: MikeeBuilds
Repo: AndyMik90/Auto-Claude PR: 661
File: apps/frontend/src/renderer/components/onboarding/OllamaModelSelector.tsx:176-189
Timestamp: 2026-01-04T23:59:45.209Z
Learning: In the AndyMik90/Auto-Claude repository, pre-existing i18n issues (hardcoded user-facing strings) can be deferred for future i18n cleanup passes. Do not fix such issues in PRs that do not introduce new i18n violations, especially in frontend TSX components (e.g., apps/frontend/**/*.tsx). If a PR adds new i18n violations, address them in that PR.

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : Store translation strings in namespace-organized JSON files at `apps/frontend/src/shared/i18n/locales/{lang}/*.json` for each supported language

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: CodeQL (javascript-typescript)
  • GitHub Check: CodeQL (python)
🔇 Additional comments (6)
apps/frontend/src/renderer/components/AppUpdateNotification.tsx (6)

1-14: LGTM! Imports are correct.

The addition of useTranslation and ExternalLink properly supports the new i18n and changelog link features.


16-17: LGTM! Constant extraction improves maintainability.

The changelog URL is correctly extracted as a named constant, matching the requirements from issue #817.


23-63: LGTM! Markdown renderer changes are safe.

The regex pattern modifications maintain proper HTML escaping and functionality while adjusting quote styles for consistency.


191-204: LGTM! Changelog link implementation follows best practices.

The implementation correctly:

  • Uses defensive coding with optional chaining for window.electronAPI?.openExternal?.()
  • Provides proper accessibility with aria-label and aria-hidden="true" on the icon
  • Uses the constant URL to prevent injection vulnerabilities
  • Follows consistent styling and component patterns

118-270: Excellent i18n implementation!

The conversion to i18n is thorough and well-executed:

  • All user-facing strings properly converted to translation keys
  • Consistent use of "dialogs:appUpdate" namespace prefix throughout
  • Fallback strings provided for all translations
  • Error messages, status texts, and button labels all localized
  • No hardcoded strings remaining

This implementation fully complies with the coding guidelines for i18n in the frontend.

As per coding guidelines and learnings.


70-70: No action required—translation keys are correctly implemented.

The keys claudeCodeChangelog and claudeCodeChangelogAriaLabel are present in dialogs.json under the appUpdate section, and the component correctly loads the "dialogs" namespace via useTranslation(["dialogs"]). The key references in the component match the actual translation structure, so there is no namespace mismatch.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @StillKnotKnown, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the user experience by integrating direct links to the Claude Code Changelog within the application's update and status notification interfaces. This allows users to easily review new features and changes before applying updates. Furthermore, the update notification system has been significantly improved with internationalization support, making it more accessible to a global user base.

Highlights

  • Changelog Access: Users can now directly access the Claude Code Changelog from the CLI status badge popover and the App Update Notification dialog, providing easy access to release notes.
  • Internationalization of Update Notifications: The AppUpdateNotification component has been refactored to use i18n translations, improving multi-language support for all update-related messages and actions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a link to the Claude Code changelog in both the app update notification dialog and the Claude Code status badge popover. It also refactors the AppUpdateNotification component to use i18n for all its text, which is a great improvement for localization. The changes are well-implemented. My main feedback is to extract the duplicated changelog URL into a shared constant to improve maintainability.

Comment on lines +193 to +197
onClick={() =>
window.electronAPI?.openExternal?.(
"https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md"
)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

The changelog URL is hardcoded here. This same URL is also used in ClaudeCodeStatusBadge.tsx. To improve maintainability and avoid duplication, it would be better to define this URL as a constant in a shared file (e.g., apps/frontend/src/shared/constants.ts or a new dedicated file for links) and import it in both components.

Comment on lines +315 to +319
onClick={() =>
window.electronAPI?.openExternal?.(
"https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md"
)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

This hardcoded changelog URL is a duplicate of the one in AppUpdateNotification.tsx. Defining this as a shared constant would prevent the URLs from getting out of sync in the future and make updates easier.

@StillKnotKnown StillKnotKnown added feature New feature or request refactor Code improvement, no new features priority/low Nice to have, when time permits size/M Medium (100-499 lines) chore Maintenance/chores v2.7.3 v2.7.4 stable-roadmap labels Jan 8, 2026
@StillKnotKnown StillKnotKnown self-assigned this Jan 8, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @apps/frontend/src/renderer/components/AppUpdateNotification.tsx:
- Around line 188-205: Extract the hardcoded Claude Code changelog URL into a
named constant (e.g., CLAUDE_CODE_CHANGELOG_URL) at the top of the file and
replace the string literal in the Button's onClick handler (the anonymous
function that calls window.electronAPI?.openExternal) with that constant; ensure
the Button component (the one rendering the Claude Code changelog link)
references the new constant so future updates only require changing the URL in
one place.
- Line 67: The useTranslation hook in AppUpdateNotification currently requests
the unused "common" namespace; update the call to only request the "dialogs"
namespace by changing the useTranslation invocation (the const { t } =
useTranslation([...]) line) to remove "common" so it only loads "dialogs",
ensuring translations still use the "dialogs:" prefix and avoiding unnecessary
namespace loading.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32e8fee and 48b84b1.

📒 Files selected for processing (6)
  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
  • apps/frontend/src/shared/i18n/locales/en/dialogs.json
  • apps/frontend/src/shared/i18n/locales/en/navigation.json
  • apps/frontend/src/shared/i18n/locales/fr/dialogs.json
  • apps/frontend/src/shared/i18n/locales/fr/navigation.json
🧰 Additional context used
📓 Path-based instructions (4)
apps/frontend/src/shared/i18n/locales/**/*.json

📄 CodeRabbit inference engine (CLAUDE.md)

apps/frontend/src/shared/i18n/locales/**/*.json: Store translation strings in namespace-organized JSON files at apps/frontend/src/shared/i18n/locales/{lang}/*.json for each supported language
When implementing new frontend features, add translation keys to all language files (minimum: en/.json and fr/.json)

Files:

  • apps/frontend/src/shared/i18n/locales/en/navigation.json
  • apps/frontend/src/shared/i18n/locales/fr/dialogs.json
  • apps/frontend/src/shared/i18n/locales/fr/navigation.json
  • apps/frontend/src/shared/i18n/locales/en/dialogs.json
apps/frontend/src/**/*.{ts,tsx,jsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Always use i18n translation keys for all user-facing text in the frontend instead of hardcoded strings

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
apps/frontend/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Use useTranslation() hook with namespace prefixes (e.g., 'navigation:items.key') for accessing translation strings in React components

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
apps/frontend/**/*.{ts,tsx}

⚙️ CodeRabbit configuration file

apps/frontend/**/*.{ts,tsx}: Review React patterns and TypeScript type safety.
Check for proper state management and component composition.

Files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
🧠 Learnings (7)
📓 Common learnings
Learnt from: MikeeBuilds
Repo: AndyMik90/Auto-Claude PR: 661
File: apps/frontend/src/renderer/components/onboarding/OllamaModelSelector.tsx:176-189
Timestamp: 2026-01-04T23:59:45.209Z
Learning: In the AndyMik90/Auto-Claude repository, pre-existing i18n issues (hardcoded user-facing strings that should be localized) can be deferred to future i18n cleanup passes rather than requiring immediate fixes in PRs that don't introduce new i18n violations.
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : When implementing new frontend features, add translation keys to all language files (minimum: en/*.json and fr/*.json)
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : When implementing new frontend features, add translation keys to all language files (minimum: en/*.json and fr/*.json)

Applied to files:

  • apps/frontend/src/shared/i18n/locales/en/navigation.json
  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/shared/i18n/locales/fr/dialogs.json
  • apps/frontend/src/shared/i18n/locales/fr/navigation.json
  • apps/frontend/src/shared/i18n/locales/en/dialogs.json
📚 Learning: 2026-01-04T23:59:45.209Z
Learnt from: MikeeBuilds
Repo: AndyMik90/Auto-Claude PR: 661
File: apps/frontend/src/renderer/components/onboarding/OllamaModelSelector.tsx:176-189
Timestamp: 2026-01-04T23:59:45.209Z
Learning: In the AndyMik90/Auto-Claude repository, pre-existing i18n issues (hardcoded user-facing strings that should be localized) can be deferred to future i18n cleanup passes rather than requiring immediate fixes in PRs that don't introduce new i18n violations.

Applied to files:

  • apps/frontend/src/shared/i18n/locales/en/navigation.json
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/**/*.{ts,tsx,jsx} : Always use i18n translation keys for all user-facing text in the frontend instead of hardcoded strings

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/**/*.{ts,tsx} : Use `useTranslation()` hook with namespace prefixes (e.g., 'navigation:items.key') for accessing translation strings in React components

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
📚 Learning: 2026-01-04T23:59:45.209Z
Learnt from: MikeeBuilds
Repo: AndyMik90/Auto-Claude PR: 661
File: apps/frontend/src/renderer/components/onboarding/OllamaModelSelector.tsx:176-189
Timestamp: 2026-01-04T23:59:45.209Z
Learning: In the AndyMik90/Auto-Claude repository, pre-existing i18n issues (hardcoded user-facing strings) can be deferred for future i18n cleanup passes. Do not fix such issues in PRs that do not introduce new i18n violations, especially in frontend TSX components (e.g., apps/frontend/**/*.tsx). If a PR adds new i18n violations, address them in that PR.

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx
📚 Learning: 2025-12-30T16:38:36.314Z
Learnt from: CR
Repo: AndyMik90/Auto-Claude PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-30T16:38:36.314Z
Learning: Applies to apps/frontend/src/shared/i18n/locales/**/*.json : Store translation strings in namespace-organized JSON files at `apps/frontend/src/shared/i18n/locales/{lang}/*.json` for each supported language

Applied to files:

  • apps/frontend/src/renderer/components/AppUpdateNotification.tsx
  • apps/frontend/src/shared/i18n/locales/en/dialogs.json
🧬 Code graph analysis (1)
apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx (2)
.design-system/src/lib/icons.ts (2)
  • Check (21-21)
  • X (37-37)
apps/frontend/src/renderer/components/ui/popover.tsx (1)
  • PopoverTrigger (36-36)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: CodeQL (python)
  • GitHub Check: CodeQL (javascript-typescript)
🔇 Additional comments (11)
apps/frontend/src/shared/i18n/locales/fr/navigation.json (1)

47-48: LGTM! French translations are accurate and accessible.

The French translations properly convey the changelog link purpose and include appropriate accessibility information in the aria label.

apps/frontend/src/shared/i18n/locales/fr/dialogs.json (1)

137-151: LGTM! Comprehensive French i18n coverage for app update flow.

The new appUpdate section provides complete localization for the entire update workflow, including progress states, actions, and the Claude Code changelog link.

apps/frontend/src/shared/i18n/locales/en/dialogs.json (1)

137-151: LGTM! Complete English i18n coverage for app update feature.

The appUpdate section provides clear, user-friendly English translations for all app update states and actions, properly aligned with the French translations.

apps/frontend/src/shared/i18n/locales/en/navigation.json (1)

47-48: LGTM! Clear English translations with proper accessibility labels.

The changelog link translations are user-friendly and include appropriate accessibility information.

apps/frontend/src/renderer/components/AppUpdateNotification.tsx (1)

139-275: LGTM! Complete and correct i18n implementation.

All user-facing strings have been successfully converted to use i18n translation keys with:

  • Proper namespace prefixes (dialogs:appUpdate.*)
  • Fallback strings for safety
  • Consistent key usage matching the translation JSON files
  • Preserved existing functionality and error handling

The component now fully supports localization for the app update workflow.

apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx (6)

1-49: LGTM! Proper setup with i18n and React best practices.

The imports, hook configuration, and state management follow React and TypeScript best practices. The useTranslation hook correctly uses namespace prefixes as per coding guidelines.


52-173: LGTM! Proper error handling and i18n implementation.

The version checking logic, installation flow, and UI state helpers are well-implemented. All user-facing strings correctly use translation keys with fallback values, and error handling uses appropriate optional chaining for the Electron API.


175-293: LGTM! Well-structured UI with proper accessibility.

The popover UI is properly composed with Tooltip and Popover components, includes appropriate conditional rendering, and uses translation keys throughout. The component structure follows React best practices.


296-308: LGTM! External link follows security and accessibility best practices.

The Learn more link correctly uses the Electron API for opening external URLs with optional chaining, includes proper ARIA labels for accessibility, and uses i18n translation keys. This is a good pattern for external navigation.


332-352: LGTM! Update warning dialog provides good UX.

The warning dialog appropriately alerts users about session closure during updates, uses clear action buttons, and follows i18n best practices with translation keys.


310-327: LGTM! Changelog link correctly implements PR requirements.

The new "View Claude Code Changelog" link is properly implemented with:

  • Correct URL matching the specification (https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)
  • Secure external link handling via Electron API
  • Proper accessibility with aria-label and aria-hidden
  • i18n translation keys defined in both English and French with proper namespace prefixes (navigation:claudeCode.viewChangelog and navigation:claudeCode.viewChangelogAriaLabel)
  • useTranslation hook correctly configured with "navigation" namespace
  • Consistent pattern with the existing "Learn more" link

The implementation fulfills all requirements from issue #817 and complies with project i18n guidelines.

💡 Optional: Reduce code duplication between external links

The "Learn more" and "Changelog" links follow nearly identical patterns. Consider extracting a reusable ExternalLinkButton component to reduce duplication:

interface ExternalLinkButtonProps {
  url: string;
  label: string;
  ariaLabel: string;
}

const ExternalLinkButton = ({ url, label, ariaLabel }: ExternalLinkButtonProps) => (
  <Button
    variant="link"
    size="sm"
    className="w-full text-xs text-muted-foreground gap-1"
    onClick={() => window.electronAPI?.openExternal?.(url)}
    aria-label={ariaLabel}
  >
    {label}
    <ExternalLink className="h-3 w-3" aria-hidden="true" />
  </Button>
);

This is a low-priority suggestion and can be deferred to future refactoring efforts.

- Extract CLAUDE_CODE_CHANGELOG_URL to named constant
- Remove unused "common" namespace from useTranslation hook
Copy link
Owner

@AndyMik90 AndyMik90 left a comment

Choose a reason for hiding this comment

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

✅ Auto Claude Review - APPROVED

Status: Ready to Merge

Summary: ### Merge Verdict: ✅ READY TO MERGE

✅ Ready to merge - All checks passing, no blocking issues found.

No blocking issues. 2 non-blocking suggestion(s) to consider

Risk Assessment

Factor Level Notes
Complexity Medium Based on lines changed
Security Impact None Based on security findings
Scope Coherence Good Based on structural review

Findings Summary

  • Low: 2 issue(s)

Generated by Auto Claude PR Review


💡 Suggestions (2)

These are non-blocking suggestions for consideration:

🔵 [0022a7a21feb] [LOW] Duplicate changelog URL should use shared constant

📁 apps/frontend/src/renderer/components/ClaudeCodeStatusBadge.tsx:315

The Claude Code changelog URL is hardcoded inline in ClaudeCodeStatusBadge.tsx, while the same URL is already defined as a constant (CLAUDE_CODE_CHANGELOG_URL) in AppUpdateNotification.tsx. This creates inconsistency within the PR and a minor maintenance burden if the URL ever changes.

Suggested fix:

Either: (1) Extract the URL to a shared constant that both files import, or (2) Define a local constant in ClaudeCodeStatusBadge.tsx matching the pattern in AppUpdateNotification.tsx: const CLAUDE_CODE_CHANGELOG_URL = 'https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md';

🔵 [6b4f498f48cf] [LOW] AI False Positive: No unused i18n namespace

📁 apps/frontend/src/renderer/components/AppUpdateNotification.tsx:70

CodeRabbit incorrectly flagged an 'unused common namespace' in the useTranslation hook. The actual code only declares ["dialogs"] namespace. This AI comment should be dismissed.

Suggested fix:

No action needed - this was a false positive from CodeRabbit AI reviewer.

This automated review found no blocking issues. The PR can be safely merged.

Generated by Auto Claude

@AndyMik90 AndyMik90 merged commit ada91fb into AndyMik90:develop Jan 8, 2026
16 checks passed
@StillKnotKnown StillKnotKnown deleted the stillknotknown/acs-170-feature-add-claude-code-changelog-link-to-version-notifier branch January 8, 2026 14:05
arcker pushed a commit to arcker/Auto-Claude that referenced this pull request Jan 14, 2026
)

* feat: add Claude Code changelog link to version notifiers

Add link to Claude Code Changelog in both:
- Claude Code CLI status badge popover
- App Update Notification dialog

The link opens https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
in external browser, allowing users to check what's new in Claude Code.

Also converts AppUpdateNotification to use i18n translations.

Fixes AndyMik90#817

* refactor: improve AppUpdateNotification code quality

- Extract CLAUDE_CODE_CHANGELOG_URL to named constant
- Remove unused "common" namespace from useTranslation hook

---------

Co-authored-by: StillKnotKnown <stillknotknown@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance/chores feature New feature or request priority/low Nice to have, when time permits refactor Code improvement, no new features size/M Medium (100-499 lines) stable-roadmap v2.7.3 v2.7.4

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Add Claude Code changelog link to version notifier menu

3 participants