Clash Nyanpasu v1.6.0
本次更新共计 1208 次提交。更新摘要如下,详细变更日记请参阅 CHANGELOG 或见下方。
重大变动
- 配置目录拆分为
config_dir和data_dir,尽量减少config_dir的修改。Windows 下可选择修改配置目录,让网盘同步配置。 - 使用 React 19 RC 改善性能。
新功能
- 跨平台的服务模式,支持 Linux(除 AppImage)、macOS、Windows。
- 基于 Material Design You 思路客制化的全新界面。
- 支持 Mihomo 的图标展示,并添加图标缓存支持。
- 加入概览页面,方便一览信息以及快捷操作。
- 代理链支持 Profile 级。
- 支持使用 Lua 处理配置。
- JavaScript 处理单元改用 ESM 格式(旧配置自动兼容)。
- 改进 Merge 单元,加入 filter 操作,操作支持递归处理。
- 支持导入本地配置文件。
- 加入迁移管理模块。
- 托盘切换支持子菜单选择。
- 加入一键反馈按钮。
- Windows 下支持窗口置顶。
- 支持自定义托盘。
- 支持配置 Tun 堆栈。
界面与用户体验改进
- 改进动画效果,提高用户体验。
- 改善页面加载逻辑,缓解页面切换卡顿。
- 新增 UI 组件,如
BaseDialog、LoadingSwitch、ExpandMore等,提升界面可操作性。 - 支持新主题创建方法,增强界面定制能力。
性能优化
- 内核管理器重构,使用多线程下载,加入进度展示功能。
- 使用 React memoization 优化 UI 组件,减少不必要的重新渲染。
- 异步组件加载,提升应用响应速度。
平台兼容性与支持改进
- 改善与 Clash Rust 的兼容性。
- Windows 下支持窗口置顶和自定义托盘。
- macOS 添加 dock 显示/隐藏 API 支持。
- 修复和优化 Linux 下的托盘支持及应用内功能。
开发者体验(DX)改进
- 重构脚本处理节点管理器,改善 DX(开发体验)。
- 使用 BoaJS 替代 rquickjs。
- 使用 redb 替代 rocksdb 改善跨平台兼容性。
- 引入 monorepo 配置,优化开发流程。
- 增加 TypeScript 项目配置与 lint 修复,提升代码质量。
安全性与稳定性改进
- 修复了 Linux、macOS 下窗口位置无法记忆的问题。
- 修复了 Windows 下 custom scheme 无法正确打开窗口并跳转到添加 Profile 对话框的问题。
- 缓解了 Linux 下托盘无法使用代理选择的问题。
- 修复若干渲染和性能问题,提升应用稳定性。
- 改进 CSP 设置,增强应用安全性。
错误修复
- 修复了 AppImage 下打开目录、网址的问题。
- 屏蔽了 Linux 下应用内更新功能。
- 屏蔽了 AppImage 下的服务模式。
- 修复了代理链、Profile 应用、更新时不会触发配置更新问题。
- 修复了若干 Linux 和 macOS 兼容性问题。
- 修正了多个导致应用崩溃和功能失效的错误
The update includes a total of 1208 commits. A summary of the updates is provided below. For detailed changes, please refer to the CHANGELOG on GitHub, or see the detailed log below.
Major Changes
- Configuration directories split into
config_diranddata_dirto minimize modifications toconfig_dir. On Windows, users can choose to change the configuration directory to synchronize settings via cloud storage. - Upgraded to React 19 RC to improve performance.
New Features
- Cross-platform service mode support for Linux (excluding AppImage), macOS, and Windows.
- A brand new interface customized based on Material Design You principles.
- Support for displaying Mihomo icons, with added icon caching support.
- New overview page added for a quick glance at information and easy access to shortcuts.
- Proxy chain support at the Profile level.
- Added support for using Lua to process configurations.
- JavaScript processing unit now uses ESM format (old configurations are automatically compatible).
- Improved Merge unit with added
filteroperation, supporting recursive processing. - Support for importing local configuration files.
- Added a migration management module.
- Tray switching now supports submenu selection.
- Added a one-click feedback button.
- Window always-on-top feature added for Windows.
- Custom tray support.
- Support for configuring Tun stack.
UI and User Experience Improvements
- Improved animation effects for a better user experience.
- Optimized page loading logic to reduce lag during page transitions.
- New UI components like
BaseDialog,LoadingSwitch,ExpandMore, etc., enhancing interface usability. - Support for a new theme creation method, enhancing UI customization capabilities.
Performance Optimizations
- Refactored core manager with multithreaded download and progress display features.
- UI components optimized with React memoization to reduce unnecessary re-renders.
- Asynchronous component loading to improve app responsiveness.
Platform Compatibility and Support Improvements
- Enhanced compatibility with Clash Rust.
- Added window always-on-top and custom tray support for Windows.
- Dock show/hide API support added for macOS.
- Fixed and optimized tray support and in-app functionalities for Linux.
Developer Experience (DX) Improvements
- Refactored script processing and node manager to enhance DX (Developer Experience).
- Replaced rquickjs with BoaJS.
- Replaced rocksdb with redb for improved cross-platform compatibility.
- Introduced monorepo configuration to optimize the development process.
- Enhanced TypeScript project setup and lint fixes to improve code quality.
Security and Stability Improvements
- Fixed issues with window position memory on Linux and macOS.
- Resolved issues with the
custom schemeon Windows not correctly opening the window and navigating to the Add Profile dialog. - Mitigated tray proxy selection issues on Linux.
- Fixed various rendering and performance issues to enhance app stability.
- Improved CSP settings to enhance application security.
Bug Fixes
- Fixed issues with opening directories and URLs under AppImage.
- Disabled in-app update functionality for Linux.
- Disabled service mode for AppImage.
- Fixed issues with proxy chain, Profile application, and configuration updates not triggering correctly.
- Fixed various compatibility issues with Linux and macOS.
- Addressed multiple bugs causing crashes and functional failures.
[1.6.0] - 2024-08-29
Change Details
💥 Breaking Changes
- Tsconfig options by @keiko233
⚡ Performance Improvements
-
hook: Add debounce callback & do nothing when minimized by @keiko233
-
proxies: Add useTransition by @keiko233
-
ui: Memoized children node by @keiko233
-
ui: Add ref support for BasePage by @keiko233
-
Switch log page & rule page to async component by @keiko233
✨ Features
-
component: Add children props support for PaperButton by @keiko233
-
connections: Lazy load connections and close #1208 by @greenhat616
-
connections: Add no connection display by @keiko233
-
connections: New design for ConnectionsPage by @keiko233
-
custom-schema: Experimental compatible with common clash schema by @greenhat616
-
custom-scheme: Use one desktop file to process mime by @greenhat616
-
custom-theme: Background color picker minor tweak by @keiko233
-
dashboard: Add service status shortcuts card by @keiko233
-
dashboard: Add proxy shortcuts panel by @keiko233
-
dashboard: Special grid layout for drawer by @keiko233
-
dashboard: Add health panel by @keiko233
-
dashboard: Init Dashboard Page by @keiko233
-
delay-button: Minor tweaks for animetion by @keiko233
-
downloader: Make downloader status readable by @greenhat616
-
drawer: Enable panel collapsible by @keiko233
-
drawer: Add small size layout by @keiko233
-
drawer: Minor tweak for small size by @keiko233
-
enhance: Experimental add lua runner support by @greenhat616
-
enhance: Make merge process more powerful by @greenhat616
-
experimental: Initial react compiler support by @keiko233
-
interface: Initial ClashWS by @keiko233
-
interface: Add profile js interface by @keiko233
-
interface: Add current clash mode interface by @keiko233
-
interface: Add useClashCore hook method by @keiko233
-
interface: Add app tauri invoke interface by @keiko233
-
interface: Add profiles api with SWR by @keiko233
-
interface: Add ClashInfo interface with SWR by @keiko233
-
interface: Init code by @keiko233
-
ipc: Replace timing utils ofetch to tokio by @keiko233
-
ipc: Export delay test and core status call by @greenhat616
-
layout: Add scrollbar track margin by @keiko233
-
logs: New design LogsPage by @keiko233
-
macos: Try to impl dock show/hide api by @greenhat616
-
macos: Add traffic control offset for macos by @keiko233
-
migration: Add discard method for discarding changes while migration failed by @greenhat616
-
monaco: Add monaco types support by @keiko233
-
monaco: Add typescript language service by @keiko233
-
monaco: Import lua language support by @keiko233
-
monaco-edit: Switch to lazy load module by @keiko233
-
monaco-editor: Support props value changes and language switching by @keiko233
-
monaco-editor: Support language change on prop by @keiko233
-
motion: Add lighten animation effects config by @keiko233
-
nyanpasu: Node list support proxy delay testing by @keiko233
-
nyanpasu: Import react devtools on dev env by @keiko233
-
nyanpasu: Use new design Proxies Page by @keiko233
-
nyanpasu: Import tailwind css by @keiko233
-
nyanpasu: Experimentally added new settings interface by @keiko233
-
nyanpasu: Add SettingLegacy component by @keiko233
-
nyanpasu: Add SettingNyanpasuVersion component by @keiko233
-
nyanpasu: Add SettingNyanpasuUI component by @keiko233
-
nyanpasu: Add SettingNyanpasuPath component by @keiko233
-
nyanpasu: Add SettingNyanpasuPath component by @keiko233
-
nyanpasu: Add PaperButton component by @keiko233
-
nyanpasu: Add SettingNyanpasuTasks component by @keiko233
-
nyanpasu: Add SettingSystemService component by @keiko233
-
nyanpasu: Add SettingSystemBehavior component by @keiko233
-
nyanpasu: Add SettingSystemClash component by @keiko233
-
nyanpasu: Add SettingClashCore component by @keiko233
-
nyanpasu: Use grid layout for SettingClashWeb by @keiko233
-
nyanpasu: Add SettingClashField component by @keiko233
-
nyanpasu: Add SettingClashWeb component by @keiko233
-
nyanpasu: Add SettingClashExternal component by @keiko233
-
nyanpasu: Add SettingClashPort component by @keiko233
-
nyanpasu: Add SettingClashBase component by @keiko233
-
nyanpasu: Add nyanpasu setting props creator by @keiko233
-
nyanpasu: Use new theme create method by @keiko233
-
nynapasu: Add SettingNyanpasuMisc component by @keiko233
-
profiles: Adapting scroll area & add position animation by @keiko233
-
profiles: Add diff dialog hint by @greenhat616
-
profiles: Add max log level triggered notice, and close #1291 by @greenhat616
-
profiles: Add black touch new option by @greenhat616
-
profiles: Add text carousel for subscription expires and updated time by @greenhat616
-
profiles: Minor tweaks & add click card to apply profile by @keiko233
-
profiles: Add split pane support & minor tweaks by @keiko233
-
profiles: Profiles new design by @keiko233
-
profiles: Add proxy chain side page by @keiko233
-
profiles: Add monaco editor for ProfileItem by @keiko233
-
profiles: Complete profile operation menu by @keiko233
-
profiles: Redesign profile cards & new profile editor by @keiko233
-
profiles: Profile dialog support edit mode by @keiko233
-
profiles: Add QuickImport text arae component by @keiko233
-
profiles: Init new profile page by @keiko233
-
providers: Add proxy provider traffic display support by @keiko233
-
providers: Support proxies providers by @keiko233
-
providers: New design ProvidersPage by @keiko233
-
proxies: Filter proxies nodes by @greenhat616
-
proxies: Adapting scroll area by @keiko233
-
proxies: Support proxy group test url by @keiko233
-
proxies: Add scroll to current node button by @keiko233
-
proxies: Add node card animation by @keiko233
-
proxies: Group name transition use framer motion by @keiko233
-
proxies: Add none proxies tips by @keiko233
-
proxies: Add virtual scrolling to grid node list by @keiko233
-
proxies: Group list use virtual scrolling by @keiko233
-
proxies: Add node list sorting function by @keiko233
-
proxies: Add group name text transition by @keiko233
-
proxies: Add diff clash mode page layout by @keiko233
-
proxies: Support group icon show by @keiko233
-
proxies: Disable button when type is not selecor by @keiko233
-
rules: Move filter text input to header by @keiko233
-
rules: New design for RulesPage by @keiko233
-
service: Add a service control panel and sidecar check script by @greenhat616
-
setting-clash-base: Add uwp tools support by @keiko233
-
setting-clash-core: Support core update by @keiko233
-
setting-clash-field: Add ClashFieldFilter switch by @keiko233
-
sotre: Add persistence support by @keiko233
-
theme: Add MDYPaper style override by @keiko233
-
tray: Add custom tray icon support by @greenhat616
-
tray: Add submenu proxies selector by @greenhat616
-
ui: Md3 style segmented button by @greenhat616
-
ui: Add scroll area support for side page by @keiko233
-
ui: Tailwind css support mui breakpoint by @keiko233
-
ui: Base page use radix-ui scroll area by @keiko233
-
ui: Dialog allow windows drag when prop full is true by @keiko233
-
ui: Add full screen style for dialog by @keiko233
-
ui: Minor tweaks for border radius by @keiko233
-
ui: Replace Switch to LoadingSwitch for SwitchItem by @keiko233
-
ui: Init sparkline chart by @keiko233
-
ui: Add sideClassName props for SidePage component by @keiko233
-
ui: Add reverse icon props for ExpandMore component by @keiko233
-
ui: Add MuiLinearProgress material you style override by @keiko233
-
ui: Add more props support for BaseDialog by @keiko233
-
ui: Add side toggle animation & reverse layout props by @keiko233
-
ui: Add SidePage component by @keiko233
-
ui: Add TextItem component by @keiko233
-
ui: Add BaseItem component by @keiko233
-
ui: Add TextFieldProps for NumberItem by @keiko233
-
ui: Add ExpandMore component by @keiko233
-
ui: Add loading props support for BaseCard by @keiko233
-
ui: Add LoadingSwitch component by @keiko233
-
ui: Add divider props support for BaseDialog by @keiko233
-
ui: Add BaseDialog component by @keiko233
-
ui: Add MuiDialog material you override by @keiko233
-
ui: Add disabled props for MenuItem by @keiko233
-
ui: Add selectSx for MenuItem component by @keiko233
-
ui: Add divider props for NumberItem by @keiko233
-
ui: Add Expand component by @keiko233
-
ui: Add NumberItem component by @keiko233
-
ui: Add MenuItem component by @keiko233
-
ui: Add SwitchItem component by @keiko233
-
ui: Add BaseCard label props undefined type support by @keiko233
-
ui: Add MDYBaseCard component by @keiko233
-
ui: Add MuiSwitch material you override by @keiko233
-
ui: Add MuiCard & MuiCardContent material you override by @keiko233
-
ui: Custom breakpoints by @keiko233
-
ui: Add memo suuport for MDYBasePage header by @keiko233
-
ui: Add MuiPaper material you override by @keiko233
-
ui: Add MDYBasePage component by @keiko233
-
ui: Add MuiButtonGroup material you override by @keiko233
-
ui: Add MuiButton material you override by @keiko233
-
ui: Add new mui theme create method for material you by @keiko233
-
updater: Add a view github button by @greenhat616
-
use-message: Add nyanpasu title prefix by @keiko233
-
util: Add a util to collect env infos to submit issues by @greenhat616
-
web: Replace default utl to Dashboard Page by @keiko233
-
window: Always on top by @greenhat616
-
Minor tweaks for app layout by @keiko233
-
Draft updater dialog, and close #1328 by @greenhat616
-
Add core updater progress by @keiko233
-
Draft core updater progres by @greenhat616
-
Add lazy loading for proxies icons by @greenhat616
-
Allow select on rule page & log page by @keiko233
-
Add clash icon local cache by @greenhat616
-
Add runtime config diff dialog by @greenhat616
-
Add tun stack selector by @greenhat616
-
Impl script esm and async support (#1266) by @greenhat616 in #1266
-
Should hidden speed chip while no history by @greenhat616
-
Add auto migration before app run by @greenhat616
-
Add migrations manager and cmds to run migration by @greenhat616
-
Add swift feedback button by @greenhat616
-
Print better build info by @greenhat616
-
Add a experimental mutlithread file download util by @greenhat616
-
Experimental add draggable logo by @greenhat616
-
Resizable sidebar without config presistant by @greenhat616
-
Use node octokit deps by @keiko233
-
Profile spec chains support by @greenhat616
-
Support lua script type and do a lot refactor by @greenhat616
🐛 Bug Fixes
-
app-setting: Missing fields with template by @keiko233
-
chians: Throw backend log on use native dialog by @keiko233
-
ci: Update publish script by @greenhat616
-
ci: Updater checkout issue by @greenhat616
-
ci: Updater checkout issue by @greenhat616
-
ci: Prepend changelog by @greenhat616
-
ci: Build by @greenhat616
-
clash: Accpet clash rs status code and handle status error by @greenhat616
-
clash: Hidden ipv6 setting while clash rs by @greenhat616
-
clash-web: Fix reversed Boolean value by @keiko233
-
clash-web: Empty array err by @keiko233
-
config: Replace enable_auto_check_update by @keiko233
-
connections: Table type filed err by @keiko233
-
connections: Host undefined err by @keiko233
-
csp: Allow loading local cache server assets by @greenhat616
-
csp: Allow img-src from https by @keiko233
-
custom-scheme: Xdg-mime default wrong call format by @greenhat616
-
custom-scheme: Front page redirect by @greenhat616
-
custom-scheme: Should pass single-instance while launched by custom schema by @greenhat616
-
custom-scheme: Support mutiple scheme by @greenhat616
-
custom-theme: Unregister event when the themoe mode is not system by @keiko233
-
custom-theme: Fix custom theme effect & system theme sync event by @keiko233
-
dashboard: Data panel layer size err by @keiko233
-
dashboard: Zero value display err by @keiko233
-
deep link: Use different identifiers in dev mode by @keiko233
-
deps: Add misssing deps by @keiko233
📚 Documentation
-
readme: Add nyanpasu 1.6.0 label by @keiko233
-
readme: Fix resource path err by @keiko233
-
Fix dev build shields card link err by @keiko233
-
Update screenshot & clean up docs by @keiko233
🔨 Refactor
-
chains: Use bitflags instead of custom support struct by @greenhat616
-
connections: Drop mui/x-data-grid & use material-react-table by @keiko233
-
core: Use new core manager from nyanpasu utils to prepare for new nyanpasu service by @greenhat616
-
custom-scheme: Use nonblocking io and create window if window is not exist by @greenhat616
-
dashboard: Split health panel by @keiko233
-
dirs: Split home_dir into config_dir and data_dir by @greenhat616
-
drawer: Use react-split-grid replace react-resizable-panels by @keiko233
-
frontend: Make monorepo by @keiko233
-
hook: Use-breakpoint hook with react-use by @keiko233
-
hook: Optimize useBreakpoint hook to reduce unnecessary updates by @keiko233
-
hotkeys: First draft hotkeys setting dialog by @greenhat616
-
interface!: Increase code readability by @keiko233
-
interface/service: Tauri interface writing by @keiko233
-
layout: New layout design by @keiko233
-
nsis: Use nsis's built-in com plugin instead of ApplicationID plugin (#9606) by @amrbashir
-
profiles: Chians component by @keiko233
-
proxies: Drop memo use effert to update by @keiko233
-
proxies: Delay button using tailwind css and memo by @keiko233
-
script: Manifest generator script by @keiko233
-
script: Resource check script by @keiko233
-
service: Add new service backend support by @greenhat616
-
theme: Migrating to CSS theme variables by @keiko233
-
ui: Drop mui dialog & use redix-ui with framer motion by @keiko233
-
updater: Support speedtest and updater concurrency by @greenhat616
New Contributors
Full Changelog: https://github.com/libnyanpasu/clash-nyanpasu/compare/v1.5.1...v1.6.0