- Introduced SelfDialMark to differentiate between self-initiated connections and others, ensuring proper routing and bypassing of DPI.
- Enhanced relay connection handling to report stalls when upstream connections become silent, improving reliability of worker relays.
- Added tests for stall reporting and self-dial mark functionality to ensure correctness.
- Updated various components to utilize the new self-dial mark and stall reporting mechanisms, including routing and proxy rules.
- Implemented a tgprobe tool for testing upstream connections with configurable parameters.
- Implemented `setattr_test.go` to test TCP port filtering behavior, ensuring sets scoped to specific TCP ports do not process packets on other ports.
- Implemented `udpgate_test.go` to validate UDP handling for targeted sets, including scenarios with QUIC filtering and IP-based targeting.
- Added various test cases to cover different configurations of UDP sets and their expected verdicts based on packet characteristics.
- Implemented the zapret tool in `tool_zapret.go`, including desynchronization modes, fooling strategies, and split position parsing.
- Added grammar definitions for zapret configurations.
- Created comprehensive tests in `tool_zapret_test.go` to validate the functionality of zapret options, ensuring all recognized options are reported and conflicts are handled correctly.
- Included tests for desync modes, fooling strategies, and the handling of UDP profiles.
- Introduced a new JSON configuration file for the zapret tool, defining various options, markers, and profiles.
- Implemented comprehensive tests for the zapret tool, covering recognized options, domain claims, desync modes, and more.
- Ensured that the tests validate the expected behavior of the zapret configurations and report any conflicts or unsupported options.
- Implemented conversion specifications in `src/convert/spec.go` with embedded JSON rules.
- Created HTTP handlers for conversion tools and analysis in `src/http/handler/convert.go`.
- Added unit tests for conversion handlers in `src/http/handler/convert_test.go`.
- Developed TypeScript API client for conversion in `src/http/ui/src/api/convert.ts`.
- Built UI component for importing tools and displaying conversion results in `src/http/ui/src/components/sets/ImportTool.tsx`.
- Removed goodIPStore and its associated tests, replacing it with iphealth.Tracker and KnownGood for better IP health tracking.
- Updated runtimeState to use iphealth.Tracker and iphealth.KnownGood.
- Modified recordDestAlive to use the new Remember method from KnownGood.
- Refactored tests to accommodate the new IP health management structure.
- Introduced new leak tests for iphealth package.
- Add goodIPStore for managing and storing good IP addresses with TTL.
- Implement methods for storing, looking up, and cleaning up good IPs.
- Create tests for goodIPStore functionality including case insensitivity and IP capping.
- Introduce ipHealthStore for monitoring the health of IP addresses with SYN detection.
- Implement probing logic to determine if IPs are alive or dead, with burst detection to suspend monitoring.
- Add tests for ipHealthStore to verify correct behavior under various conditions.
- Implement DNS response healing to filter out unreachable IPs based on health status.
- Create tests for DNS healing functionality to ensure proper address handling.
- Add RST packet building functions for both IPv4 and IPv6, with tests to validate behavior.
- Added a switch for "any domain" and "any address" to simplify configuration.
- Fixed an issue where `0.0.0.0/0` was lost in the firewall due to `ipset` limitations.
- Enhanced DNS handling to capture TCP requests and added a DNS settings section.
- Introduced a new catch-all mechanism for domains and IPs, including normalization and entry notices.
- Updated UI components to support highlighting and displaying notices for catch-all entries.
- Implemented tests for new CIDR handling logic to ensure correct expansion of zero-prefix entries.
- Refactor dnsTCPServer to support both IPv4 and IPv6 listeners.
- Add configuration options for enabling/disabling IPv4 and IPv6.
- Update connection handling to manage separate listeners for each IP family.
- Enhance error handling for listener startup failures.
- Modify writeDNSTCPMessage to accept a timeout parameter.
- Introduce tests for dual-stack functionality, ensuring proper blocking behavior for both IPv4 and IPv6.
- Update configuration defaults and validation to ensure DNS over TCP settings are correctly applied.
- Add UI components for DNS settings, allowing users to configure TCP options.
- Added cfWorkerPool for managing pooled connections to Cloudflare Workers.
- Introduced new transport plans for handling Worker connections.
- Enhanced connection dialing logic to support Worker-specific configurations.
- Implemented tests for Worker connection pooling and dialing behavior.
- Updated existing code to integrate Worker pooling into the MTProto transport layer.