v5.30.0
- Add payment requirements to tool catalog and implement x402 client by @asim in https://github.com/micro/go-micro/pull/2966
- feat(agent): loop detection guardrail + document/blog agent guardrails by @asim in https://github.com/micro/go-micro/pull/2968
- feat(agent): tool-execution wrappers via WrapTool by @asim in https://github.com/micro/go-micro/pull/2969
- Implement tool-execution wrappers and restructure ToolHandler by @asim in https://github.com/micro/go-micro/pull/2970
- Implement tool-execution wrappers and update documentation by @asim in https://github.com/micro/go-micro/pull/2971
- Implement durable execution and scoped state management for flows by @asim in https://github.com/micro/go-micro/pull/2972
- Update changelog and enhance retrospective blog on agentic features by @asim in https://github.com/micro/go-micro/pull/2973
- Implement A2A protocol gateway and update documentation by @asim in https://github.com/micro/go-micro/pull/2974
Full Changelog: https://github.com/micro/go-micro/compare/v5.29.0...v5.30.0
v4.15.4
Security
Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler (used by Static/StaticFS) and the Static middleware are affected. Backport of the v5 fix (#3016, released in v5.2.1). Thanks to @a-tt-om and @oran-gugu for reporting.
Make serving static file releated methods and middleware not unescape path by default - so how the way Router interprets paths and Static methods/middleware is consistent.
Given following situation:
// 0.
// given folder structure:
// private.txt
// public/
// public/index.html
// public/text.txt
// public/admin/private.txt
// 1. share `public/` folder contents from the server root. This folder actually contains subfolder `admin` which
// contents we want to forbid from downloading
e.Static("/", "public")
// 2. naively assume that everything under /admin folder is now forbidden
e.GET("/admin/*", func(c *Context) error {
return ErrForbidden
})
Then requests to /admin%2fprivate.txt would not be matched to GET /admin/* route (routing does not look unescaped path) and static file serving will use unescaped path to serve the file.
Note: this way of "guarding" subfolders will never work for for paths like /assets/../admin%2fprivate.txt which will path.Clean("/assets/../admin%2fprivate.txt") to /admin/private.txt and are servable if static file serving is configured to unescape paths.
If you want to guard routes - use middlewares on Static* methods and before Static middleware.
Breaking change / migration: If you serve files whose names contain URL-encoded characters (e.g., /hello%20world.txt → hello world.txt), you must now opt in:
e := echo.New()
e.EnablePathUnescapingStaticFiles = true // <-- enable old behavior
e.Static("/", "public")
for static middleware
e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
EnablePathUnescaping: true, // <-- enable old behavior
}))
Full Changelog: https://github.com/labstack/echo/compare/v4.15.3...v4.15.4
v5.2.1
Security
Make serving static file releated methods and middleware not unescape path by default - so how the way Router interprets paths and Static methods/middleware is consistent.
Given following situation:
// 0.
// given folder structure:
// private.txt
// public/
// public/index.html
// public/text.txt
// public/admin/private.txt
// 1. share `public/` folder contents from the server root. This folder actually contains subfolder `admin` which
// contents we want to forbid from downloading
e.Static("/", "public")
// 2. naively assume that everything under /admin folder is now forbidden
e.GET("/admin/*", func(c *Context) error {
return ErrForbidden
})
Then requests to /admin%2fprivate.txt would not be matched to GET /admin/* route (routing does not look unescaped path) and static file serving will use unescaped path to serve the file.
Note: this way of "guarding" subfolders will never work for for paths like /assets/../admin%2fprivate.txt which will path.Clean("/assets/../admin%2fprivate.txt") to /admin/private.txt and are servable if static file serving is configured to unescape paths.
If you want to guard routes - use middlewares on Static* methods and before Static middleware.
- revert PR #3009 changes to just disabling path escaping by default in static methods/middleware by @aldas in https://github.com/labstack/echo/pull/3016
Closes GHSA-vfp3-v2gw-7wfq more completely: the previous fix (#3009) rejected explicitly encoded separators at the handler level; this patch makes the no-unescape behavior the default so new configurations are safe without extra opt-out steps.
What changed: DisablePathUnescaping (on StaticConfig and StaticDirectoryHandlerConfig) is deprecated and replaced by EnablePathUnescaping (default false). Path unescaping is now opt-in.
What this protects: With EnablePathUnescaping: false (new default), encoded separators (%2F, %5C) are never decoded before routing or file lookup, so they cannot bypass route-level authentication or other middleware guards.
What this does NOT protect: Serving a directory with Static, StaticFS, or StaticDirectoryHandler exposes its entire subtree. Sibling routes are not a reliable ACL boundary — attach authorization middleware directly to the static mount, or serve sensitive sub-trees under separate guarded routes.
Breaking change / migration: If you serve files whose names contain URL-encoded characters (e.g., /hello%20world.txt → hello world.txt), you must now opt in:
// Static middleware
e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
EnablePathUnescaping: true, // only safe when NOT relying on route-based ACL guards
...
}))
// StaticDirectoryHandler
middleware.StaticDirectoryHandler(fs, &middleware.StaticDirectoryHandlerConfig{
EnablePathUnescaping: true,
})
Full Changelog: https://github.com/labstack/echo/compare/v5.2.0...v5.2.1
Wails v3.0.0-alpha2.103
- Move iOS and Android native features onto platform managers: call them via
application.IOS.*andapplication.Android.*(e.g.application.IOS.Haptic("medium"),application.Android.Share(payload)) instead of the oldapplication.IOS*/application.Android*free functions (#5602) - Rename mobile bridge events: cross-platform events now use the
common:*prefix (e.g.common:haptic,common:location) and platform-exclusive events useios:*/android:*(e.g.ios:backgroundTask,android:foregroundService); thenative:*prefix is no longer used (#5602)
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha2.103
v5.29.0
- docs: add 'become a sponsor' call-to-action linking to Discord by @asim in https://github.com/micro/go-micro/pull/2960
- Enhance README with sponsorship CTA and improve agent architecture by @asim in https://github.com/micro/go-micro/pull/2961
- blog: 'When the Event Is the Prompt' (#21) + autonomous agent-flow ha… by @asim in https://github.com/micro/go-micro/pull/2962
- Implement event-driven agents and x402 payment integration by @asim in https://github.com/micro/go-micro/pull/2964
- feat(x402): opt-in agent-native payments for tools by @asim in https://github.com/micro/go-micro/pull/2965
Full Changelog: https://github.com/micro/go-micro/compare/v5.28.0...v5.29.0
Version 1.50.3 (2026-06-15)
- feat: support Fetch v12 by @dnwe in https://github.com/IBM/sarama/pull/3609
- feat: support CreateTopics v6 by @dnwe in https://github.com/IBM/sarama/pull/3622
- feat: support DeleteTopics v5 by @dnwe in https://github.com/IBM/sarama/pull/3624
- feat: support AddPartitionsToTxn v3 by @hindessm in https://github.com/IBM/sarama/pull/3625
- feat: support Produce v9 by @dnwe in https://github.com/IBM/sarama/pull/3629
- feat: support CreatePartitions v3 by @dnwe in https://github.com/IBM/sarama/pull/3631
- feat: expose broker features from ApiVersions v3 by @dnwe in https://github.com/IBM/sarama/pull/3633
- feat: support UpdateFeatures by @dnwe in https://github.com/IBM/sarama/pull/3632
- feat: add OnAssignmentBalanceStrategy, the onAssignment half of the assignor contract by @lizthegrey in https://github.com/IBM/sarama/pull/3627
- feat: support ApiVersions V4 and discover upgradable features in test by @dnwe in https://github.com/IBM/sarama/pull/3634
- fix: avoid makeslice "len out of range" panics on invalid response by @hindessm in https://github.com/IBM/sarama/pull/3612
- fix: avoid makeslice panic in request decode too by @dnwe in https://github.com/IBM/sarama/pull/3613
- fix(test): wait for leaders after topic create by @dnwe in https://github.com/IBM/sarama/pull/3623
- fix(consumer): don't panic on requeue after unref by @dnwe in https://github.com/IBM/sarama/pull/3630
- chore(deps): update golang-x to v0.53.0 by @renovate[bot] in https://github.com/IBM/sarama/pull/3618
- fix(deps): update module golang.org/x/sys to v0.46.0 - autoclosed by @renovate[bot] in https://github.com/IBM/sarama/pull/3617
- fix(deps): update module golang.org/x/sync to v0.21.0 by @renovate[bot] in https://github.com/IBM/sarama/pull/3616
- fix(deps): update module golang.org/x/net to v0.56.0 by @renovate[bot] in https://github.com/IBM/sarama/pull/3626
- chore: update default Kafka version to 2.6 by @dnwe in https://github.com/IBM/sarama/pull/3608
- chore: more protocol version placeholders by @hindessm in https://github.com/IBM/sarama/pull/3610
- chore: extend fuzz testing to more types by @dnwe in https://github.com/IBM/sarama/pull/3614
- chore: clean up Int32 array encode/decode by @hindessm in https://github.com/IBM/sarama/pull/3619
- chore: apply Go's modernize fixes by @dnwe in https://github.com/IBM/sarama/pull/3621
Full Changelog: https://github.com/IBM/sarama/compare/v1.50.2...v1.50.3
v3.0.0-rc.2
- Upgrade Guide: https://resty.dev/docs/upgrading-to-v3/
- fix: content decoder not found error when do not parse response is enabled and unsupported content-encoding header present by @jeevatkm in https://github.com/go-resty/resty/pull/1169
- fix: panics and state corruption in Request.Clone, Client.Close, SSE default logger, and invalid HTTP method handling by @g3m0sis in https://github.com/go-resty/resty/pull/1172
- @g3m0sis made their first contribution in https://github.com/go-resty/resty/pull/1172
Full Changelog: https://github.com/go-resty/resty/compare/v3.0.0-rc.1...v3.0.0-rc.2
v4.15.3 - Static encoded-separator route bypass fix (GHSA-vfp3-v2gw-7wfq)
- fix(static): reject encoded path separators that bypass route-level middleware by @vishr in https://github.com/labstack/echo/pull/3011
Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler (used by Static/StaticFS) and the Static middleware are affected. Backport of the v5 fix (#3009, released in v5.2.0). Thanks to @a-tt-om and @oran-gugu for reporting.
Full Changelog: https://github.com/labstack/echo/compare/v4.15.2...v4.15.3
Wails v3.0.0-alpha.102
- Add experimental
wails3 setupwizard for interactive project setup and dependency checking - Add
--jsonflag towails3 doctorfor machine-readable output - Add signing status section to
wails3 doctorcommand
- Fix npm detection on Linux to check PATH in addition to package manager
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.102
v5.2.0 - Static encoded-separator route bypass fix (GHSA-vfp3-v2gw-7wfq)
- fix(static): reject encoded path separators that bypass route-level middleware by @vishr in https://github.com/labstack/echo/pull/3009
- fix(middleware/static): don't double-unescape request path (#2599) by @vishr in https://github.com/labstack/echo/pull/3006
Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler/StaticFS and the Static middleware are affected. Thanks to @a-tt-om and @oran-gugu for reporting.
- feat(middleware): optional RateLimiterStoreContext for response headers (#2961) by @vishr in https://github.com/labstack/echo/pull/3007
- perf: optimize core hot paths (chain, context, binding, responses) by @vishr in https://github.com/labstack/echo/pull/3008
- fix(binder): include field name in bind conversion errors (#2629) by @vishr in https://github.com/labstack/echo/pull/3005
- fix(binder): serialize BindingError to structured JSON (#2771) by @vishr in https://github.com/labstack/echo/pull/3004
- fix(binder): MustUnixTime docs say time.Time, not time.Duration by @c-tonneslan in https://github.com/labstack/echo/pull/2988
- fix(middleware): reset ContentLength after gzip decompression by @shblue21 in https://github.com/labstack/echo/pull/3000
- fix(middleware/proxy): append RealIP to X-Forwarded-For for WebSocket requests by @kawaway in https://github.com/labstack/echo/pull/2994
- Fix proxy panic when balancer has no targets by @shblue21 in https://github.com/labstack/echo/pull/2977
- fix(middleware): correct documented KeyAuth KeyLookup default by @leestana01 in https://github.com/labstack/echo/pull/2992
- test: lock in v5 group route method-handling (405 + OPTIONS) by @vishr in https://github.com/labstack/echo/pull/3003
- docs: liveness signals in README + public ROADMAP by @vishr in https://github.com/labstack/echo/pull/3002
- Fix typos in CSRFConfig comments by @shblue21 in https://github.com/labstack/echo/pull/2979
- refactor: modernize code usage using gofix by @kumapower17 in https://github.com/labstack/echo/pull/2970
- refactor: replace Split in loops with more efficient SplitSeq by @box4wangjing in https://github.com/labstack/echo/pull/2969
- refactor: use the built-in max/min to simplify the code by @criciss in https://github.com/labstack/echo/pull/2966
- Update GitHub actions deps versions by @aldas in https://github.com/labstack/echo/pull/2971
- @criciss made their first contribution in https://github.com/labstack/echo/pull/2966
- @box4wangjing made their first contribution in https://github.com/labstack/echo/pull/2969
- @shblue21 made their first contribution in https://github.com/labstack/echo/pull/2977
- @c-tonneslan made their first contribution in https://github.com/labstack/echo/pull/2988
- @leestana01 made their first contribution in https://github.com/labstack/echo/pull/2992
- @kawaway made their first contribution in https://github.com/labstack/echo/pull/2994
Full Changelog: https://github.com/labstack/echo/compare/v5.1.1...v5.2.0