RenameCollectionNodes now reads geo info from cached egress-probe fields (country, countryCode, city, flag) on each node instead of doing per-node DNS lookups via DetectGeoWithServer.
When no cached egress data is available (probe not yet run), it falls back to name-based regex only (DetectGeo, no DNS) so the UI is never blocked. The background egress probe (triggered on source create/update) populates the cache asynchronously.
Also: runEgressProbe now stores countryCode and flag emoji from ipwho.is response. egressCacheKey and addCachedEgressInfo updated to include the new fields.
Reverted previous name-first hack on DetectGeoWithServer and DNS cache on geoip.LookupHost — no longer needed since rename doesn't call them.
Collection preview with rename: 30s -> 52ms (with cache miss, name-based fallback).
Egress probe results (IP/country/region/city/isp) were cached using the
fetcher's cache_ttl (300s / 5min). After 5 minutes the cache expired and
the node list showed empty Egress IP/Country/Region fields again.
Add a dedicated egress_cache_ttl config (default 24h) so egress data
persists long enough to be useful when re-expanding the node list.
Add _sourceAlias and _previewId to the skip list in egressCacheKey so
that nodes from source preview (with _sourceAlias) and collection
preview (without _sourceAlias, after rename) produce the same cache
key. This ensures egress info cached during source-level probe is
visible when expanding collection cards.
mihomo (Clash Meta) natively supports xhttp and all Clash transports.
Build minimal mihomo YAML config directly from the proxy node instead
of converting to sing-box JSON format.
- Add MaxMind GeoLite2-City mmdb auto-download and IP-based geo lookup
(covers all 249 countries globally, replacing limited 8-country regex)
- Add RenameOptions with 5 toggleable fields (flag/alias/country/city/index)
stored as rename_options_json on collections
- Collection rename pipeline uses DetectGeoWithServer(name, server) which
tries GeoIP lookup first, falls back to name-based regex matching
- Chinese country/city names + emoji flag prefix
- Country-city dedup: skip city when it equals country (e.g. 香港/香港)
- URI fragment encoding: url.QueryEscape -> url.PathEscape (%20 not +)
- Egress cache key excludes name field so renamed nodes still match cache
- Frontend: 5 toggle buttons in collection edit form, default all on
- Migrations: 0004 (source alias + collection rename_enabled),
0005 (collection rename_options_json)