github libnyanpasu/clash-nyanpasu v1.6.0
Clash Nyanpasu v1.6.0

latest releases: pre-release, v1.6.1
21 days ago

本次更新共计 1208 次提交。更新摘要如下,详细变更日记请参阅 CHANGELOG 或见下方。

重大变动

  • 配置目录拆分为 config_dirdata_dir,尽量减少 config_dir 的修改。Windows 下可选择修改配置目录,让网盘同步配置。
  • 使用 React 19 RC 改善性能。

新功能

  • 跨平台的服务模式,支持 Linux(除 AppImage)、macOS、Windows。
  • 基于 Material Design You 思路客制化的全新界面。
  • 支持 Mihomo 的图标展示,并添加图标缓存支持。
  • 加入概览页面,方便一览信息以及快捷操作。
  • 代理链支持 Profile 级。
  • 支持使用 Lua 处理配置。
  • JavaScript 处理单元改用 ESM 格式(旧配置自动兼容)。
  • 改进 Merge 单元,加入 filter 操作,操作支持递归处理。
  • 支持导入本地配置文件。
  • 加入迁移管理模块。
  • 托盘切换支持子菜单选择。
  • 加入一键反馈按钮。
  • Windows 下支持窗口置顶。
  • 支持自定义托盘。
  • 支持配置 Tun 堆栈。

界面与用户体验改进

  • 改进动画效果,提高用户体验。
  • 改善页面加载逻辑,缓解页面切换卡顿。
  • 新增 UI 组件,如 BaseDialogLoadingSwitchExpandMore 等,提升界面可操作性。
  • 支持新主题创建方法,增强界面定制能力。

性能优化

  • 内核管理器重构,使用多线程下载,加入进度展示功能。
  • 使用 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_dir and data_dir to minimize modifications to config_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 filter operation, 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 scheme on 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

⚡ 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

📚 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

  • Drop async component use react suspense by @keiko233

  • Proxies page use new interface by @keiko233

  • Refactor rocksdb into redb, this should solve #452 by @4o3F in #755

  • Refactor rocksdb into redb, this should fix #452 by @4o3F


New Contributors

Full Changelog: v1.5.1...v1.6.0

Don't miss a new clash-nyanpasu release

NewReleases is sending notifications on new releases.