π¦ Assets
| Platform | Archive |
|---|---|
| Linux x86_64 | zero-linux-x86_64.tar.gz |
| macOS x86_64 | zero-darwin-x86_64.tar.gz |
| macOS aarch64 | zero-darwin-aarch64.tar.gz |
| Windows x86_64 | zero-windows-x86_64.zip |
Quick download (latest):
https://github.com/\zerodenet/zero/releases/latest/download/zero-{platform}.{ext}
π Changes
π Added (2)
- route by inbound tag
- add TransportKind and InboundTransport for transport dispatch
π Fixed (8)
- gate reality-only test and mux APIs
- account ordinary udp upstream responses
- flush stream-framed protocol responses
- restore managed relay flow reuse
- preserve socks5 udp outbound attribution
- preserve inbound tag in panel trace route
- add feature gates on establish_*_outbound match arms, split start.rs
- initialize UDP session rate limits matching TCP path
π¨ Improved (761)
- hide stream udp responder buffers
- move stream udp read buffers into protocols
- move datagram udp inbound tracking into protocols
- centralize socks5 udp associate protocol glue
- centralize datagram udp inbound relay glue
- centralize mux udp inbound relay glue
- route vless udp inbound through stream relay glue
- centralize stream udp inbound relay glue
- thin shadowsocks inbound adapter
- thin trojan hysteria2 profile adapters
- thin socks5 mieru tcp adapters
- delegate socks5 command dispatch
- delegate vless vmess inbound session dispatch
- delegate trojan mieru inbound session dispatch
- delegate socks5 udp relay classification
- wrap socks5 udp associate responses
- wrap hysteria2 udp inbound responses
- wrap shadowsocks udp inbound responses
- wrap trojan mieru udp inbound responses
- wrap stream udp inbound responses in protocols
- wrap mux udp inbound responses in protocols
- move mux pool key specs into protocols
- centralize inbound udp pipe dispatch
- group mux tcp handoff inputs
- share vmess mux tcp handoff
- share socks5 udp response writes
- share datagram udp response writes
- share mux udp response writes
- share stream udp response writes
- unify socks5 udp direct responses
- share inbound udp chain responses
- share inbound udp direct responses
- thin mieru inbound profile adapter
- thin vmess inbound profile adapter
- thin vless inbound adapter config
- thin socks5 shadowsocks config adapters
- thin vless vmess config adapters
- move vless fallback recording stream to transport
- share inbound tls async socket glue
- keep inbound udp response models protocol-owned
- send socks5 direct udp responses as client models
- submit socks5 udp dispatch as neutral request
- drop inbound udp ip response shims
- drop inbound udp sender response shims
- route inbound udp direct responses through client models
- wrap hysteria2 udp responses
- wrap trojan mieru udp responses
- wrap vless vmess udp responses
- wrap socks5 udp client responses
- narrow socks5 udp dispatch bridge
- split vmess udp inbound glue
- split mux udp inbound glue
- split hysteria2 udp inbound glue
- split stream udp inbound glue
- hide tcp outbound result variants
- centralize tcp outbound result construction
- hide mux pool key endpoints behind protocol accessors
- centralize udp association lifecycle identity
- narrow udp association identity bridge
- thin mux pool key construction
- move inbound stream wrapping into protocol
- neutralize stream udp inbound dispatch
- route inbound udp through neutral dispatch
- move inbound udp relay classification into protocol
- move inbound mux server state into protocol
- move inbound mux server state into protocol
- encapsulate packet path cache identity
- neutralize tcp outbound results
- keep inbound udp session tracking protocol-owned
- keep inbound profile materialization protocol-owned
- keep outbound password materialization protocol-owned
- keep tcp password materialization protocol-owned
- keep auth user materialization protocol-owned
- keep inbound user materialization protocol-owned
- delegate mux pool keys to protocols
- hide inbound cipher detail from proxy
- derive udp inbound protocol from dispatch parts
- keep udp dispatch tracking protocol-owned
- keep udp dispatch tracking protocol-owned
- hide udp associate dispatch view details
- classify inbound sessions in protocol
- classify trojan and mieru inbound sessions
- classify inbound transport sessions in protocol
- classify inbound mux opened streams
- shrink inbound mux task models
- route custom tcp metering through runtime
- centralize udp response attribution
- centralize upstream udp response accounting
- use structured socks5 upstream udp responses
- keep udp response decoding in protocol
- use inbound udp response accounting
- centralize inbound udp response accounting
- expose packet-path carrier codec
- move http redirect selection to runtime
- narrow inbound profile config adapters
- move vless vmess inbound user config helpers
- move inbound auth config helper to protocol
- hide inbound mux identity context
- hide inbound udp session response gating
- hide inbound udp response session lookup
- hide inbound mux action state
- hide inbound mux stream state
- hide inbound mux downlink handling
- hide managed udp codec sharing
- hide inbound udp dispatch recording
- move mux tcp relays into protocols
- move mux stream tables into protocols
- hide encoded upstream udp response send
- return inbound udp response length
- hide inbound udp session recording
- hide inbound udp session recording
- hide inbound mux downlink channel
- move inbound mux writer pump to protocol
- store managed udp resumes directly
- build inbound tls acceptor in adapter
- build inbound tls acceptor in adapter
- build inbound tls acceptor in adapter
- hide tcp target from proxy adapter
- move mux transport identity into protocol
- move mux transport identity into protocol
- use neutral quic profile in connector
- move tls profile materialization out of adapters
- keep xhttp udp relay mode in transport
- borrow stream udp dispatch parts
- borrow vless vmess udp dispatch parts
- delegate xhttp inbound mode selection
- hide inbound udp session keys
- hide stream udp dispatch fields
- hide inbound udp dispatch fields
- hide vless vmess udp dispatch fields
- keep mux inbound sessions protocol-owned
- use neutral packet path datagram endpoint
- keep packet path datagram key opaque
- wrap mux pool connections in protocol key
- keep pool identities protocol-owned
- hide udp response model from adapter runtime
- name redirect selection as proxy glue
- consume inbound udp dispatch parts directly
- keep inbound udp dispatch parts protocol-owned
- keep mux api under protocol module
- keep mux api under protocol module
- keep udp associate decisions protocol-owned
- keep mux frame helpers off root api
- keep wire helpers off root api
- keep data phase internals off root api
- keep shared helpers off root api
- delegate hysteria2 connect responses
- centralize stack socket address conversion
- use platform socks5 udp relay address conversion
- delegate vmess mux payload framing
- delegate vless mux payload framing
- centralize inbound source address conversion
- use neutral socks5 udp response targets
- share socks5 inbound auth bridge
- use socks5 relay socket address
- delegate udp direct response endpoints
- delegate inbound udp sender targets
- delegate stream udp response targets
- route vless mux writer through facade
- delegate mux udp payload decode
- use vmess inbound mux session facade
- use vless inbound mux session facade
- delegate socks5 udp associate reply
- delegate http connect inbound replies
- delegate socks5 inbound replies
- use socks5 tcp outbound profile
- use mieru tcp outbound profile
- use trojan tcp outbound profile
- use hysteria2 outbound profile
- delegate hysteria2 datagram inbound reads
- delegate vmess udp inbound reads
- delegate vless udp inbound reads
- delegate mieru udp inbound reads
- thin hysteria2 packet path codec bridge
- thin shadowsocks packet path codec bridge
- consume trojan udp dispatch view
- consume hysteria2 udp dispatch view
- consume mieru udp dispatch view
- delegate socks5 udp dispatch classification
- normalize inbound profile config bridges
- thin mieru inbound profile bridge
- thin vless reality inbound profile
- thin vless vmess inbound profiles
- thin socks5 inbound auth adapters
- route vmess mux tcp through pipe
- delegate inbound udp dispatch parts
- delegate vless vmess udp dispatch decode
- trim hysteria2 inbound request config
- pass vless inbound transport config through adapter
- move vless inbound profile to protocol
- move socks5 inbound auth to protocol
- move vmess inbound profile to protocol
- move mieru inbound auth profile to protocol
- move trojan inbound auth profile to protocol
- move vless reality inbound profile to protocol
- move vless inbound user store to protocol
- move socks5 udp direct response target to protocol
- move hysteria2 inbound quic auth to protocol
- move shadowsocks udp client routing to protocol session
- move vless inbound mux actions to protocol
- move vmess inbound mux actions to protocol
- move vmess tcp session setup to protocol config
- move vmess tcp mux identity to protocol
- move vless flow classification to protocol
- move hysteria2 auth handshake to protocol
- move socks5 udp association identity to protocol
- move vless deferred stream wrapping to protocol
- move shadowsocks tcp stream wrapping to protocol
- move inbound mux session mapping to protocols
- share udp response accounting in remaining inbounds
- centralize inbound udp response accounting
- move inbound auth identity to protocols
- move tcp mux identity build to protocols
- move vless vmess mux identity build to protocols
- move shadowsocks inbound udp response send to protocol
- trim hysteria2 inbound udp dispatch glue
- route mieru inbound udp through udp pipe
- wrap vmess inbound mux server in protocol session
- wrap vless inbound mux server in protocol session
- move socks5 udp dns request classification to protocol
- move hysteria2 inbound stream framing to protocol
- move mieru tcp tunnel logic to protocol
- move trojan tcp target construction to protocol
- move socks5 tcp auth target construction to protocol
- move http connect redirect framing to protocol
- move mieru udp target mapping to protocol
- move mieru tunneled socks5 accept to protocol
- move vless vmess udp peer targets to protocols
- move inbound udp peer targets to protocols
- move shadowsocks udp response framing to protocol
- move socks5 udp response framing to protocol
- move mieru inbound stream state to protocol
- keep vmess mux frame queueing protocol-owned
- remove protocol outbound facade
- move h2 and vless outbound glue into adapters
- move trojan outbound glue into adapter
- group vmess tcp connect parameters
- move vmess outbound glue into adapter
- move shadowsocks outbound glue into adapter
- tighten registry layout and socks5 outbound glue
- hide shadowsocks inbound response target
- remove socks5 udp root export
- confine protocol udp APIs to modules
- move shadowsocks udp APIs under module
- move socks5 udp APIs under module
- move trojan udp APIs under module
- move mieru udp APIs under module
- move stream protocol udp APIs under modules
- narrow protocol root exports
- remove packet path runtime carriers
- hide packet path build getters
- consume managed connector flow identity
- consume inbound upstream response parts
- consume vless inbound response parts
- hide socks5 inbound packet lookups
- consume socks5 association parts
- hide socks5 association identity
- consume protocol flow build parts
- consume shadowsocks datagram codecs
- hide stream connector flow builds
- hide hysteria2 outbound flow build
- hide managed flow build methods
- hide outbound codec build details
- move packet path builds behind protocol helpers
- snapshot socks5 association targets
- snapshot socks5 association identity
- hide socks5 packet path target parts
- unify hysteria2 profile connection setup
- hide shadowsocks socket flow codec build
- generic managed connector flow builds
- generic packet path carrier descriptors
- generic packet path datagram builds
- hide socks5 packet path carrier target
- hide hysteria2 packet path build parts
- own packet path datagram sources
- bundle socks5 shadowsocks dispatch facts
- bundle hysteria2 trojan dispatch facts
- bundle vless vmess dispatch facts
- move shadowsocks inbound session map
- bundle shadowsocks inbound response facts
- bundle socks5 inbound packet facts
- delegate vmess mux frame events
- delegate vless mux server frames
- bundle vmess mux frame encoding
- bundle socks5 association send facts
- bundle shadowsocks datagram source facts
- bundle packet path carrier descriptors
- bundle datagram connector flow facts
- bundle managed connector flow facts
- bundle packet path carrier details
- decode upstream responses behind handlers
- delegate inbound udp sessions to protocols
- bundle outbound profile specs
- bundle socks5 flow target
- bundle stream flow identities
- bundle managed flow identities
- return packet path protocol bundles
- bundle packet path datagram source
- separate shadowsocks datagram key
- separate packet path carrier keys
- wrap vless mux open identity
- wrap vmess mux open identity
- move vmess mux cache identity
- move vless vmess flow config builders
- move stream flow resume builders
- move flow resume builders
- move packet path spec builders
- collapse stream packet managers
- hide socks5 vmess payload fields
- hide protocol packet fields
- hide vless vmess packet fields
- hide inbound udp request payload
- consume vless vmess udp requests
- consume udp request models
- hide udp response bridge fields
- hide inbound udp packet fields
- hide udp packet model
- hide raw udp crypto helpers
- hide raw udp stream helpers
- hide vless vmess raw helpers
- hide raw udp helpers
- hide raw udp helpers
- hide raw udp helpers
- hide raw udp helpers
- hide raw udp helpers
- stop reexporting raw udp helpers
- stop reexporting raw udp helpers
- move vless vmess identity config parsing
- move tcp cipher config into protocol
- hide inbound datagram helpers
- wrap inbound udp framing in protocol session
- wrap inbound udp framing in protocol session
- wrap inbound udp framing in protocol session
- wrap packet path config in protocol spec
- move packet path specs into protocols
- wrap udp association state in protocol crate
- hide mux flow startup details in protocols
- move udp association target into protocol crate
- split stream connector glue from trojan mieru roots
- split stream managed models and establish glue
- keep stream flow config parsing out of roots
- split stream flow glue from vless vmess roots
- let dispatch build stream packet flow results
- rename packet-path configs to flow configs
- centralize managed flow start glue
- remove public packet-path config products
- hide packet-path internals behind protocol configs
- hide shadowsocks packet-path internals behind config helpers
- move socks5 associate framing behind protocol codec
- route trojan tls opening through transport facade
- route vmess transport through transport builder
- lift vmess stream packet manager into runtime glue
- lift vless stream packet manager into runtime glue
- lift trojan stream manager into runtime glue
- lift mieru stream manager into runtime glue
- lift shadowsocks datagram manager into runtime glue
- lift hysteria2 datagram manager into runtime glue
- neutralize managed udp bridge names
- rename protocol udp state to registered handlers
- thin socks5 udp adapter root
- move stream adapter flow glue into submodules
- thin hysteria2 udp adapter root
- thin shadowsocks udp adapter root
- keep managed cache keys private
- split managed flow runtime surface
- hide datagram cache keys from shadowsocks
- hide managed cache keys from senders
- wrap managed protocol connections
- centralize datagram connection bridge
- move datagram response waiters into runtime
- centralize datagram cache insertion
- centralize managed relay cache sends
- centralize managed stream cache sends
- remove unused managed cache lookup
- reuse managed stream connections neutrally
- centralize managed connection reuse
- hide shadowsocks datagram bridge state
- isolate socks5 association establishment
- cache shadowsocks datagram flows neutrally
- share neutral stream connection cache
- cache managed flows behind neutral keys
- hide socks5 association handle details
- own socks5 association lifecycle in runtime
- hide shadowsocks datagram connection details
- cache h2 flow behind neutral connection
- cache stream flows behind neutral connection
- store stream connections behind neutral trait
- reuse tuple response bridge
- hide flow connection construction
- hide udp flow start helper
- hide udp initial packet encoding
- split vless vmess manager glue
- centralize socks5 udp response bridge
- hide inbound udp session codec
- hide inbound udp session state
- hide inbound udp session state
- hide inbound udp session state
- hide inbound udp request decoding
- hide inbound auth profile
- hide inbound profile details
- wrap UDP flow sessions
- hide UDP flow sessions
- hide UDP flow store
- hide UDP session stores
- drop proxy stream wrappers
- use managed UDP response bridge
- share managed UDP response bridge
- hide UDP cache key internals
- centralize UDP connection setup in outbound boundary
- route flow establishment through protocol configs
- move UDP TLS profile expansion to outbound boundary
- keep UDP profile auth in protocol crate
- move VLESS and VMess flow config into protocols
- bundle UDP flow config in protocol crate
- bundle UDP flow resume config in protocol crate
- bundle UDP flow resume config in protocol crate
- bundle UDP packet path profile in protocol crate
- hide UDP relay construction in protocol crate
- move UDP association config into protocol crate
- bundle UDP packet path state in protocol crate
- move UDP flow startup into protocol crate
- move UDP flow startup into protocol crate
- move UDP flow startup into protocol crate
- move UDP flow startup into protocol crate
- move UDP flow startup into protocol crate
- group UDP flow runtime state
- move managed start dispatch into managed state
- delegate existing managed forwarding to managed state
- keep managed flow snapshots in managed state
- keep stream senders in managed state
- rename cached senders to managed stream senders
- merge cached flows into managed stream path
- route cached flow forwarding through protocol state
- track cached flows by managed ref
- keep cached flow sender in protocol state
- keep stream flow stores in protocols
- keep udp flow store in protocol
- cache udp flow sessions in protocol
- cache udp flow sessions in protocol
- cache udp flow sessions in protocol
- cache udp flow sessions in protocol
- cache udp flow sessions in protocol
- keep cache key builders protocol private
- hide udp packet path config fields
- hide udp packet path config fields
- use protocol resume cache keys for relay flows
- route inbound udp through protocol codec
- move inbound udp datagram sends to protocol
- move inbound udp response writes to protocol
- move inbound udp response framing to protocol
- move udp associate response framing to protocol
- move inbound udp response writes to protocol
- move inbound udp response writes to protocol
- move inbound udp response mode to protocol
- move mux connection pump to protocol
- move mux stream pumps to protocol
- move hysteria2 initial packet to protocol
- move vless vmess initial packets to protocols
- thin shadowsocks manager send path
- hide trojan flow channels in protocol
- move hysteria2 flow pump to protocol
- move mieru stream pump to protocol
- move trojan stream pump to protocol
- move stream flow pumps to protocols
- replace protocol adapter boundary
- remove vmess inbound udp wrappers
- remove vless inbound udp wrappers
- remove shadowsocks peer wrapper
- remove trojan peer wrapper
- remove mieru peer wrapper
- remove hysteria2 peer wrapper
- move protocol state glue into runtime
- move managed handler state into runtime
- move managed flow requests into runtime
- move managed flow resume into runtime
- move socks5 udp associate glue
- move mux pools into adapters
- register socks5 upstream handler
- move vmess manager into adapter
- move vless manager into adapter
- use protocol-owned datagram cache keys
- move stream managers into adapters
- move datagram managers into adapters
- register managed handlers through adapters
- move cached manager starts to adapters
- move cached starts into flow bridges
- remove cached start enum
- track cached flows in session state
- move cached start dispatch out of state
- unify cached flow dispatch
- keep cached flows out of managed state
- register cached flow handlers
- collect managed handlers at register boundary
- dispatch managed flows through handlers
- hide protocol flow resume variants
- keep vless vmess flow io inside pump tasks
- move hysteria2 flow io behind protocol api
- hide shadowsocks flow cache keys behind protocol api
- hide mieru flow cache keys behind protocol api
- hide hysteria2 flow cache keys behind protocol api
- hide trojan flow cache keys behind protocol api
- move vless vmess flow io behind protocol api
- split managed protocol state by flow family
- send trojan flow packets through protocol api
- move h2 flow encoding behind protocol api
- move mieru flow decode behind protocol api
- keep managed flow models internal
- keep upstream poll detail out of udp root
- neutralize protocol upstream state access
- neutralize upstream association lifecycle
- hide socks5 upstream receive helper
- hide socks5 send request details
- keep manager request models private
- confine resume variant matching
- hide resume variants from adapters
- hide socks5 resume check behind runtime
- delegate managed resume recognition to managers
- hide manager request models from managed executor
- centralize managed flow execution
- hide protocol managers behind managed state
- move stream packet framing behind protocol helpers
- store neutral packets in protocol flow channels
- collapse protocol flow facades into managed bridge
- move vless vmess flow facades to protocol runtime
- move protocol flow facades out of dispatch
- hide protocol snapshots behind managed refs
- own packet path manager in dispatch
- move packet path glue into runtime flow
- keep udp flow tasks in proxy glue
- keep vless vmess flow tasks in proxy glue
- keep flow tasks in proxy glue
- move udp flow driver into protocol crate
- move udp flow driver into protocol crate
- move vless vmess flow models out of generic udp
- move socks5 relay start from state root
- move stream resume dispatch from state root
- move datagram resume dispatch from state root
- keep vless vmess requests out of dispatch
- keep udp packet channel neutral
- hide udp flow packet conversion
- hide udp flow packet construction
- hide udp flow packet codec
- remove protocol dependency from transport
- delegate quic handshake framing
- move udp flow pump out of transport
- keep udp stream glue out of transport
- remove udp stream pump from transport
- make shadowsocks udp socket codec driven
- send udp packets neutrally
- route udp stream packets neutrally
- own udp flow packet construction
- own udp association handle
- own udp relay handshake
- own packet-path response decoding
- own udp flow runtime in protocol
- own udp flow runtime in protocol
- own vless udp flow stream
- own udp packet path carriers
- route managed udp through neutral state facade
- own shadowsocks udp socket flow
- own mieru udp flow stream
- own trojan udp flow stream
- own trojan udp tls opening
- own hysteria2 udp flow stream
- delegate vmess mux transport opening
- extract vless udp transport opening
- own vless udp flow io
- own vmess udp flow io
- extract vmess udp transport opening
- neutralize vless vmess udp responses
- carry vless vmess udp identities
- own vless vmess udp flow helpers
- own vless vmess udp identity parsing
- unify managed udp relay starts
- unify managed udp stream starts
- unify managed udp datagram start
- hide hysteria2 udp peer details
- hide mieru udp peer details
- hide trojan udp peer details
- use shadowsocks udp packet model
- use hysteria2 udp packet model
- move trojan udp stream io
- move mieru udp stream io
- hide udp packet operations
- use protocol udp packet models
- type packet path snapshot lookup
- hide shadowsocks packet path helpers
- keep datagram udp keys protocol-owned
- keep udp peer keys protocol-owned
- wrap inbound udp helpers in protocols
- route inbound udp framing through codecs
- wrap udp flow codecs in protocols
- move vless udp mux framing out of adapter
- move socks5 packet path identity into protocol
- pass mieru udp resume through state
- pass trojan udp resume through state
- move udp packet path factories into protocols
- delegate ss h2 udp codecs to resumes
- move mieru udp flow io into protocol
- move trojan udp flow io into protocol
- wrap socks5 udp relay resume
- keep udp flow resume opaque to dispatch
- use unified udp flow resume in dispatch
- wrap socks5 udp flow resume
- unify udp flow resume snapshot
- opaque trojan udp snapshot
- opaque hysteria2 udp snapshot
- opaque mieru udp snapshot
- opaque shadowsocks udp snapshot
- inject shadowsocks udp flow codec
- inject mieru udp flow codec
- inject hysteria2 udp flow codec
- gate quic packet-path by transport
- ungate packet-path dispatch
- inject quic packet-path connection
- move UDP peer models out of packet-path traits
- rename packet-path carriers by transport
- derive packet-path flow identity directly
- neutralize packet-path flow snapshot
- inject hysteria2 packet-path codec
- use codec-backed packet-path carrier
- route packet-path carrier builders
- bind packet-path flow parts
- neutralize packet-path snapshot helpers
- split packet-path flow snapshot
- split packet-path datagram descriptor
- neutralize packet-path carrier snapshot
- use opaque packet-path carrier keys
- move socks5 udp cache identity
- move hysteria2 udp cache identity
- move shadowsocks udp cache identity
- use vmess inbound udp helpers
- use vless inbound udp helpers
- use shadowsocks packet-path flow helpers
- use hysteria2 packet-path flow helpers
- use vless mux udp flow helper
- use vmess udp flow helpers
- use vless udp flow helpers
- use hysteria2 inbound udp helpers
- use trojan inbound udp helpers
- use mieru inbound udp helpers
- use trojan udp flow helpers
- use hysteria2 udp flow helpers
- use mieru udp flow helpers
- use shadowsocks udp flow helpers
- delegate vmess tcp outbound setup
- use vmess inbound mux reader helper
- use vmess mux frame reader helper
- delegate vmess mux connection setup
- use vmess mux stream helper
- delegate vless mux crypto setup
- use vless mux frame helpers
- delegate vmess udp stream setup
- delegate vless udp tunnel setup
- use socks5 response helpers in inbounds
- decode socks5 packet path responses via helper
- use socks5 udp associate helpers
- hide shadowsocks packet path codec
- reuse shadowsocks packet path helpers
- reuse vless udp adapter packet helper
- delegate trojan udp tunnel setup
- reuse vless vmess udp packet helpers
- reuse hysteria2 packet path datagram helpers
- reuse shadowsocks udp datagram codec
- reuse hysteria2 udp datagram codec
- hide trojan udp packet framing
- reuse mieru udp packet framing
- delegate mieru udp packet framing
- delegate trojan udp packet framing
- delegate vless udp packet framing
- delegate vmess udp payload parsing
- delegate vmess udp response encoding
- reuse packet path snapshot builders
- centralize udp flow snapshots
- delegate udp forward snapshots
- narrow packet path carrier exports
- narrow udp packet path exports
- source packet path datagram keys
- source packet path flow snapshots
- source packet path datagram codecs
- narrow udp dispatch facade exports
- normalize tcp outbound relay streams
- separate udp packet path adapter capability
- separate udp flow adapter capability
- separate inbound adapter capability
- separate tcp adapter capability
- separate adapter support capability
- split adapter dispatch contexts
- let udp dispatch describe flow snapshots
- route udp adapters through dispatch facades
- route hysteria2 udp through dispatch facade
- hide udp datagram source construction
- centralize udp packet path snapshots
- centralize udp packet path cache keys
- keep socks5 udp runtime in protocol state
- move socks5 relay snapshot behind protocol state
- move managed udp flow handles
- isolate runtime udp flow snapshots
- split protocol adapter capability surface
- centralize protocol registration boundary
- enforce adapter-owned runtime boundaries
- split protocol adapter registry facades
- keep outbound helpers crate-private
- remove direct outbound facade
- make transport facade explicit
- make protocol inbound imports explicit
- make udp dispatch imports explicit
- make adapter imports explicit
- split shadowsocks inbound udp relay
- move hysteria2 inbound config parsing to adapter
- move vmess inbound config parsing to adapter
- move trojan inbound config parsing to adapter
- move shadowsocks inbound config parsing to adapter
- move mieru inbound config parsing to adapter
- move direct inbound config parsing to adapter
- route leaf runtime facts through adapters
- trim vless tcp connect warning
- trim vmess tcp connect warning
- trim trojan tcp connect warning
- trim packet path snapshot warning
- trim trojan udp flow warnings
- trim mieru udp flow warnings
- continue runtime module split
- trim hysteria2 udp flow warnings
- trim socks5 udp associate warnings
- trim boundary cleanup warnings
- move registry construction
- split udp flow outbound snapshot
- move udp packet path snapshots
- narrow udp protocol state visibility
- delegate udp protocol forwarding
- delegate udp packet path send
- delegate cached udp protocol flows
- move udp protocol flow helpers
- group udp protocol managers
- rename generic udp flow state
- move socks5 udp associate out of runtime
- move udp protocol managers out of runtime
- isolate protocol runtime state
- slim protocol transport ADTs
- clean socks5 and vmess clippy warnings
- compact vless transport options
- compact protocol call parameters
- compact mux pool parameters
- split udp protocol flow wrappers
- slim udp dispatch and gate boundaries
- split udp dispatch lifecycle
- freeze adapter dispatch boundaries
- enforce runtime boundaries
- extract socks5 udp runtime
- split adapters and tighten protocol boundaries
- ProtocolAdapter trait dispatch for UDP relay final hop
- ProtocolAdapter trait dispatch for inbound spawn
- ProtocolAdapter trait dispatch for UDP outbound
- ProtocolAdapter trait dispatch for TCP outbound
- split vmess.rs (1006 lines) into 5 domain submodules
- split vless.rs (1355 lines) into 7 domain submodules
- remove unused super::* imports, fix api.rs ListenConfig import
- extract per-protocol establish_*_outbound methods from dispatch match
- split model.rs into 8 domain modules
- converge bind dispatch to single ProtocolAdapter path
π§ Maintenance (27)
- align socks5 udp upstream accounting
- lock TODO boundary completion invariants
- align runtime boundary guidance
- lock protocol-owned config parsing boundary
- lock managed datagram cache-key boundary
- lock tcp relay chain inventory boundary
- lock inbound glue dispatch boundaries
- guard inbound protocol glue boundaries
- guard stream framed response flushing
- guard inbound protocol packet model leaks
- avoid h2 boundary clippy warning
- prevent cached handler downcasts
- align packet path docs with capability split
- clean boundary capability lint
- lock adapter boundary structure
- keep inventory protocol neutral
- harden protocol crate dependencies
- confine outbound config matching
- pin mixed adapter boundary
- forbid production todo markers
- pin block outbound boundary
- make registry tests imports explicit
- run full workspace tests
- clean low-risk clippy warnings
- clean mechanical clippy warnings
- enforce architecture boundaries
- replace hand-rolled date math with time crate, rewrite AGENTS.md
π Documentation (8)
- tighten protocol response ownership boundary
- record inbound udp boundary convergence
- align boundary architecture docs
- clarify nested policy selection
- document protocol udp module boundary
- update inbound udp helper boundary
- document proxy boundary rules
- reflect ProtocolAdapter trait dispatch boundaries
π€ auto-generated by GitHub Actions