Skip to content

⚡ ClashFest v0.7.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 19:29
· 61 commits to feat/init-clashfest since this release
38692ed

✨ Highlights

  • 🗂️ Profiles redesign — profiles now live in a dedicated tab with collapsible proxy groups for faster navigation.
  • 🧾 Per-profile config viewer — inspect a subscription's processed config.yaml read-only with YAML syntax highlighting, copy, share, or download it. Works offline and does not require VPN to be running.
  • 🔗 Simpler proxy chain — build chains with two searchable pickers: First hop → Exit. The Exit is the IP you show online.
  • 💾 Explicit chain actions — choose between Save chain and Use now (Global), with an optional YAML preview before applying changes.
  • 🔄 Reworked update flow — manual update checks now show an in-app result instead of a silent notification.
  • 🏠 Better update visibility — the Home screen now surfaces when a new update is available.
  • ⚙️ About & updates — About and update management are now merged into a single place.

🗂️ Profiles

Dedicated Profiles tab

Profiles have moved out of the old mixed flow and into their own dedicated tab.

Proxy groups are now displayed as collapsible accordion sections, making large subscriptions easier to scan and navigate without losing context.

Processed config viewer

Each profile can now show its processed config.yaml directly inside the app.

The viewer is read-only and supports:

  • YAML syntax highlighting
  • copy
  • share / download
  • offline access
  • usage without VPN

This makes it easier to debug what ClashFest actually generated after importing or refreshing a subscription.


🔗 Proxy Chain

The proxy-chain setup flow has been simplified around two clear choices:

  1. First hop — the first proxy used in the chain
  2. Exit — the final proxy, and the IP you expose online

Both selectors are searchable, so large proxy lists are easier to work with.

The action model is now explicit:

  • Save chain stores the selected chain for later
  • Use now (Global) immediately applies it to Global mode

An optional YAML preview is available before applying the generated chain.


🔄 Updates & About

Manual Check for updates now returns a visible in-app result instead of relying on a silent notification.

The About screen has been merged into About & updates, keeping version info and update actions in one place.

The Home screen now also shows when an update is available, so releases are harder to miss.


🛠️ Improvements & Fixes

Routing rules

The Routing Rules screen has been simplified.

The low-value Add rules UI was removed, including:

  • presets
  • manual rule creation
  • online rule creation

The screen now focuses on the actions that are currently useful:

  • view rules
  • toggle rules
  • delete rules

This release also fixes routing-rules UI behavior and screen-header alignment.

Branding

Fixed an accent-color recreate loop that could cause unnecessary UI recreation.

Brand refresh handling was also corrected for cases where header updates stop arriving.

Performance

Removed an N+1 profile-query pattern, reducing unnecessary database work and making profile-related screens more efficient.


🛡️ Stability & Security

Mihomo core update

The bundled Mihomo core engine has been updated to v1.19.26.

JNI hardening

The JNI boundary is now protected with recover().

A panic inside the native bridge should no longer terminate the whole app with SIGABRT.

Safer deep-link config installation

Installing a config from a deep link now requires an explicit confirmation prompt.

This reduces the chance of accidentally installing a config from an external source.

Port-handling audit fixes

This release also includes port-handling and related security audit fixes.


🧪 Under the Hood

This release includes a large unit-test backfill across several modules:

  • common
  • service
  • core
  • network

Additional code-health cleanup includes:

  • removed dead flags
  • removed unused strings
  • backfilled Russian localization
  • backfilled Chinese (zh) localization

What's Changed

  • Chore/core 1.19.26 by @Nemu-x in #39
  • Fix/audit service bug1 sec2 by @Nemu-x in #40
  • fix(app): harden external VPN control + fix hidden-icon startup crash (SEC-3, BUG-3/4/5) by @Nemu-x in #41
  • docs(agents): actualize AGENTS.md (geo allowlist, tun0 gate, external control, JDK 21) [DOC-1, DOC-2] by @Nemu-x in #42
  • fix(security): strip global proxy ports in Strict to close cross-UID listener leak (SEC-1) by @Nemu-x in #43
  • fix(app): deeplink url-only + scope cleanup + redact brand-logo URL logs [DL-1, Q-1, LOG-1] by @Nemu-x in #44
  • chore(core): recover() at the JNI boundary so a bridge panic can't SIGABRT (BUG-2) by @Nemu-x in #45
  • i18n(ru): backfill missing design strings [I18N-R2] by @Nemu-x in #46
  • i18n(zh): backfill missing design strings [I18N-R2] by @Nemu-x in #47
  • fix(design): rework Routing Rules screen header, compact controls, AND-rule rendering by @Nemu-x in #49
  • feat(design): unify screen headers to Material 3 large-header style by @Nemu-x in #50
  • feat(rules): remove rule-adding UI, make Routing Rules read-only by @Nemu-x in #51
  • feat(profiles): clean single-header Manage profiles, flat in-flow layout by @Nemu-x in #52
  • feat(profiles): full manager in Profiles tab + collapsible proxy groups by @Nemu-x in #53
  • chore(rules): remove dead add-rule sheet + orphaned strings by @Nemu-x in #54
  • feat(profiles): read-only config.yaml viewer + trim profile menu by @Nemu-x in #55
  • test(common): unit tests for BrandValidation + LogRedaction by @Nemu-x in #56
  • test(service): unit tests for ProxyHardener, ProxyPropertyGuard, ProxyProvidersUi by @Nemu-x in #57
  • test(core): unit tests for Traffic formatting/scaling by @Nemu-x in #58
  • test(net): unit tests for HttpTextFetcher + BrandManifestParser by @Nemu-x in #59
  • fix(security): confirm install-config deeplink before creating a profile by @Nemu-x in #60
  • Fix/brand accent recreate loop by @Nemu-x in #61
  • chore(branding): remove dead hideStats/hideLogs operator flags by @Nemu-x in #62
  • perf(profiles): fix N+1 queries when listing profiles by @Nemu-x in #63
  • chore(code-health): drop unused ping var and url parameter by @Nemu-x in #65
  • test(service): unit tests for RuntimeSocksAuth session hardening by @Nemu-x in #66
  • feat(updates): in-app manual update check + About & updates by @Nemu-x in #67
  • fix(proxy-chain): flip chain direction so exit = last field by @Nemu-x in #68

Full Changelog: v0.6.1...v0.7.0