You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Global Shortcuts No Longer Override Standard macOS Commands — Removed the default global bindings for Command-S, Command-D, Command-L, and Shift-Command-D. Existing bindings that still match those former defaults are cleared once during upgrade, while other custom shortcuts remain unchanged. (#169)
Contributors
@flydog-ai — Reported and traced the unsafe default global shortcuts. (#169)
Managed Config Table Fits Its Contents — The managed-config window now reserves enough room for the update-time column on its first display, without requiring a manual window resize. (#147)
Configurable Delay-Test Shortcut — Delay tests can now be assigned a global shortcut in Settings. It has no default binding, so it will not conflict with existing shortcuts. (#147)
iCloud Storage Fails Safely — Enabling iCloud-backed config storage now warns and restores the local-storage setting when iCloud is unavailable. (#147)
Contributors
@a51095 — Reported the managed-config layout, delay-test shortcut, and unavailable-iCloud behaviors. (#147)
Delay Tests Stay Manual — Removed the startup retry for delay tests. Benchmarks now run only when explicitly started by the user, avoiding extra network requests while ClashFX and its configuration are still starting. (#147)
Config Menu Is Clearer — Renamed Profile Mixin to Config Patch (Profile Mixin), grouped it with Config Editor and current-config actions, and renamed external-resource updates to clarify that they refresh rule and proxy providers rather than managed configurations. (#147)
Contributors
@a51095 — Reported the startup delay-test behavior and the unclear configuration menu labels. (#147)
Config Selection Follows Local and iCloud Storage — Local and iCloud storage now remember their selected configurations independently. Switching storage restores the target location's previous selection, or chooses a non-default configuration when no selection has been saved yet. (#129)
Delay Results Return After Restart — After a manual delay benchmark, ClashFX remembers the active configuration and test parameters, then silently repeats the benchmark once after the next matching startup. (#147)
Proxy Speed Is Clearly Labeled — The menu-bar indicator now identifies itself as ClashFX proxy traffic and explains that it does not represent total system network speed. (#147)
Optional Dock Icon Hiding — General settings now includes a disabled-by-default "Hide Dock Icon" switch. When enabled, ClashFX remains available from the menu bar without appearing in the Dock. (#147)
Contributors
@a51095 — Verified storage switching, startup delay results, proxy speed semantics, and the optional Dock icon behavior. (#129, #147)
可选隐藏 Dock 图标 — 通用设置新增默认关闭的“隐藏 Dock 图标”开关;开启后,ClashFX 可仅通过菜单栏访问而不显示在 Dock 中。 (#147)
贡献者
@a51095 — 验证配置存储切换、启动后延迟测速、代理速率语义及可选 Dock 图标行为。 (#129, #147)
Bug Fixes
iCloud Config Switching Refreshes Immediately — Switching the iCloud config-storage option now refreshes the configuration list and reloads a valid configuration from the newly selected storage location without requiring an app restart. (#129)
Remote Config Renames Keep Working — When a subscription replaces its placeholder filename with the server-provided name, ClashFX now updates the active-config and remembered proxy references and removes the obsolete file. (#129)
Settings Section Headers Are Clearer — Section headers now sit above their cards with consistent spacing, use a distinct secondary style, and no longer clip or run into the preceding section. General settings also adds meaningful headers for application, network automation, connectivity test, and bypass-rule sections. (#129)
Copy Shortcuts No Longer Intercept Command-C — The two copy-command shortcuts now default to Control-Option-C and Control-Option-Shift-C. Existing Command-C and Option-Command-C bindings are migrated automatically once so normal system copy works again. (#129)
Enhanced Mode Has a Real Global Shortcut — Enhanced Mode now uses a configurable global shortcut with the default Control-Option-E, avoiding the earlier Command-Shift-E conflict with Xcode. (#129)
Contributors
@a51095 — Reported settings section-header layout issues and the Command-C shortcut conflict. (#129)
Settings Window Resizes Freely Again — Wrapped each Settings tab in a flexible container so fixed-height tab contents no longer block vertical resizing. The Settings window can now be resized from the bottom edges and corners across General, Appearance, Global Shortcuts, and Debug. (#129)
Contributors
@a51095 — Verified that v1.1.5.10 still allowed only partial resizing in Settings tabs. (#129)
Appearance Settings Fills the Window on Open — Fixed an initial layout pass issue where the Appearance settings view could leave a dark strip at the bottom until the window was manually resized. (#129)
Contributors
@a51095 — Reported that v1.1.5.9 could still show a partially covered bottom area until resizing the Settings window. (#129)
Settings Window Resizing Works Again — The Settings window now stays resizable while clamping only its maximum size and current frame to the visible screen area. It also reapplies the clamp after restoring a previously saved window size, so old oversized settings windows no longer slip behind the Dock. (#129)
Contributors
@a51095 — Verified that v1.1.5.8 still restored an oversized, non-resizable Settings window. (#129)
修复
设置窗口恢复可缩放 — 设置窗口现在只限制最大尺寸和当前窗口位置,不再切换 tab 时强制回固定高度;同时会在恢复历史窗口尺寸后再次按屏幕可见区域校正,避免旧的大窗口继续被 Dock 遮挡。 (#129)
Settings Window Stays Above the Dock — Settings now clamps its window frame to the current screen's visible area when opening or switching tabs, accounting for the titlebar/tab chrome so the Appearance tray-menu options remain reachable without entering full screen. (#129)
Contributors
@a51095 — Reported the Appearance settings window overlapping the Dock in normal window mode. (#129)
Web Dashboard No Longer Shows a White Top Bar in Full Screen — The Dashboard menu window now uses a standard content layout instead of a transparent full-size titlebar with an empty macOS toolbar, and removes the old 28px dashboard padding patch. This keeps the Web dashboard navigation visible when the window enters full screen. (#129)
Contributors
@a51095 — Continued verification of the Web dashboard full-screen header issue. (#129)
修复
Web 控制台全屏时不再出现白色顶栏遮挡导航 — “控制台”菜单窗口现在改用标准内容布局,不再使用透明全尺寸标题栏和空 macOS toolbar,并移除了旧的 28px 顶部避让 CSS;进入全屏后 Web dashboard 顶部导航会正常显示在内容区内。 (#129)
Dashboard Header No Longer Gets Covered in Full Screen — The native dashboard now uses an in-window header instead of a macOS toolbar, so the Recent/Active Connections switcher and search field stay visible when the dashboard enters full screen. (#129)
Profile Mixin iCloud Sync Uses a Visible File and Reloads Cleanly — When iCloud config storage is enabled, ClashFX now migrates the local or legacy hidden mixin into a visible Profile Mixin.yaml file in iCloud Documents, filters it out of normal config lists, refreshes the config menu, watches the iCloud-selected config, and reloads it without requiring an app restart. (#129)
Subscription Rules Editor Keeps Profile Buckets Out of Normal Configs — The visual Rules editor now keeps the rule bucket selector disabled on normal subscription configs and only exposes profile.prepend-rules / profile.append-rules when editing Profile Mixin, avoiding accidental edits to Profile-only rule buckets from the config editor. (#129)
Contributors
@a51095 — Continued verification for Profile Mixin, iCloud sync, and dashboard full-screen regressions. (#129)
Profile Mixin Visual Editor Opens the Right Rule Bucket — When a Profile Mixin only contains profile.prepend-rules or profile.append-rules, switching from source view to visual mode now automatically selects the non-empty Profile rule bucket instead of showing an empty top-level rules table. (#129)
Profile Mixin and Config Editor Can Open Side by Side — Opening Config Editor while the Profile Mixin editor is already visible now opens or focuses the selected profile editor instead of silently reusing the existing Profile Mixin window. The config picker also includes a Profile Mixin entry for direct navigation. (#129)
Profile Mixin Follows iCloud Config Storage — When iCloud config storage is enabled, the Profile Mixin file now resolves to the iCloud Documents container as well, so custom mixin rules stay with the rest of the synced configuration set. (#129)
ClashFX Networking Is Direct in Enhanced Mode — Enhanced Mode now prepends a built-in PROCESS-NAME,ClashFX Networking,DIRECT rule before subscription rules so the networking helper is not accidentally routed by a provider rule. (#129)
iCloud Settings Toggle Reflects the User Choice — The iCloud checkbox now stays responsive to the saved user preference even when iCloud availability temporarily prevents syncing, instead of immediately snapping back based on the effective runtime state.
Profile Rule Buckets Show in the Visual Editor — The Rules visual editor now lets you switch between top-level rules, profile.prepend-rules, and profile.append-rules, so Profile Mixin rule directives added in source view are visible and editable without falling back to raw YAML. ClashFX also expands config-embedded profile.prepend-rules into runtime rules before subscription rules, and warns when PROCESS rules need Enhanced Mode to match. (#129)
Profile Mixin Rule Directives Now Work — ClashFX now understands profile.prepend-rules and profile.append-rules in Profile Mixin files, translating them into real runtime rules before loading mihomo. Prepended rules are inserted before the existing rule list so DIRECT/process exclusions are not hidden behind MATCH.
Proxy Recovers After Wake From Sleep — After macOS wakes from lid-close sleep, ClashFX now delays recovery until the network interface is ready, checks whether the mihomo API is still healthy, and restarts the active proxy mode when needed. This should avoid the state where proxy traffic stays broken until the app is manually restarted. (#142)
Menu Bar Speed Font Restored — The menu bar upload/download speed text now uses the original ClashFX menu font again, preserving the latest macOS 26 custom drawing optimization while reverting the visual font regression.
Contributors
@ayangweb — Reported proxy failure after lid-close sleep/wake (#142)
Custom Enhanced Mode Now Applies macOS DNS Override — When Use Custom Config as-is is enabled, ClashFX still keeps the selected config file untouched, but Enhanced Mode now runs the same TUN verification and temporary macOS DNS override as the generated-config path. This prevents system DNS from staying on the router DNS while the custom TUN core is running. (#139)
Contributors
@mumaxiaozi — Reported that Enhanced Mode with Use Custom Config as-is left macOS DNS on the router DNS (#139)
修复
自定义 Enhanced Mode 现在也会接管 macOS DNS — 开启 Use Custom Config as-is 时,ClashFX 仍会保持所选配置文件原样,但 Enhanced Mode 会执行与生成配置路径一致的 TUN 校验和临时 macOS DNS 接管,避免自定义 TUN core 已运行时系统 DNS 仍停留在路由器 DNS。 (#139)
贡献者
@mumaxiaozi — 反馈开启 Use Custom Config as-is 的 Enhanced Mode 后 macOS DNS 仍停留在路由器 DNS (#139)
Bug Fixes
Menu Bar Speed Indicator Is Compact Again — The menu bar upload/download speed display now uses compact units such as 999KB/s, a lighter fixed-width font, and competitor-aligned 4pt icon-to-text spacing, reducing the worst-case status item width by about 9pt while keeping the stable-width rendering path. (#137)
Contributors
@mumaxiaozi — Reported the 1.1.4.6 menu bar icon and speed display taking more space than 1.1.4.4 (#137)
Menu Bar Speed Text Looks More Balanced — The menu bar upload/download speed now uses the macOS monospaced-digit menu font, uppercase units, and a space between the number and unit, so labels like 186 B/S and 1.2 KB/S no longer look cramped or visually mismatched.
Turn Off All Proxy Modes Is Localized — The tray-menu shortcut for disabling System Proxy and Enhanced Mode now has localized text and tooltip strings across English, Simplified Chinese, Traditional Chinese, Japanese, and Russian instead of falling back to English in non-English menus.
“关闭所有代理模式”已补齐多语言 — 用于同时关闭 System Proxy 和 Enhanced Mode 的托盘菜单快捷项,现在在英文、简体中文、繁体中文、日文、俄文下都有对应菜单文字和 tooltip,不再在非英文界面回退显示英文。
Bug Fixes
Enhanced Mode Disable Restores Manual Proxy Selection — Turning Enhanced Mode off now reapplies ClashFX's remembered proxy-group selections after the built-in core reloads, so selector groups no longer fall back to the config default such as Auto Select. (#134)
Contributors
@ljssafe — Reported proxy selection falling back to Auto Select after disabling Enhanced Mode (#134)
Profile Mixin for Runtime Configs — The Config menu now includes a Profile Mixin editor backed by ~/.config/clashfx/.profile_mixin.yaml. ClashFX applies that mixin at runtime for reloads and Enhanced Mode without rewriting subscription files, so custom proxy groups/rules can survive profile updates. (#129)
Turn Off All Proxy Modes — A new tray menu action can disable both System Proxy and Enhanced Mode at once, with a tray-menu visibility setting so users can show or hide the shortcut. (#130)
Use Custom Enhanced Mode Config As-Is — Advanced TUN Settings now has an opt-in switch that starts Enhanced Mode from the selected/runtime config without injecting ClashFX's generated TUN/DNS settings. Users who maintain their own complete tun, fake-IP DNS, external-controller, and allow-lan config can run it directly. (#118)
Bug Fixes
Profile Mixin Has Its Own Tray Menu Visibility Toggle — The new Profile Mixin menu item now has an independent show/hide switch under Configs instead of sharing the Config Editor visibility setting. (#129)
Menu Bar Speed Display Is More Compact and Stable — The menu bar upload/download speed now uses a short formatter and fixed-width numeric rendering, reducing wasted menu bar space while preventing nearby icons from jumping as speeds change. (#122, #127)
Contributors
@qzxwj — Reported the menu bar status item occupying too much width (#127)
@SJH21408 — Requested a one-click way to turn off proxy modes (#130)
Enhanced Mode Now Respects Your tun.stack Setting — The generated .enhanced_config.yaml previously hardcoded stack: mixed, silently overriding a user-configured tun.stack. If your config set system (or gvisor), the dashboard showed mixed and reverting it never stuck. ClashFX now reads tun.stack from your source config, validates it against system/gvisor/mixed (case-insensitive), and only falls back to mixed when it is unset or invalid. Both the embedded and external core paths use the same resolved value so they never diverge. (#115)
Dashboard Theme & Column Settings Now Persist — In Enhanced Mode the external controller was assigned a random port on every launch, so the Yacd dashboard origin (127.0.0.1:PORT) changed each time and its per-origin localStorage (theme, custom columns) appeared to reset. ClashFX now pins a stable controller port (19090) and only falls back to a random free port if that port is already taken, keeping the dashboard origin — and your saved preferences — stable across launches. (#115)
Enhanced Mode Startup Is More Resilient — Enabling Enhanced Mode now automatically retries once when the external core fails to bind (e.g. a transient port race or a leftover mihomo_core process holding the controller port). Each retry regenerates the config with a fresh port instead of failing outright, so toggling Enhanced Mode on is far less likely to error out and require a manual retry.
Reopening ClashFX Reveals the Menu Bar Icon — When ClashFX is already running and you launch it again from Finder, Spotlight, Launchpad, or the Dock, it now pops open the menu bar menu so you can locate the icon — helpful when the menu bar is crowded and the icon is hidden. Thanks @hangox for the suggestion. (#114)
Contributors
@hangox — Suggestion to reveal the menu bar item when reopening an already-running app (#114)