Detect IPv6 availability at startup using UDP probe. When IPv6 is not
available: override prefer_ipv6 to false, skip IPv6 DC pings, pass empty
ME v6 proxy map, skip IPv6 coverage checks in health monitor, and skip
IPv6 fallback in upstream health checks. This eliminates useless
connection attempts with timeouts on IPv6-less hosts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add h2 0.4.13 dependency
- Add httpdate 1.0.3 dependency
- Update hyper to include h2 and httpdate features
- Update tokio-util with additional futures and hashbrown dependencies
Rewrite the system prompt for production Rust codebase assistance.
Key changes:
- Add Priority Resolution (Section 0) implementing "Boy Scout Rule" with
explicit scope control: coordinated style fixes are always in scope,
architectural changes require explicit approval
- Add role definition as senior Rust systems engineer with strict code
review responsibilities
- Rewrite negative constraints ("DO NOT") as positive instructions
throughout all sections for better model adherence
- Add structured decision process for complex changes (Section 8):
clarify → assess → propose → implement → verify
- Add context awareness rules (Section 9) for partial code handling
- Add mandatory response format (Section 10) with two-section structure:
Reasoning (Russian) and Changes (English code)
- Add language policy: code/comments/commits in English,
reasoning in Russian
- Add out-of-scope observations reporting mechanism — model reports
issues it finds but is not allowed to fix
- Add splitting protocol for responses exceeding output limits
- Add file size thresholds for full-file vs contextual-diff responses
(200 lines boundary)
- Preserve permission for todo!() and unimplemented!() as idiomatic
Rust markers
- Preserve all existing rules: file size limits, formatting preservation,
warning/dead-code protection, architectural integrity, git discipline
Add new 'announce' field to ListenerConfig that accepts both IP addresses
and hostnames for proxy link generation. The old 'announce_ip' field is
deprecated but still supported via automatic migration.
Changes:
- Add 'announce: Option<String>' field to ListenerConfig
- Add migration logic: announce_ip → announce if announce not set
- Update main.rs to use announce field for link generation
- Support both hostnames (e.g., 'proxy.example.com') and IPs
Backward compatible: existing configs using announce_ip continue to work.