[1.48.0] - 2026-05-04
- ADDED: Config backup before update — B4 now automatically saves a copy of your config file before updating (e.g.
b4.json.bak.v1.47.2), so you can restore it if needed. - ADDED: Backup reminder in update dialog — a warning in the update dialog reminds you to download a full backup from Settings → Backup before updating.
- ADDED: Watchdog — background service that monitors configured domains and automatically finds a working bypass when DPI starts blocking them. Add domains or URLs to monitor, and watchdog periodically checks connectivity. After consecutive failures, it runs a quick discovery, applies the first working config, and resumes monitoring. Multiple failed domains are healed together in a single discovery run. Domains with the same working strategy are grouped into one set. Configure intervals, retries, and cooldowns in Settings > Discovery. Live status on the new Watchdog page.
- ADDED: IP block detection — B4 can now detect when a destination IP is blocked entirely (not just by domain name). When detected, B4 immediately resets the connection so your device retries faster on a different server instead of waiting for a timeout.
- ADDED: RST injection protection — B4 can now detect and drop fake TCP RST packets injected by DPI systems to kill your connections. Enable per set in TCP settings. Uses three independent checks: TTL fingerprint mismatch, RST arriving before any server response, and multiple RSTs on the same connection.
- IMPROVED: Fake strategy settings shown only when relevant — Sequence Offset now only appears for
Past SequenceandRandom Sequencestrategies, Timestamp Decrease only for Timestamp strategy. Reduces clutter in the UI. - FIXED: Error when manual IP overlaps with GeoIP — adding an IP address manually that already exists in a
GeoIPcategory within the same set caused a firewall error. Duplicate IPs are now filtered automatically. - FIXED: Traffic routing stops working after ~1 hour —
GeoIPaddresses and static IPs were added to firewall sets with aTTLand silently expired. They are now permanent. DNS-resolved IPs are periodically refreshed before they expire.
What's Changed
- feat: implement IP block detection and improve UI settings for TCP co… by @DanielLavrushin in #172
- chore: remove swagger documentation update job from release workflow by @DanielLavrushin in #174
- feat: add watchdog functionality for domain monitoring by @DanielLavrushin in #175
- feat: implement periodic re-resolution for routing and enhance IP han… by @DanielLavrushin in #176
- feat: add TCP RST protection configuration and handling by @DanielLavrushin in #177
- Refactor code structure for improved readability and maintainability by @DanielLavrushin in #178
- Refactor code structure for improved readability and maintainability by @DanielLavrushin in #179
- Add config backup feature and update dialog warning by @DanielLavrushin in #180
Full Changelog: v1.47.2...v1.48.0