Commit Graph
1621 Commits
Author SHA1 Message Date
wonfen 304f5bade9 perf(proxy): consolidate proxy data into a single IPC (#7542)
* feat(proxy): build deterministic proxy view

* feat(proxy): expose ordered proxy view command

* feat(proxy): add proxy view client contract

* fix(lint): allow Node test files

* feat(proxy): switch UI to ordered proxy view

* fix(proxy): harden ordered proxy view consumers

* fix(proxy): compare chain duplicates by current id

* fix(proxy): release mihomo guard after fetch

* fix(proxy): preserve semantic selections across refresh

* fix(proxy): block global chain without GLOBAL

* fix(proxy): handle proxy view edge states
2026-07-21 00:11:59 +08:00
Tunglies c85928ecaf fix(i18n): keep language section loader private 2026-07-20 02:50:49 +08:00
Tunglies e63b8e6eb0 perf(frontend): eliminate navigation loading states 2026-07-20 02:43:38 +08:00
Tunglies 12aa989af1 fix(knip): remove unused proxy order export 2026-07-19 21:29:30 +08:00
oomeow becd86c179 feat(home): hide hidden proxy groups in current proxy card (#7504)
* feat(home): hide hidden proxy groups in current proxy card

* docs: update changelog with fixes and feature clarifications
2026-07-18 15:16:37 +00:00
wonfen b7978705af fix: support VLESS xhttp and normalize IPv6 addresses 2026-07-17 23:51:29 +08:00
timelicandwonfen 950e8195fb style: refine navigation item styling (#6578)
Co-authored-by: wonfen <eiwonfen@gmail.com>
2026-07-17 04:20:02 +00:00
wonfen bdeaf2a062 perf: improve drag performance for large profile lists 2026-07-17 03:08:22 +08:00
oomeow 96e9564295 style(home): fix layout shift in current-proxy-card by adding fixed heights (#7494) 2026-07-16 12:19:23 +00:00
wonfen f09aef170d fix(proxy): preserve runtime proxy group order 2026-07-16 06:53:21 +08:00
wonfen d144e78aeb perf: streamline profile switching 2026-07-16 05:52:10 +08:00
wonfen cd20bdb6a1 fix: safely restore selected proxy nodes 2026-07-16 04:16:42 +08:00
ysakura99andwonfen f1e0622813 fix(connections): show destination IP as host for raw-IP targets (#7483)
* fix(connections): show destination IP as host for raw-IP targets

When metadata.host is empty (a raw-IP CONNECT with no domain), the
connection "Host" column fell back to remoteDestination (the outbounds
relay/exit address) joined with the destination port, which misleadingly
showed the relay as the connections destination.

Fall back to metadata.destinationIP instead, in both the list column
(getConnectionHost) and the detail panel.

Closes #6669

* fix(connections): preserve fallback for empty destination IP

---------

Co-authored-by: wonfen <eiwonfen@gmail.com>
2026-07-14 14:42:07 +08:00
Tunglies 7ca20fc4ed refactor: knip cleanup (#7468)
* chore(frontend): expand Knip reports

* chore: remove unused Mihomo changelog sync script

* refactor: remove unused value exports

* refactor: remove unused type exports

* refactor: remove circular route dependencies

* chore(frontend): move Knip scope to config

* chore(i18n): remove stale portable update message
2026-07-13 11:29:25 +08:00
wonfen eaf4fc2c17 fix: handle empty HTTP request timeout in profile editor 2026-07-13 01:31:44 +08:00
oomeow 0337340471 fix(proxy): increase debounce delay and refine head state logic (#7464) 2026-07-12 08:22:22 +00:00
Tunglies 14bc636ee8 refactor(frontend): remove unused modules 2026-07-12 12:42:27 +08:00
Tunglies 0c86b70fe9 refactor(frontend): reuse sortable arrayMove 2026-07-11 18:58:31 +08:00
Tunglies 6d3761a9ee refactor(frontend): remove obsolete monitor diagnostics 2026-07-11 17:48:16 +08:00
Tunglies ab1e15dceb refactor(frontend): remove retired test page 2026-07-11 16:55:56 +08:00
Tunglies 34fee12496 fix(frontend): warm lazy routes concurrently after idle
Start all navigation route preloads after a single idle gate and show centered loading fallbacks during cold route loads.
2026-07-11 18:01:53 +08:00
oomeow 1847002ebe fix: group tools filter and layout (#7431)
* fix(proxy): group filter

* refactor(proxy): improve layout and structure of proxy render components

* refactor(proxy): remove unnecessary flushSync calls in proxy-group-tools

* feat(proxy): debounce filter input in ProxyGroupTools

* refactor(base-search-box): initialize lastSearchStateRef with current state

* refactor(proxy): remove debug console.log in proxy-groups

* refactor(proxy): improve scrolling behavior in proxy groups

* refactor(proxy): improve scroll position restoration logic

* chore(proxy): reset proxy group tools layout

* style(proxy): adjust margins and spacing in proxy components

* refactor(proxy): remove commented out ProxyGroupTools component
2026-07-11 07:38:32 +00:00
oomeowandTunglies 562828e14d fix: provider proxy delay check (#7456)
* refactor(proxy): support delay testing for provider-based proxies

* style: remove debug console logs

* docs: update changelog

* feat(services): merge provider nodes into records in calcuProxies

---------

Co-authored-by: Tunglies <tunglies.dev@outlook.com>
2026-07-11 05:24:41 +00:00
Tunglies e8cefa8b07 perf(frontend): vectorize home navigation icon 2026-07-10 20:05:41 +08:00
Tunglies b53227dab5 perf(frontend): optimize initial dependency loading 2026-07-10 19:43:55 +08:00
wonfen 979defc070 fix: prevent rules editor from clearing custom rules before load 2026-07-09 13:46:24 +08:00
StarsSail 406c0ab5a7 fix: parse error (#7430) 2026-07-08 03:35:03 +00:00
StarsSail d4118295a3 fix: remove unnecessary input fields (#7423)
* fix: remove unnecessary input fields

* fix: remove unnecessary input fields from ProfileViewer component
2026-07-06 02:43:18 +00:00
Tunglies afbc14840c fix: warm lazy routes after startup visibility 2026-07-06 09:13:11 +08:00
Tunglies 1d7462a021 fix: stop idle mihomo websocket subscriptions 2026-07-06 08:33:23 +08:00
sgt57 c4658cff88 feat: add window resize handles on linux (#7319) 2026-07-04 03:16:08 +00:00
StarsSail e578e473d5 fix: prevent input focus loss in allowOrigins (#7397)
* fix: update CORS configuration to use key-value pairs for allowed origins

* fix: refactor CORS configuration to use AllowOriginItem interface for better type safety
2026-07-03 17:53:51 +00:00
oomeow dd3ef698f5 feat: sticky groups (#7195)
* feat(proxy): implement sticky virtual list and group tools

- Add new StickyVirtualList component for better performance with sticky headers
- Create ProxyGroupTools component for filtering, sorting and testing proxy groups
- Enhance proxy groups with improved scrolling and group toggle functionality
- Integrate search box with click event handling
- Remove redundant ProxyHead component usage

* style: remove unused import and update TypeScript types

* refactor: convert function component to forwardRef component to fix biome lint error

* feat(proxy): extract proxy chain UI to separate component

* refactor: remove custom throttle implementation and simplify dependencies

* feat(proxy): improve proxy groups UI and scrolling behavior

- Add initialOffset prop to StickyVirtualList for better scroll position restoration
- Refactor ProxyGroups component to separate chain and normal modes
- Implement scroll position persistence for both chain and normal modes
- Add sticky shadow effect for expanded proxy groups
- Remove unnecessary ScrollTopButton component
- Optimize scroll event handling with throttling
- Improve code organization with custom hooks and component separation

* docs(proxy-groups): Add TODO comment for initial render position issue

* feat(proxy): improve scroll position handling and UI display

* refactor(proxy): simplify scroll handling logic and remove unused code

* fix(sticky-virtual-list): remove duplicate styles and add padding

* refactor(proxy): rename scroll offset variables and functions for clarity

* refactor: remove unnecessary refs and simplify onClick handlers

* fix(proxy-groups): handle initial scroll position state

* feat(zed): add biome formatter configuration

* refactor(proxy): remove unused headState import and type annotations

* style(proxy): improve type imports and conditional rendering

* .

* feat(proxy): add ProxyHead component to render in global mode

* chore: ignore .zed directory

* docs: update changelog
2026-07-02 13:22:40 +00:00
oomeow c2ddb5c111 refactor: activate selected proxies (#7285)
* feat(profiles): add automatic node activation after profile switch

* refactor(use-profiles): simplify patchCurrent logic by always mutating profiles

* refactor(use-profiles): remove unused activateSelected function and related imports

* refactor: rename worker handle to activate selected task

* fix: clippy

* refactor(config): replace log statements with structured logging

* refactor(config): fix incorrect retry logic in profile activation

* feat(profiles): update proxy cache when switching profiles

* docs: update changelog with bug fixes and logic improvements

* refactor(profiles): remove unused imports and redundant cache update
2026-07-01 12:47:03 +00:00
Tunglies 9a2f4ff8fb fix: warm lazy navigation routes after startup 2026-06-30 21:34:32 +08:00
Tunglies fa712b59c9 fix: reuse preloaded verge config 2026-06-29 16:55:25 +08:00
Tunglies 520746428c fix: dedupe initial websocket subscriptions 2026-06-29 11:54:05 +08:00
wonfen 3b52fceca1 fix: DNS overrides could not be edited in advanced mode 2026-06-29 11:31:57 +08:00
Tunglies 3ce228ff7a fix: lazy load i18n sections 2026-06-29 11:11:57 +08:00
Tunglies 2442634b2a fix: lazy load non-home routes 2026-06-29 06:30:54 +08:00
Tunglies 4ec3a9bf4c fix: defer provider queries on startup 2026-06-29 06:03:51 +08:00
Tunglies 3a4cd2c361 Revert "fix: update js-yaml imports for v5"
This reverts commit 250198d547.

Revert "chore(deps): update dependency js-yaml to v5 (#7331)"

This reverts commit b44f671fc2.
2026-06-29 05:17:04 +08:00
Tunglies 250198d547 fix: update js-yaml imports for v5 2026-06-29 03:28:46 +08:00
Tunglies 55060d422a fix: include url-test groups in proxy selectors 2026-06-29 03:14:03 +08:00
Tunglies b9da0875cd refactor: optimize swr data refresh paths 2026-06-28 19:42:21 +08:00
Tunglies e71e701fd0 refactor: migrate query cache to swr 2026-06-28 19:39:15 +08:00
wonfen 294955cb8c feat: add fake-ip-range6 2026-06-28 13:08:55 +08:00
wonfen 5a96fdd9a2 fix: harden home clash-mode card against /configs read failures
Recover from controller read/switch failures on the mode card instead of
showing a bare "communication error":

- fall back to the tolerant get_clash_mode command (then runtime config)
  when the live /configs mode is unavailable,
- optimistically reflect the clicked mode and write it through to the
  getClashConfig cache so a failed refetch can't flash back the old value,
- surface patch failures via showNotice on both the home card and the
  proxies page (patchClashMode can now reject), and
- revalidate getClashMode/getRuntimeConfig on refresh-clash-config so a
  once-empty fallback can recover.
2026-06-27 15:30:20 +08:00
oomeow 1026ba88bb chore: update biome config and ignore zed settings dir (#7364)
* chore: update biome config and ignore zed settings dir

* chore: remove trailing slash from .vfox directory in .gitignore
2026-06-26 12:46:45 +00:00
Bruce Gorman a00df6c93d fix: refresh rules data when clash config is reloaded (#7299) 2026-06-22 11:12:36 +00:00