Breaking Changes
- Auth API: Remove the GET
/api/v1/auth/logoutendpoint; API clients must use POST to log out. (c834e08) - Build: Replace root Makefile workflows with Shadowtree recipes for builds, tests, code generation, documentation, and maintenance. (75bbb43)
- Build/Benchmark: Replace the benchmark shell scripts with the typed Shadowtree benchmark recipe. (db6b04c)
Bug Fixes
- Agent/Proxy: Validate modern agent proxy headers while retaining legacy fallback, bound the agent reverse-proxy cache, and roll back partial routes when setup is canceled. (3e6b564)
- Entrypoint: Normalize host parsing for route lookup, wildcard matching, and short links so port-bearing IPv6 hosts and exact FQDN routes resolve correctly. (40bb20c)
- Goutils/Reverse Proxy: Preserve configured targets and replay recreatable request bodies when reverse proxies retry after a scheme mismatch. (yusing/goutils@129c221, yusing/goutils@cdc35dd)
- MaxMind: Start periodic MaxMind database updates after a successful local database load. (8270004)
- Agent/Health Checks: Honor context deadlines during UDP DTLS health-check handshakes. (16f2718)
- Autocert: Skip renewal scheduling for local and pseudo certificate providers based on their configured provider type. (58fdec4)
- ACL: Parse IPv6 IP and CIDR ACL matchers correctly while rejecting malformed timezone and country matchers. (ab13451)
- Agent Setup: Clean up registered agents, providers, and started routes when agent verification or configuration persistence fails. (756a840)
- Idlewatcher: Keep the active provider and dependency list in place when an idlewatcher reload fails. (6bb1788)
- Configuration Reload: Continue receiving watcher events while configuration reload flushing is in progress. (9eeac4e)
- Notifications: Keep the previous notification dispatcher active after a failed reload and prevent notification enqueue races during shutdown. (d6bad5d)
- Stream Routes: Close rejected TCP clients promptly and evict closed UDP sessions from stream route tracking. (6da33e7)
- File API: Reject file-validation requests with missing or unsupported
typevalues with HTTP 400. (a41e54e)
Improvements
- Build: Update container builds and Go module toolchains to Go 1.26.5. (b5a16c5)
Security
- WebUI/Logs: Escape HTML in ANSI-rendered error and autocert renewal logs to prevent log content from being injected into the WebUI. (yusing/godoxy-webui@871fc3e)
New Features
- Goutils/Synk: Track active pooled-buffer capacity in pprof pool statistics and remove stale entries after garbage collection. (yusing/goutils@c91ae6e)
Full Changelog
- f723af7 chore(deps): update goutils submodule
- d44ea67 fix(shadowtree): run targeted package tests
- 5157e9a refactor(shadowtree): consolidate build configuration
- 0c8f16a fix(shadowtree): correct variable expansion
- b5a16c5 chore(build): bump Go toolchain to 1.26.5
- 04a574f chore(deps): bump Go module dependencies
- 2fdbf84 fix(build): align Shadowtree module configuration
- 5a28b76 fixup! fix(proxy): harden route and agent proxy handling
- 3e6b564 fix(proxy): harden route and agent proxy handling
- b0421bd chore(deps): update goutils submodule
- 8270004 fix(maxmind): always start update scheduler
- 16f2718 fix(stream): honor UDP healthcheck context deadline
- 58fdec4 fix(autocert): use configured provider for renewal skip
- a41e54e fix(file): enforce validate file type binding
- ab13451 fix(acl): parse IPv6 matcher rules
- 756a840 fix(agent): clean up verified agents on setup failures
- 6bb1788 fix(idlewatcher): rebuild reload deps
- d6abde0 chore(deps): update webui submodule
- 9eeac4e fix(watcher): preserve reload events
- 0be8e24 fix(rules-cheatsheet-gen): collect mutation targets before building command docs
- 2cb764e chore(deps): update webui submodule
- d6bad5d fix(notif): publish dispatchers after reload commit
- 3dcf8fb fix(dnsproviders): use local goutils module
- 6da33e7 fix(stream): close rejected tcp clients and evict closed udp sessions
- 40bb20c fix(entrypoint): normalize host parsing and scheme retry handling
- b4fd06b refactor(minify): use promise-based asset discovery and stricter errors
- 76f860d chore(deps): update webui submodule
- c834e08 fix(auth): remove GET logout route
- e922160 chore(deps): update webui submodule
- 79412b3 refactor: prune unused helper shims and test-only APIs
- db6b04c chore(build): migrate benchmark script into Shadowtree recipe
- 983469d chore(deps): update webui submodule
- f20d43e chore(build): streamline shadowtree recipes
- e2c71ce chore: add git agent ignore patterns
- 1cd7046 chore(deps): update webui submodule
- c7bd687 chore(build): update shadowtree recipe wiring and webui
- e92ff97 docs(readme): streamline quick start and feature overview
- 61761e1 fix(update-wiki): collapse wrapped API descriptions in frontmatter
- 75bbb43 chore(build): migrate recipes to shadowtree
- 710d3f4 chore(deps): prune unused reverseproxy deps
- f244ea4 refactor(route): split routing contracts and implementations
- c91ae6e feat(synk): track in-use pool memory
- 82fa038 chore: bump Go version to 1.26.5
- 946864c chore(deps): bump Go module dependencies
- 129c221 fix(reverseproxy): preserve bodies across scheme retries
- e3d0e77 fix(websocket): honor debug no-ping query flag
- 606e7c5 fix(eventqueue): receive during flush
- 6b321e7 fix(io): stop bidirectional pipes on context cancellation
- 3a8c8fc refactor(strings,http): optimize case folding and equality fast paths
- cdc35dd fix(http): preserve target URL when retrying reverse proxy schemes
- d30fa24 refactor(strings,http): optimize helpers and add coverage
- 5cac9e1 chore(deps): drop unused reverseproxy quic-go dependencies
- 612f04e chore(deps): update wiki submodule
- e391f48 chore(wiki): update eventqueue docs
- 63e76a9 chore(deps): update docs and tooling packages
- f21ed80 refactor(components): extract reusable form and control helpers
- 79a107f fix(auth): switch logout button to POST API call
- 871fc3e fix(components): escape ANSI-rendered HTML in error and autocert logs
- dbcca73 chore(deps): update wiki submodule
- 3077368 chore(webui): switch shadowtree config to node profile
- 85f6dc9 refactor(api): replace ContentType enum with literals
- 2299348 chore(webui): migrate build recipes to shadowtree