Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,114 @@

All notable changes to cmux are documented here.

## [0.64.17] - 2026-06-23

### Added
- Remote tmux mirroring over SSH using `-CC` control mode, in beta ([#5553](https://github.com/manaflow-ai/cmux/pull/5553)) -- thanks @robertnisipeanu!
- Global font magnification to scale the whole interface ([#6554](https://github.com/manaflow-ai/cmux/pull/6554))
- Right-sidebar custom sidebar tabs ([#6430](https://github.com/manaflow-ai/cmux/pull/6430))
- Chrome-style audio-playing indicator on browser panes ([#6517](https://github.com/manaflow-ai/cmux/pull/6517))
- Browser hard-refresh shortcut ([#6256](https://github.com/manaflow-ai/cmux/pull/6256))
- Clear Screen (Keep Scrollback) command, bound to Cmd+Shift+K ([#6139](https://github.com/manaflow-ai/cmux/pull/6139))
- Configurable terminal scroll-speed multiplier via `terminal.scrollSpeed` ([#5671](https://github.com/manaflow-ai/cmux/pull/5671)) -- thanks @RubiconPerform!
- Open the selected file from the keyboard in the file explorer ([#6001](https://github.com/manaflow-ai/cmux/pull/6001))
- One-step grouped workspace creation ([#6657](https://github.com/manaflow-ai/cmux/pull/6657))
- Searchable, uncapped diff viewer branch-base picker with smart defaults ([#6484](https://github.com/manaflow-ai/cmux/pull/6484)) -- thanks @azooz2003-bit!
- Mark workspaces read/unread and clear notifications from the workspace group menu ([#6535](https://github.com/manaflow-ai/cmux/pull/6535)) -- thanks @azooz2003-bit!
- Profiling capture action with a live progress window ([#6433](https://github.com/manaflow-ai/cmux/pull/6433), [#6440](https://github.com/manaflow-ai/cmux/pull/6440))
- `cmux remotes` CLI to manage device-registry routes ([#6096](https://github.com/manaflow-ai/cmux/pull/6096))
- Flag "Needs input" for blocked AskUserQuestion and ExitPlanMode prompts under `--dangerously-skip-permissions` ([#6608](https://github.com/manaflow-ai/cmux/pull/6608))
- iOS (beta): on-device voice dictation in the composer ([#6197](https://github.com/manaflow-ai/cmux/pull/6197))
- iOS (beta): image attachments in the composer ([#6102](https://github.com/manaflow-ai/cmux/pull/6102))
- iOS (beta): Return key on the terminal accessory bar ([#6101](https://github.com/manaflow-ai/cmux/pull/6101))
- iOS (beta): mark workspaces read/unread from the terminal menu, with an unread-count badge on the back button ([#6362](https://github.com/manaflow-ai/cmux/pull/6362), [#6350](https://github.com/manaflow-ai/cmux/pull/6350))

Comment on lines +7 to +27

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Fix markdown heading blank-line formatting to comply with markdownlint MD022.

The section headings (### Added, ### Changed, ### Fixed, ### Removed) require blank lines both above and below per markdownlint rule MD022. Currently, each heading has a blank line above but the content immediately follows without a blank line below. Insert a blank line after each section heading before the first item.

🔧 Proposed fix for heading blank-line formatting
 ## [0.64.17] - 2026-06-23

 ### Added
+
 - iOS (beta): Telegram-style Agent Chat. Open any agent session as a chat thread...

Apply the same pattern to ### Changed (after line 28), ### Fixed (after line 38), and ### Removed (after line 96).

Also applies to: 28-37, 38-95, 96-98

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CHANGELOG.md` around lines 7 - 27, The CHANGELOG.md file has section headings
that do not comply with markdownlint rule MD022, which requires blank lines both
above and below section headings. Insert a blank line immediately after each
section heading (### Added, ### Changed, ### Fixed, ### Removed) before the
first list item in that section to ensure proper markdown formatting compliance
across all heading instances in the document.

### Changed
- Terminal and browser surface tabs hug their content instead of stretching to a fixed width ([#6653](https://github.com/manaflow-ai/cmux/pull/6653))
- Prioritize full command-palette title matches over partial ones ([#6498](https://github.com/manaflow-ai/cmux/pull/6498))
- Reduce UI lag from Settings, sidebar, git, and browser churn ([#6260](https://github.com/manaflow-ai/cmux/pull/6260)) -- thanks @azooz2003-bit!
- Evict hidden browser WebViews under memory pressure and defer restored WebViews until visible ([#6585](https://github.com/manaflow-ai/cmux/pull/6585), [#6508](https://github.com/manaflow-ai/cmux/pull/6508))
- Gate idle pollers to the active workspace ([#6583](https://github.com/manaflow-ai/cmux/pull/6583))
- Diff viewer toolbar stays responsive and never overlaps at small widths ([#6550](https://github.com/manaflow-ai/cmux/pull/6550)) -- thanks @azooz2003-bit!
- Allow `.m4r` files as notification sounds ([#6635](https://github.com/manaflow-ai/cmux/pull/6635))
- iOS (beta): collapse workspace folders per device ([#6666](https://github.com/manaflow-ai/cmux/pull/6666))

### Fixed
- Fix a sidebar lag regression from v0.64.16 by cutting per-row font-modifier and pin-state work ([#6613](https://github.com/manaflow-ai/cmux/pull/6613))
- Fix the Codex sidebar status lifecycle and stale Claude notification sidebar status ([#6609](https://github.com/manaflow-ai/cmux/pull/6609), [#6473](https://github.com/manaflow-ai/cmux/pull/6473))
- Fix sidebar tab selection highlight timing ([#6627](https://github.com/manaflow-ai/cmux/pull/6627))
- Fix Cmd+T opening in home after an agent-resume session restore ([#6621](https://github.com/manaflow-ai/cmux/pull/6621))
- Fix explicit surface routing for read-screen and send ([#6605](https://github.com/manaflow-ai/cmux/pull/6605))
- Fix stale surface-to-panel rebinding and stale agent-resume executable paths ([#6581](https://github.com/manaflow-ai/cmux/pull/6581), [#6582](https://github.com/manaflow-ai/cmux/pull/6582))
- Fix terminal input after a window key restore ([#6518](https://github.com/manaflow-ai/cmux/pull/6518))
- Fix the Cmd+grave show/hide global hotkey ([#6477](https://github.com/manaflow-ai/cmux/pull/6477))
- Fix vim copy-mode cursor, V/Y selection, and pasteboard ([#6221](https://github.com/manaflow-ai/cmux/pull/6221))
- Fix copy-on-select parity with Ghostty ([#6200](https://github.com/manaflow-ai/cmux/pull/6200))
- Fix the crash-diagnostic window restore ([#6596](https://github.com/manaflow-ai/cmux/pull/6596))
- Fix a tab-switch crash in the vertical sidebar ([#6340](https://github.com/manaflow-ai/cmux/pull/6340))
- Fix a ~100% CPU re-render loop when selecting a bundled extension sidebar ([#6341](https://github.com/manaflow-ai/cmux/pull/6341))
- Fix blank SF Symbol controls on macOS 27 ([#6396](https://github.com/manaflow-ai/cmux/pull/6396))
- Fix the audio indicator audibility signal ([#6566](https://github.com/manaflow-ai/cmux/pull/6566))
- Fix browser download trigger parity ([#6258](https://github.com/manaflow-ai/cmux/pull/6258))
- Recover Settings opened from offscreen frames, and stop a closed Settings window from reappearing ([#5806](https://github.com/manaflow-ai/cmux/pull/5806), [#6193](https://github.com/manaflow-ai/cmux/pull/6193))
- Fix title-churn beachball in transcript adoption and sidebar rows ([#6460](https://github.com/manaflow-ai/cmux/pull/6460))
- Restore the pane header title after a terminal restart ([#6333](https://github.com/manaflow-ai/cmux/pull/6333))
- Recover a blank Markdown viewer pane after dragging it to another column ([#6331](https://github.com/manaflow-ai/cmux/pull/6331))
- Vault sidebar always offers "Show more" so capped folder sections stay reachable ([#6327](https://github.com/manaflow-ai/cmux/pull/6327))
- Fix the working directory after session-restore resume for Claude and other agents ([#6458](https://github.com/manaflow-ai/cmux/pull/6458), [#6205](https://github.com/manaflow-ai/cmux/pull/6205))
- Fix Claude Code 2.1.183 agent-team teammates opening split panes again ([#6499](https://github.com/manaflow-ai/cmux/pull/6499))
- Preserve Claude Teams restore flags ([#6242](https://github.com/manaflow-ai/cmux/pull/6242))
- Fix right-sidebar surface shortcut spam routing ([#6472](https://github.com/manaflow-ai/cmux/pull/6472))
- Fix Dia browser import profile detection ([#6478](https://github.com/manaflow-ai/cmux/pull/6478))
- Fix zsh aliases after the agent return shell ([#6515](https://github.com/manaflow-ai/cmux/pull/6515))
- Fix settings search for auto-naming and broaden fuzzy settings-search matching ([#6201](https://github.com/manaflow-ai/cmux/pull/6201), [#6196](https://github.com/manaflow-ai/cmux/pull/6196))
- Fix terminal focus retry after a tiny responder handoff ([#6359](https://github.com/manaflow-ai/cmux/pull/6359))
- Avoid DevTools teardown during redock ([#6559](https://github.com/manaflow-ai/cmux/pull/6559))
- Fix hidden popover relayout and reduce hit-test CPU during SwiftUI updates and pointer movement ([#6589](https://github.com/manaflow-ai/cmux/pull/6589), [#6592](https://github.com/manaflow-ai/cmux/pull/6592))
- Cache the settings search index per runtime ([#6591](https://github.com/manaflow-ai/cmux/pull/6591))
- Move the open-diff baseline lookup off the main thread ([#6497](https://github.com/manaflow-ai/cmux/pull/6497))
- Fix the macOS notification fallback identity ([#6000](https://github.com/manaflow-ai/cmux/pull/6000))
- Fix a remote PTY restore probe reply leak ([#6070](https://github.com/manaflow-ai/cmux/pull/6070))
- Fix OpenCode bunfs worker autoresume and OpenCode resume after a TUI-settings capture ([#6680](https://github.com/manaflow-ai/cmux/pull/6680), [#6397](https://github.com/manaflow-ai/cmux/pull/6397))
- Fix notification jump-focus for nested tabs ([#6416](https://github.com/manaflow-ai/cmux/pull/6416))
- Remove a sidebar rows measurement that re-livelocked layout at scale ([#6188](https://github.com/manaflow-ai/cmux/pull/6188))
- Prevent quit hangs from analytics flushing ([#6232](https://github.com/manaflow-ai/cmux/pull/6232), [#6417](https://github.com/manaflow-ai/cmux/pull/6417)) -- thanks @azooz2003-bit!
- Reduce Sentry CLI broken-pipe crashes and hangs ([#6254](https://github.com/manaflow-ai/cmux/pull/6254)) -- thanks @azooz2003-bit!
- Release closed macOS helper windows ([#6368](https://github.com/manaflow-ai/cmux/pull/6368)) -- thanks @azooz2003-bit!
- Fix canvas tab hover hit-testing, focus canvas panes from terminal body clicks, and fix canvas zoom-animation snap at low zoom ([#6555](https://github.com/manaflow-ai/cmux/pull/6555), [#6456](https://github.com/manaflow-ai/cmux/pull/6456), [#6538](https://github.com/manaflow-ai/cmux/pull/6538)) -- thanks @azooz2003-bit!
- Avoid nested quit-confirmation modal loops ([#6461](https://github.com/manaflow-ai/cmux/pull/6461)) -- thanks @azooz2003-bit!
- Reduce redundant panel title update work ([#6552](https://github.com/manaflow-ai/cmux/pull/6552)) -- thanks @Eridanus117!
- Fix a QuickLook preview crash on a deactivated QLPreviewView ([#6402](https://github.com/manaflow-ai/cmux/pull/6402)) -- thanks @thiveeiyan!
- Fix terminal content duplication on window resize ([#6386](https://github.com/manaflow-ai/cmux/pull/6386)) -- thanks @mvanhorn!
- Stop the main window drifting down on sleep/wake ([#6305](https://github.com/manaflow-ai/cmux/pull/6305)) -- thanks @sergej-koscejev!
- Fix stale cmux ssh pane resize by reconciling remote PTY size after arming SIGWINCH, and fix resize with SSH ControlMaster ([#5989](https://github.com/manaflow-ai/cmux/pull/5989), [#6432](https://github.com/manaflow-ai/cmux/pull/6432)) -- thanks @kylejcaron!
- Sync remote tmux session renames to the mirror workspace title, and fix session discovery under a non-UTF-8 remote locale ([#6602](https://github.com/manaflow-ai/cmux/pull/6602), [#6568](https://github.com/manaflow-ai/cmux/pull/6568)) -- thanks @mxschmitt!
- Fix the cmux ssh-tmux socket path being too long for AF_UNIX ([#6465](https://github.com/manaflow-ai/cmux/pull/6465)) -- thanks @mxschmitt!
- Fix remote-tmux mirror buffer truncation on a cross-DPI display move, and restore the bonsplit pointer so ssh-tmux tab reorders sync to tmux ([#6393](https://github.com/manaflow-ai/cmux/pull/6393), [#6438](https://github.com/manaflow-ai/cmux/pull/6438)) -- thanks @robertnisipeanu!
- Merge user `--settings` into injected hook settings in the claude wrapper ([#5388](https://github.com/manaflow-ai/cmux/pull/5388)) -- thanks @choi88andys!
- Bound iOS pairing attempts and fix the Pair iPhone window (Cmd+W, sizing, layout, QR padding, failure copy) ([#6495](https://github.com/manaflow-ai/cmux/pull/6495), [#6038](https://github.com/manaflow-ai/cmux/pull/6038))
- iOS (beta): fix native pairing sign-in failures ([#6457](https://github.com/manaflow-ai/cmux/pull/6457)) -- thanks @azooz2003-bit!
- iOS (beta): fix the unread count badge contrast, stop pausing background music on text submit, and sustain hold-to-repeat Backspace ([#6524](https://github.com/manaflow-ai/cmux/pull/6524), [#6290](https://github.com/manaflow-ai/cmux/pull/6290), [#6299](https://github.com/manaflow-ai/cmux/pull/6299))
- Fix the changelog title clipping ([#6425](https://github.com/manaflow-ai/cmux/pull/6425))

### Removed
- Remove the high-memory pane warning UI (the triangle indicator and popover); the underlying guardrail engine stays ([#6619](https://github.com/manaflow-ai/cmux/pull/6619))

### Thanks to 12 contributors!

- [@austinywang](https://github.com/austinywang)
- [@azooz2003-bit](https://github.com/azooz2003-bit)
- [@choi88andys](https://github.com/choi88andys)
- [@Eridanus117](https://github.com/Eridanus117)
- [@kylejcaron](https://github.com/kylejcaron)
- [@lawrencecchen](https://github.com/lawrencecchen)
- [@mvanhorn](https://github.com/mvanhorn)
- [@mxschmitt](https://github.com/mxschmitt)
- [@robertnisipeanu](https://github.com/robertnisipeanu)
- [@RubiconPerform](https://github.com/RubiconPerform)
- [@sergej-koscejev](https://github.com/sergej-koscejev)
- [@thiveeiyan](https://github.com/thiveeiyan)

Comment on lines +5 to +113

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify 0.64.17 changelog entries exist in all web locale message files.

# Find all message catalog files and check for 0.64.17 references
fd -e json 'messages' web/ --type f | while read file; do
  if grep -q '0\.64\.17' "$file" 2>/dev/null; then
    echo "✓ Found 0.64.17 in $file"
  else
    echo "✗ Missing 0.64.17 in $file"
  fi
done

# Also check web/i18n/routing.ts for locale configuration
echo -e "\nLocale routing:"
rg -A 10 'locales.*=' web/i18n/routing.ts 2>/dev/null || echo "routing.ts not found or pattern not matched"

Repository: manaflow-ai/cmux

Length of output: 282


🏁 Script executed:

cat /tmp/coderabbit-shell-logs/shell-output-SmLKcD

Repository: manaflow-ai/cmux

Length of output: 282


🏁 Script executed:

# Find all message files in web/messages and list them
fd -type f web/messages/ | head -20

Repository: manaflow-ai/cmux

Length of output: 325


🏁 Script executed:

# Check what locale files exist and whether 0.64.17 appears in each
find web/messages -name "*.json" -type f | sort | while read file; do
  count=$(grep -c '0\.64\.17' "$file" 2>/dev/null || echo 0)
  echo "$(basename $file): $count matches"
done

Repository: manaflow-ai/cmux

Length of output: 583


Web changelog localization for 0.64.17 is missing from all locale message catalogs.

Verification of web/messages/*.json shows that all 20 configured locales (ar, bs, da, de, en, es, fr, it, ja, km, ko, no, pl, pt-BR, ru, th, tr, uk, zh-CN, zh-TW) return 0 matches for "0.64.17". The changelog entry in CHANGELOG.md (lines 5–113) must be added to the locale-specific message catalogs for every supported locale before the changelog is rendered on the docs site. This includes new additions, changes, fixes, and the contributor attribution list.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 28-28: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 38-38: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 96-96: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CHANGELOG.md` around lines 5 - 113, The changelog entries for version 0.64.17
that were added to CHANGELOG.md are missing from all 20 locale-specific message
catalog files (ar, bs, da, de, en, es, fr, it, ja, km, ko, no, pl, pt-BR, ru,
th, tr, uk, zh-CN, zh-TW). Add the complete 0.64.17 changelog content including
the Added, Changed, Fixed, Removed sections and the contributor attribution list
to each of the web/messages locale JSON files to ensure the changelog renders
correctly on the docs site for all supported languages.

Source: Path instructions

## [0.64.16] - 2026-06-15

### Added
Expand Down
32 changes: 16 additions & 16 deletions cmux.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -4756,10 +4756,10 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.appuitests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -4839,7 +4839,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
GENERATE_INFOPLIST_FILE = NO;
Expand All @@ -4848,7 +4848,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
OTHER_LDFLAGS = (
"-lc++",
"-framework",
Expand Down Expand Up @@ -4885,7 +4885,7 @@
CODE_SIGN_ENTITLEMENTS = Resources/cmux.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
GENERATE_INFOPLIST_FILE = NO;
Expand All @@ -4894,7 +4894,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"-lc++",
Expand Down Expand Up @@ -4961,10 +4961,10 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.appuitests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -4979,7 +4979,7 @@
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
DEVELOPMENT_TEAM = "";
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -4988,7 +4988,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app.docktileplugin.debug;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -5004,7 +5004,7 @@
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
DEVELOPMENT_TEAM = "";
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -5013,7 +5013,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app.docktileplugin;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -5028,10 +5028,10 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.apptests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -5047,10 +5047,10 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 96;
CURRENT_PROJECT_VERSION = 97;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.64.16;
MARKETING_VERSION = 0.64.17;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.apptests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down
26 changes: 26 additions & 0 deletions web/app/[locale]/docs/changelog/changelog-media.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,32 @@ export interface VersionMedia {
}

export const changelogMedia: Record<string, VersionMedia> = {
"0.64.17": {
title:
"Global Font Magnification, Remote tmux Mirroring, Diff Viewer Branch Picker",
features: [
{
title: "Global Font Magnification",
description:
"Scale the entire cmux interface up or down with a single magnification control, not just the terminal font.",
},
{
title: "Remote tmux Mirroring (Beta)",
description:
"Mirror a remote tmux session over SSH using -CC control mode, so remote windows show up as native cmux tabs that stay in sync with renames and reorders.",
},
{
title: "Browser and Diff Viewer Polish",
description:
"Browser panes get a Chrome-style audio-playing indicator and a hard-refresh shortcut. The diff viewer adds a searchable, uncapped branch-base picker with smart defaults and a toolbar that never overlaps at small widths.",
},
{
title: "Stability and Performance",
description:
"Fixes for a sidebar lag regression, a vertical-sidebar tab-switch crash, a ~100% CPU re-render loop on bundled extension sidebars, blank SF Symbol controls on macOS 27, terminal content duplication on resize, and quit hangs from analytics flushing.",
},
],
},
Comment on lines +29 to +59

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify changelog-media.ts feature text is localized.

# Find imports of changelogMedia to understand usage context
echo "=== Checking imports of changelog-media.ts ==="
rg -r '$0' --type ts --type tsx 'from.*changelog-media|import.*changelogMedia' web/ -B 2 -A 2

# Check for 0.64.17 entries in locale message catalogs
echo -e "\n=== Checking for 0.64.17 feature text in message catalogs ==="
fd -e json 'messages' web/ --type f | while read file; do
  if grep -q 'Agent Chat\|Font Magnification\|tmux Mirroring' "$file" 2>/dev/null; then
    echo "✓ Found 0.64.17 feature text in $file"
  fi
done

# List all locale catalogs found
echo -e "\n=== Supported locale catalogs ==="
find web/messages -name '*.json' -type f 2>/dev/null | sort

Repository: manaflow-ai/cmux

Length of output: 756


🏁 Script executed:

# Find how changelog-media is imported and used
rg 'changelog-media' web/ --type ts -B 2 -A 2

Repository: manaflow-ai/cmux

Length of output: 649


🏁 Script executed:

# Check the structure of changelog-media.ts file
head -100 web/app/\[locale\]/docs/changelog/changelog-media.ts

Repository: manaflow-ai/cmux

Length of output: 4619


🏁 Script executed:

# Look for any existing localization patterns in changelog
rg 'changelog' web/messages/en.json -A 2 -B 2

Repository: manaflow-ai/cmux

Length of output: 860


🏁 Script executed:

# Check how the docs page uses changelog-media
rg 'changelogMedia\|changelog-media' web/app/ --type ts --type tsx -B 3 -A 3

Repository: manaflow-ai/cmux

Length of output: 182


🏁 Script executed:

# Check how page.tsx renders the changelogMedia content
sed -n '1,100p' web/app/\[locale\]/docs/changelog/page.tsx | head -50

Repository: manaflow-ai/cmux

Length of output: 1654


🏁 Script executed:

# Look for the full page.tsx to see how feature titles/descriptions are rendered
cat -n web/app/\[locale\]/docs/changelog/page.tsx | head -80

Repository: manaflow-ai/cmux

Length of output: 3015


🏁 Script executed:

# Check if any localization exists for feature highlight text across locales
rg 'iOS.*Agent Chat' web/messages/ --type json

Repository: manaflow-ai/cmux

Length of output: 154


🏁 Script executed:

# Find the rendering logic for changelogMedia in page.tsx
tail -n +80 web/app/\[locale\]/docs/changelog/page.tsx | head -100

Repository: manaflow-ai/cmux

Length of output: 2855


🏁 Script executed:

# Search for where feature.title and feature.description are rendered
rg 'feature\.(title|description)' web/app/ --type ts --type tsx -B 2 -A 2

Repository: manaflow-ai/cmux

Length of output: 182


🏁 Script executed:

# Check the full page.tsx file to see the complete rendering
wc -l web/app/\[locale\]/docs/changelog/page.tsx

Repository: manaflow-ai/cmux

Length of output: 199


Move feature titles and descriptions to locale message catalogs.

The FeatureList component in page.tsx renders feature.title and feature.description directly from the hardcoded changelogMedia object without localization. The 0.64.17 feature text ("iOS Beta: Agent Chat", "Global Font Magnification", "Remote tmux Mirroring (Beta)", etc.) is user-facing content on a public web page, but it has no entries in any of the 21 supported locale message catalogs (web/messages/*.json).

Per path instructions, web UI text must be consumed from next-intl or another locale-specific source and represented across all supported locales. Move the feature title and description strings to web/messages/en.json, web/messages/ja.json, and every other supported locale catalog, then use next-intl to retrieve them in the FeatureList component.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/app/`[locale]/docs/changelog/changelog-media.ts around lines 29 - 59, The
feature titles and descriptions in the 0.64.17 version object of changelogMedia
are hardcoded without localization. Extract all feature title and description
strings ("iOS Beta: Agent Chat", "Global Font Magnification", "Remote tmux
Mirroring (Beta)", "Browser and Diff Viewer Polish", "Stability and
Performance") from the hardcoded changelogMedia entries and add them as
key-value pairs to all 21 supported locale message catalogs in
web/messages/*.json files (en.json, ja.json, and others). Then update the
FeatureList component to retrieve these strings from next-intl instead of
accessing feature.title and feature.description directly from the changelogMedia
object, so all user-facing content is properly localized per the path
instructions.

Source: Path instructions

"0.64.16": {
title:
"AI Auto-Naming, Per-Workspace Env Vars, Left/Right Option as Alt",
Expand Down
Loading