Repository navigation
v3.9.0
Release v3.9.0
feat: harden TUN/MIXED stability, fix APK config overwrite
clash-rules:
- Add configurable TUN stack (system/gvisor/mixed) with preflight check
- Add self-healing for policy routing: validate + repair on respawn
- Register fw4 include hook so clash-tun firewall rules survive fw4 reload
- Add INPUT accept rule for clash-tun (nft + iptables)
- Add ip rule pref 1000/1001 to avoid conflicts with Tailscale/other policy routing
- Disable bridge-nf-call-iptables when TPROXY active and kmod-br-netfilter loaded
- Fix ip rule regex matching for various fwmark formats (0x3, 3, 0x0003/0xffffffff)
- Use unbounded while loop in teardown to remove all duplicate ip rules
- Suppress repetitive log messages via CLASH_RULES_QUIET env
init.d/clash:
- Wait up to 30s for clash-tun interface in service_started()
- Call repair_forward_rules after tun_route_setup on respawn
hotplug.d/net/99-clash-tun:
- New hotplug script: reacts to clash-tun device add, runs tun_route_setup
settings.js:
- Add TUN Stack selector (visible only when TUN or MIXED mode selected)
- Wire tunStack into config.yaml generation
Makefile:
- Install 99-clash-tun hotplug script
- Fix APK config overwrite on OpenWrt 25: add protected_paths.d/ssclash.list
- Add preinst/postinst backup/restore for transitional APK upgrades
- Conditional install of protected_paths.d (ifdef CONFIG_USE_APK)