Update major updates (major) #44

Open
alex wants to merge 1 commit from renovate/major-major-updates into devel
Owner

This PR contains the following updates:

Package Change Age Confidence Type Update
github.com/labstack/echo/v4 v4.15.4v5.3.1 age confidence require major
github.com/urfave/cli/v2 v2.27.7v3.10.1 age confidence require major
github.com/yuin/goldmark-emoji v1.0.6v2.0.0 age confidence require major
postgresql (source) 16.7.2718.8.0 age confidence major

⚠️ Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

labstack/echo (github.com/labstack/echo/v4)

v5.3.1

Compare Source

Fixes

  • fix(static): preserve matched handler 404s by @​JSap0914 in #​3043
  • fix(group): Implicitly registered group routes should be allowed overwritten in default routes by @​aldas in #​3049

Enhancements

v5.3.0

Compare Source

Logic changes
PR #​2996 revert back to v4 behavior for a group registering implicit 404 handlers.

If you do not want this behavior, can do not want implicit 404 handlers for groups, use:

e :=  echo.NewWithConfig(echo.Config{NoGroupAutoRegister404Routes: true})
g := e.Group("/api")

some other noteworthy echancements:

e.QUERY("/", func(c *Context) error {
  return c.String(http.StatusTeapot, "OK")
})
  • Router: automatically handle HEAD request by GET handlers in labtack#2949
e := echo.NewWithConfig(echo.Config{
  Router: echo.NewRouter(echo.RouterConfig{
    AutoHandleHEAD: true,
  }),
})

Enhancements

v5.2.1

Compare Source

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 #​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.txthello 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,
})

v5.2.0

Compare Source

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/StaticFS and the Static middleware are affected. Thanks to @​a-tt-om and @​oran-gugu for reporting.

Enhancements

New Contributors

Full Changelog: https://github.com/labstack/echo/compare/v5.1.1...v5.2.0

v5.1.1

Compare Source

Security

Thanks to @​shblue21 for reporting this issue.

Enhancements

v5.1.0

Compare Source

Security

This change does not break the API contract, but it does introduce breaking changes in logic/behavior.
If your application is using c.RealIP() beware and read https://echo.labstack.com/docs/ip-address

v4 behavior can be restored with:

e := echo.New()
e.IPExtractor = echo.LegacyIPExtractor()
  • Remove legacy IP extraction logic from context.RealIP method by @​aldas in #​2933

Enhancements

v5.0.4

Compare Source

Enhancements

v5.0.3

Compare Source

Security

  • Fix directory traversal vulnerability under Windows in Static middleware when default Echo filesystem is used. Reported by @​shblue21.

This applies to cases when:

  • Windows is used as OS
  • middleware.StaticConfig.Filesystem is nil (default)
  • echo.Filesystem is has not been set explicitly (default)

Exposure is restricted to the active process working directory and its subfolders.

v5.0.2

Compare Source

Security

  • Fix Static middleware with config.Browse=true lists all files/subfolders from config.Filesystem root and not starting from config.Root in #​2887

v5.0.1

Compare Source

v5.0.0

Compare Source

Echo v5 is maintenance release with major breaking changes

  • Context is now struct instead of interface and we can add method to it in the future in minor versions.
  • Adds new Router interface for possible new routing implementations.
  • Drops old logging interface and uses moderm log/slog instead.
  • Rearranges alot of methods/function signatures to make them more consistent.

Upgrade notes and v4 support:

  • Echo v4 is supported with security* updates and bug fixes until 2026-12-31
  • If you are using Echo in a production environment, it is recommended to wait until after 2026-03-31 before upgrading.
  • Until 2026-03-31, any critical issues requiring breaking v5 API changes will be addressed, even if this violates semantic versioning.

See API_CHANGES_V5.md for public API changes between v4 and v5, notes on upgrading.

Upgrading TLDR:

If you are using Linux you can migrate easier parts like that:

find . -type f -name "*.go" -exec sed -i 's/ echo.Context/ *echo.Context/g' {} +
find . -type f -name "*.go" -exec sed -i 's/echo\/v4/echo\/v5/g' {} +

macOS

find . -type f -name "*.go" -exec sed -i '' 's/ echo.Context/ *echo.Context/g' {} +
find . -type f -name "*.go" -exec sed -i '' 's/echo\/v4/echo\/v5/g' {} +

or in your favorite IDE

Replace all:

  1. echo.Context -> *echo.Context
  2. echo/v4 -> echo/v5

This should solve most of the issues. Probably the hardest part is updating all the tests.

urfave/cli (github.com/urfave/cli/v2)

v3.10.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.10.0...v3.10.1

v3.10.0

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.9.1...v3.10.0

v3.9.1

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.9.0...v3.9.1

v3.9.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.8.0...v3.9.0

v3.8.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.7.0...v3.8.0

v3.7.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.6.2...v3.7.0

v3.6.2

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.6.1...v3.6.2

v3.6.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.6.0...v3.6.1

v3.6.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.5.0...v3.6.0

v3.5.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.4.1...v3.5.0

v3.4.1

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.4.0...v3.4.1

v3.4.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.9...v3.4.0

v3.3.9

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.8...v3.3.9

v3.3.8

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.3.7...v3.3.8

v3.3.7

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.6...v3.3.7

v3.3.6

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.3.5...v3.3.6

v3.3.5

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.3.4...v3.3.5

v3.3.4

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.3...v3.3.4

v3.3.3

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.2...v3.3.3

v3.3.2

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.3.1...v3.3.2

v3.3.1

Compare Source

What's Changed

Full Changelog: https://github.com/urfave/cli/compare/v3.3.0...v3.3.1

v3.3.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.2.0...v3.3.0

v3.2.0

Compare Source

Breaking change IntFlag now uses int type and not int64. Please change to using Int64Flag for int64 types. Similar behavior for UintFlag as well. See https://pkg.go.dev/github.com/urfave/cli/v3 for a full list of flag types. See #​2094 for full patch for this

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.1.1...v3.2.0

v3.1.1

Compare Source

v3.1.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/urfave/cli/compare/v3.0.0-beta1.01...v3.1.0

yuin/goldmark-emoji (github.com/yuin/goldmark-emoji)

v2.0.0

Compare Source

  • feat: initial commit of v2

Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • Branch creation
    • "before 5am"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [github.com/labstack/echo/v4](https://github.com/labstack/echo) | `v4.15.4` → `v5.3.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2flabstack%2fecho%2fv4/v5.3.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2flabstack%2fecho%2fv4/v4.15.4/v5.3.1?slim=true) | require | major | | [github.com/urfave/cli/v2](https://github.com/urfave/cli) | `v2.27.7` → `v3.10.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2furfave%2fcli%2fv2/v3.10.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2furfave%2fcli%2fv2/v2.27.7/v3.10.1?slim=true) | require | major | | [github.com/yuin/goldmark-emoji](https://github.com/yuin/goldmark-emoji) | `v1.0.6` → `v2.0.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fyuin%2fgoldmark-emoji/v2.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fyuin%2fgoldmark-emoji/v1.0.6/v2.0.0?slim=true) | require | major | | [postgresql](https://github.com/bitnami/charts) ([source](https://github.com/bitnami/charts/tree/HEAD/bitnami/postgresql)) | `16.7.27` → `18.8.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/registry-1.docker.io%2fbitnamicharts%2fpostgresql/18.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/registry-1.docker.io%2fbitnamicharts%2fpostgresql/16.7.27/18.8.0?slim=true) | | major | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/11) for more information. --- ### Release Notes <details> <summary>labstack/echo (github.com/labstack/echo/v4)</summary> ### [`v5.3.1`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v531---2026-07-21) [Compare Source](https://github.com/labstack/echo/compare/v5.3.0...v5.3.1) **Fixes** - fix(static): preserve matched handler 404s by [@&#8203;JSap0914](https://github.com/JSap0914) in [#&#8203;3043](https://github.com/labstack/echo/pull/3043) - fix(group): Implicitly registered group routes should be allowed overwritten in default routes by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;3049](https://github.com/labstack/echo/pull/3049) **Enhancements** - docs: update HTTP badge URLs to HTTPS by [@&#8203;KeloYuan](https://github.com/KeloYuan) in [#&#8203;2968](https://github.com/labstack/echo/pull/2968) - docs: correct `Any` godoc to reflect true arbitrary-method matching by [@&#8203;hyorimitsu](https://github.com/hyorimitsu) in [#&#8203;3046](https://github.com/labstack/echo/pull/3046) - refactor: use range-over-integer loops by [@&#8203;zxysilent](https://github.com/zxysilent) in [#&#8203;3042](https://github.com/labstack/echo/pull/3042) - docs: add llms.txt and llms-full.txt for v5 documentation by [@&#8203;tamish560](https://github.com/tamish560) in [#&#8203;3041](https://github.com/labstack/echo/pull/3041) - Update deps to latest versions by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;3050](https://github.com/labstack/echo/pull/3050) ### [`v5.3.0`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v530---2026-07-12) [Compare Source](https://github.com/labstack/echo/compare/v5.2.1...v5.3.0) **Logic changes** PR [#&#8203;2996](https://github.com/labstack/echo/pull/2996) revert back to `v4` behavior for a group registering implicit 404 handlers. If you do not want this behavior, can do not want implicit 404 handlers for groups, use: ```go e := echo.NewWithConfig(echo.Config{NoGroupAutoRegister404Routes: true}) g := e.Group("/api") ``` some other noteworthy echancements: - Adds first-class support for the QUERY HTTP method [RFC 10008](https://www.rfc-editor.org/info/rfc10008/) in [#&#8203;3038](https://github.com/labstack/echo/pull/3038) ```go e.QUERY("/", func(c *Context) error { return c.String(http.StatusTeapot, "OK") }) ``` - Router: automatically handle HEAD request by GET handlers in [labtack#2949](https://github.com/labtack/echo/pull/2949) ```go e := echo.NewWithConfig(echo.Config{ Router: echo.NewRouter(echo.RouterConfig{ AutoHandleHEAD: true, }), }) ``` **Enhancements** - perf(json): pooled-buffer JSON deserialize by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3023](https://github.com/labstack/echo/pull/3023) - perf(router): cache-friendly static child lookup by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3024](https://github.com/labstack/echo/pull/3024) - update golang.org/x deps to latest versions by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;3034](https://github.com/labstack/echo/pull/3034) - pin GitHub Actions to full commit SHAs and rework actions SHAs to own variables by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;3035](https://github.com/labstack/echo/pull/3035) - docs(csrf): fix godoc typo in Generator default (tp -> to) by [@&#8203;DucMinhNe](https://github.com/DucMinhNe) in [#&#8203;3026](https://github.com/labstack/echo/pull/3026) - docs(cors): note reverse-proxy header duplication by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3027](https://github.com/labstack/echo/pull/3027) - feat: add support for HTTP QUERY method by [@&#8203;thdxg](https://github.com/thdxg) in [#&#8203;3038](https://github.com/labstack/echo/pull/3038) - docs: fix typos in API\_CHANGES\_V5.md by [@&#8203;maxtaran2010](https://github.com/maxtaran2010) in [#&#8203;3039](https://github.com/labstack/echo/pull/3039) - Router: auto HEAD to GET by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2949](https://github.com/labstack/echo/pull/2949) - Revert back to v4 behavior for group registering implicit 404 handler… by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2996](https://github.com/labstack/echo/pull/2996) ### [`v5.2.1`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v521---2026-06-15) [Compare Source](https://github.com/labstack/echo/compare/v5.2.0...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: ```go // 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 [#&#8203;3009](https://github.com/labstack/echo/issues/3009) changes to just disabling path escaping by default in static methods/middleware by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;3016](https://github.com/labstack/echo/pull/3016) Closes [GHSA-vfp3-v2gw-7wfq](https://github.com/labstack/echo/security/advisories/GHSA-vfp3-v2gw-7wfq) more completely: the previous fix ([#&#8203;3009](https://github.com/labstack/echo/issues/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: ```go // 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, }) ``` ### [`v5.2.0`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v520---2026-06-14) [Compare Source](https://github.com/labstack/echo/compare/v5.1.1...v5.2.0) **Security** - fix(static): reject encoded path separators that bypass route-level middleware by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3009](https://github.com/labstack/echo/pull/3009) - fix(middleware/static): don't double-unescape request path ([#&#8203;2599](https://github.com/labstack/echo/issues/2599)) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3006](https://github.com/labstack/echo/pull/3006) Fixes [GHSA-vfp3-v2gw-7wfq](https://github.com/labstack/echo/security/advisories/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 [@&#8203;a-tt-om](https://github.com/a-tt-om) and [@&#8203;oran-gugu](https://github.com/oran-gugu) for reporting. **Enhancements** - feat(middleware): optional RateLimiterStoreContext for response headers ([#&#8203;2961](https://github.com/labstack/echo/issues/2961)) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3007](https://github.com/labstack/echo/pull/3007) - perf: optimize core hot paths (chain, context, binding, responses) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3008](https://github.com/labstack/echo/pull/3008) - fix(binder): include field name in bind conversion errors ([#&#8203;2629](https://github.com/labstack/echo/issues/2629)) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3005](https://github.com/labstack/echo/pull/3005) - fix(binder): serialize BindingError to structured JSON ([#&#8203;2771](https://github.com/labstack/echo/issues/2771)) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3004](https://github.com/labstack/echo/pull/3004) - fix(binder): MustUnixTime docs say time.Time, not time.Duration by [@&#8203;c-tonneslan](https://github.com/c-tonneslan) in [#&#8203;2988](https://github.com/labstack/echo/pull/2988) - fix(middleware): reset ContentLength after gzip decompression by [@&#8203;shblue21](https://github.com/shblue21) in [#&#8203;3000](https://github.com/labstack/echo/pull/3000) - fix(middleware/proxy): append RealIP to X-Forwarded-For for WebSocket requests by [@&#8203;kawaway](https://github.com/kawaway) in [#&#8203;2994](https://github.com/labstack/echo/pull/2994) - Fix proxy panic when balancer has no targets by [@&#8203;shblue21](https://github.com/shblue21) in [#&#8203;2977](https://github.com/labstack/echo/pull/2977) - fix(middleware): correct documented KeyAuth KeyLookup default by [@&#8203;leestana01](https://github.com/leestana01) in [#&#8203;2992](https://github.com/labstack/echo/pull/2992) - test: lock in v5 group route method-handling (405 + OPTIONS) by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3003](https://github.com/labstack/echo/pull/3003) - docs: liveness signals in README + public ROADMAP by [@&#8203;vishr](https://github.com/vishr) in [#&#8203;3002](https://github.com/labstack/echo/pull/3002) - Fix typos in CSRFConfig comments by [@&#8203;shblue21](https://github.com/shblue21) in [#&#8203;2979](https://github.com/labstack/echo/pull/2979) - refactor: modernize code usage using gofix by [@&#8203;kumapower17](https://github.com/kumapower17) in [#&#8203;2970](https://github.com/labstack/echo/pull/2970) - refactor: replace Split in loops with more efficient SplitSeq by [@&#8203;box4wangjing](https://github.com/box4wangjing) in [#&#8203;2969](https://github.com/labstack/echo/pull/2969) - refactor: use the built-in max/min to simplify the code by [@&#8203;criciss](https://github.com/criciss) in [#&#8203;2966](https://github.com/labstack/echo/pull/2966) - Update GitHub actions deps versions by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2971](https://github.com/labstack/echo/pull/2971) **New Contributors** - [@&#8203;criciss](https://github.com/criciss) made their first contribution in [#&#8203;2966](https://github.com/labstack/echo/pull/2966) - [@&#8203;box4wangjing](https://github.com/box4wangjing) made their first contribution in [#&#8203;2969](https://github.com/labstack/echo/pull/2969) - [@&#8203;shblue21](https://github.com/shblue21) made their first contribution in [#&#8203;2977](https://github.com/labstack/echo/pull/2977) - [@&#8203;c-tonneslan](https://github.com/c-tonneslan) made their first contribution in [#&#8203;2988](https://github.com/labstack/echo/pull/2988) - [@&#8203;leestana01](https://github.com/leestana01) made their first contribution in [#&#8203;2992](https://github.com/labstack/echo/pull/2992) - [@&#8203;kawaway](https://github.com/kawaway) made their first contribution in [#&#8203;2994](https://github.com/labstack/echo/pull/2994) **Full Changelog**: <https://github.com/labstack/echo/compare/v5.1.1...v5.2.0> ### [`v5.1.1`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v511---2026-05-01) [Compare Source](https://github.com/labstack/echo/compare/v5.1.0...v5.1.1) **Security** - `Context.Scheme()` should validate values taken from header by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2953](https://github.com/labstack/echo/pull/2953) Thanks to [@&#8203;shblue21](https://github.com/shblue21) for reporting this [issue](https://github.com/labstack/echo/issues/2952). **Enhancements** - Add golangci linter configuration by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2930](https://github.com/labstack/echo/pull/2930) - Make StartConfig listener creation context-aware by [@&#8203;EricGusmao](https://github.com/EricGusmao) in [#&#8203;2936](https://github.com/labstack/echo/pull/2936) - fix(lint): resolve staticcheck issues and improve code quality by [@&#8203;itsllyaz](https://github.com/itsllyaz) in [#&#8203;2941](https://github.com/labstack/echo/pull/2941) - Context.Scheme should validate values taken from header by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2953](https://github.com/labstack/echo/pull/2953) - chore: fix typos in httperror.go by [@&#8203;tisonkun](https://github.com/tisonkun) in [#&#8203;2958](https://github.com/labstack/echo/pull/2958) - Context.Json should not unwrap response by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2964](https://github.com/labstack/echo/pull/2964) ### [`v5.1.0`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v510---2026-03-31) [Compare Source](https://github.com/labstack/echo/compare/v5.0.4...v5.1.0) **Security** This change does not break the API contract, but it does introduce breaking changes in logic/behavior. If your application is using `c.RealIP()` beware and read <https://echo.labstack.com/docs/ip-address> `v4` behavior can be restored with: ```go e := echo.New() e.IPExtractor = echo.LegacyIPExtractor() ``` - Remove legacy IP extraction logic from context.RealIP method by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2933](https://github.com/labstack/echo/pull/2933) **Enhancements** - Add echo-opentelemetry to the README.md by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2908](https://github.com/labstack/echo/pull/2908) - fix: correct spelling mistakes in comments and field name by [@&#8203;crawfordxx](https://github.com/crawfordxx) in [#&#8203;2916](https://github.com/labstack/echo/pull/2916) - Add <https://github.com/labstack/echo-prometheus> to the middleware list in README.md by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2919](https://github.com/labstack/echo/pull/2919) - Add StartConfig.Listener so server with custom Listener is easier to create by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2920](https://github.com/labstack/echo/pull/2920) - Fix rate limiter documentation for default burst value by [@&#8203;karesansui-u](https://github.com/karesansui-u) in [#&#8203;2925](https://github.com/labstack/echo/pull/2925) - Add doc comments to clarify usage of File related methods and leading slash handling by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2928](https://github.com/labstack/echo/pull/2928) - Add NewDefaultFS function to help create filesystem that allows absolute paths by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2931](https://github.com/labstack/echo/pull/2931) - Do not set http.Server.WriteTimeout in StartConfig by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2932](https://github.com/labstack/echo/pull/2932) ### [`v5.0.4`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v504---2026-02-15) [Compare Source](https://github.com/labstack/echo/compare/v5.0.3...v5.0.4) **Enhancements** - Remove unused import 'errors' from README example by [@&#8203;kumapower17](https://github.com/kumapower17) in [#&#8203;2889](https://github.com/labstack/echo/pull/2889) - Fix Graceful shutdown: after `http.Server.Serve` returns we need to wait for graceful shutdown goroutine to finish by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2898](https://github.com/labstack/echo/pull/2898) - Update location of oapi-codegen in README by [@&#8203;mromaszewicz](https://github.com/mromaszewicz) in [#&#8203;2896](https://github.com/labstack/echo/pull/2896) - Add Go 1.26 to CI flow by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2899](https://github.com/labstack/echo/pull/2899) - Add new function `echo.StatusCode` by [@&#8203;suwakei](https://github.com/suwakei) in [#&#8203;2892](https://github.com/labstack/echo/pull/2892) - CSRF: support older token-based CSRF protection handler that want to render token into template by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2894](https://github.com/labstack/echo/pull/2894) - Add `echo.ResolveResponseStatus` function to help middleware/handlers determine HTTP status code and echo.Response by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2900](https://github.com/labstack/echo/pull/2900) ### [`v5.0.3`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v503---2026-02-06) [Compare Source](https://github.com/labstack/echo/compare/v5.0.2...v5.0.3) **Security** - Fix directory traversal vulnerability under Windows in Static middleware when default Echo filesystem is used. Reported by [@&#8203;shblue21](https://github.com/shblue21). This applies to cases when: - Windows is used as OS - `middleware.StaticConfig.Filesystem` is `nil` (default) - `echo.Filesystem` is has not been set explicitly (default) Exposure is restricted to the active process working directory and its subfolders. ### [`v5.0.2`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v502---2026-02-02) [Compare Source](https://github.com/labstack/echo/compare/v5.0.1...v5.0.2) **Security** - Fix Static middleware with `config.Browse=true` lists all files/subfolders from `config.Filesystem` root and not starting from `config.Root` in [#&#8203;2887](https://github.com/labstack/echo/pull/2887) ### [`v5.0.1`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v501---2026-01-28) [Compare Source](https://github.com/labstack/echo/compare/v5.0.0...v5.0.1) - Panic MW: will now return a custom PanicStackError with stack trace by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2871](https://github.com/labstack/echo/pull/2871) - Docs: add missing err parameter to DenyHandler example by [@&#8203;cgalibern](https://github.com/cgalibern) in [#&#8203;2878](https://github.com/labstack/echo/pull/2878) - improve: improve websocket checks in IsWebSocket() \[per RFC 6455] by [@&#8203;raju-mechatronics](https://github.com/raju-mechatronics) in [#&#8203;2875](https://github.com/labstack/echo/pull/2875) - fix: Context.Json() should not send status code before serialization is complete by [@&#8203;aldas](https://github.com/aldas) in [#&#8203;2877](https://github.com/labstack/echo/pull/2877) ### [`v5.0.0`](https://github.com/labstack/echo/blob/HEAD/CHANGELOG.md#v500---2026-01-18) [Compare Source](https://github.com/labstack/echo/compare/v4.15.4...v5.0.0) Echo `v5` is maintenance release with **major breaking changes** - `Context` is now struct instead of interface and we can add method to it in the future in minor versions. - Adds new `Router` interface for possible new routing implementations. - Drops old logging interface and uses moderm `log/slog` instead. - Rearranges alot of methods/function signatures to make them more consistent. Upgrade notes and `v4` support: - Echo `v4` is supported with **security**\* updates and **bug** fixes until **2026-12-31** - If you are using Echo in a production environment, it is recommended to wait until after 2026-03-31 before upgrading. - Until 2026-03-31, any critical issues requiring breaking `v5` API changes will be addressed, even if this violates semantic versioning. See [API\_CHANGES\_V5.md](./API_CHANGES_V5.md) for public API changes between `v4` and `v5`, notes on **upgrading**. Upgrading TLDR: If you are using Linux you can migrate easier parts like that: ```bash find . -type f -name "*.go" -exec sed -i 's/ echo.Context/ *echo.Context/g' {} + find . -type f -name "*.go" -exec sed -i 's/echo\/v4/echo\/v5/g' {} + ``` macOS ```bash find . -type f -name "*.go" -exec sed -i '' 's/ echo.Context/ *echo.Context/g' {} + find . -type f -name "*.go" -exec sed -i '' 's/echo\/v4/echo\/v5/g' {} + ``` or in your favorite IDE Replace all: 1. ` echo.Context` -> ` *echo.Context` 2. `echo/v4` -> `echo/v5` This should solve most of the issues. Probably the hardest part is updating all the tests. </details> <details> <summary>urfave/cli (github.com/urfave/cli/v2)</summary> ### [`v3.10.1`](https://github.com/urfave/cli/releases/tag/v3.10.1) [Compare Source](https://github.com/urfave/cli/compare/v3.10.0...v3.10.1) #### What's Changed - chore(deps): bump actions/checkout from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2371](https://github.com/urfave/cli/pull/2371) - fix: align gfmrun example counter with actual runnable count by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2369](https://github.com/urfave/cli/pull/2369) - v3: yield the version flag's -v alias to a user-defined flag by [@&#8203;c-tonneslan](https://github.com/c-tonneslan) in [#&#8203;2330](https://github.com/urfave/cli/pull/2330) - fix: keep completion subcommand order deterministic in help output by [@&#8203;suzuki-shunsuke](https://github.com/suzuki-shunsuke) in [#&#8203;2374](https://github.com/urfave/cli/pull/2374) - fix: allow DefaultCommand to handle its own flags by [@&#8203;lihan3238](https://github.com/lihan3238) in [#&#8203;2322](https://github.com/urfave/cli/pull/2322) #### New Contributors - [@&#8203;lihan3238](https://github.com/lihan3238) made their first contribution in [#&#8203;2322](https://github.com/urfave/cli/pull/2322) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.10.0...v3.10.1> ### [`v3.10.0`](https://github.com/urfave/cli/releases/tag/v3.10.0) [Compare Source](https://github.com/urfave/cli/compare/v3.9.1...v3.10.0) #### What's Changed - feat: add Flag.SchemaType() and Flag.SchemaItemsType() for JSON Schema introspection by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2368](https://github.com/urfave/cli/pull/2368) - feat: add Command.Walk() and Command.Path() convenience methods by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2353](https://github.com/urfave/cli/pull/2353) - fix: let --help flag take precedence over parse errors by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2360](https://github.com/urfave/cli/pull/2360) - fix: resolve remaining help invocation inconsistencies by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2361](https://github.com/urfave/cli/pull/2361) - fix: skip After hook when help is displayed on subcommand by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2363](https://github.com/urfave/cli/pull/2363) - fix: show GLOBAL OPTIONS in SubcommandHelpTemplate by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2359](https://github.com/urfave/cli/pull/2359) - fix: resolve broken links in CHANGELOG.md by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2357](https://github.com/urfave/cli/pull/2357) - docs: document what happened to build tags in v3 migration guide by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2358](https://github.com/urfave/cli/pull/2358) - Various docs updates and dependency bumps **Full Changelog**: <https://github.com/urfave/cli/compare/v3.9.1...v3.10.0> ### [`v3.9.1`](https://github.com/urfave/cli/releases/tag/v3.9.1) [Compare Source](https://github.com/urfave/cli/compare/v3.9.0...v3.9.1) #### What's Changed - fix: inherit Reader/Writer/ErrWriter from parent on subcommand setup by [@&#8203;c-tonneslan](https://github.com/c-tonneslan) in [#&#8203;2329](https://github.com/urfave/cli/pull/2329) - fix: correct greedy colon parsing in bash completion script by [@&#8203;TimSoethout](https://github.com/TimSoethout) in [#&#8203;2336](https://github.com/urfave/cli/pull/2336) - fix: Honor env sources on duplicated flags by [@&#8203;ibobgunardi](https://github.com/ibobgunardi) in [#&#8203;2355](https://github.com/urfave/cli/pull/2355) - fix: Remove incorrect flag check by [@&#8203;MohitPanchariya](https://github.com/MohitPanchariya) in [#&#8203;2280](https://github.com/urfave/cli/pull/2280) - fix: let completion command use normal flag parsing pipeline by [@&#8203;suzuki-shunsuke](https://github.com/suzuki-shunsuke) in [#&#8203;2279](https://github.com/urfave/cli/pull/2279) - fix: bash completion spacing by [@&#8203;cyphercodes](https://github.com/cyphercodes) in [#&#8203;2337](https://github.com/urfave/cli/pull/2337) - fix: fish custom completion arguments by [@&#8203;puneetdixit200](https://github.com/puneetdixit200) in [#&#8203;2338](https://github.com/urfave/cli/pull/2338) - fix: empty positional arg after a flag regression test by [@&#8203;c-tonneslan](https://github.com/c-tonneslan) in [#&#8203;2328](https://github.com/urfave/cli/pull/2328) - docs: document build tags in v3 migration guide by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2358](https://github.com/urfave/cli/pull/2358) - chore(deps): bump mkdocs-git-revision-date-localized-plugin by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;2347](https://github.com/urfave/cli/pull/2347) - Fix typos by [@&#8203;myfloss](https://github.com/myfloss) in [#&#8203;2339](https://github.com/urfave/cli/pull/2339) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.9.0...v3.9.1> ### [`v3.9.0`](https://github.com/urfave/cli/releases/tag/v3.9.0) [Compare Source](https://github.com/urfave/cli/compare/v3.8.0...v3.9.0) #### What's Changed - chore(deps): bump codecov/codecov-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2300](https://github.com/urfave/cli/pull/2300) - chore(deps): bump the python-packages group across 1 directory with 3 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2301](https://github.com/urfave/cli/pull/2301) - docs: fix typo by [@&#8203;acrobatstick](https://github.com/acrobatstick) in [#&#8203;2299](https://github.com/urfave/cli/pull/2299) - feat: add descriptions for bash and powershell autocompletion by [@&#8203;gabelluardo](https://github.com/gabelluardo) in [#&#8203;2298](https://github.com/urfave/cli/pull/2298) - Made command help more consistent by [@&#8203;markshep-wbg](https://github.com/markshep-wbg) in [#&#8203;2287](https://github.com/urfave/cli/pull/2287) - Fix:(issue\_2285): correct function and variable naming in fish completion script by [@&#8203;TimSoethout](https://github.com/TimSoethout) in [#&#8203;2286](https://github.com/urfave/cli/pull/2286) - fix(ci): update docs after bash completion update by [@&#8203;gabelluardo](https://github.com/gabelluardo) in [#&#8203;2307](https://github.com/urfave/cli/pull/2307) - fix: apply SliceFlagSeparator to env var sources by [@&#8203;lawrence3699](https://github.com/lawrence3699) in [#&#8203;2309](https://github.com/urfave/cli/pull/2309) - fix: don't print empty line to stderr when Exit message is empty by [@&#8203;Yanhu007](https://github.com/Yanhu007) in [#&#8203;2310](https://github.com/urfave/cli/pull/2310) - flag: prevent BoolWithInverseFlag.String from panicking without a tab by [@&#8203;alliasgher](https://github.com/alliasgher) in [#&#8203;2311](https://github.com/urfave/cli/pull/2311) - refactor: bash completion script by [@&#8203;gabelluardo](https://github.com/gabelluardo) in [#&#8203;2308](https://github.com/urfave/cli/pull/2308) - fix: drop shebang from bash completion template by [@&#8203;barry3406](https://github.com/barry3406) in [#&#8203;2317](https://github.com/urfave/cli/pull/2317) - fix: show flag completions when completing a double-dash prefix by [@&#8203;morozov](https://github.com/morozov) in [#&#8203;2316](https://github.com/urfave/cli/pull/2316) - fix: parse flags for help subcommand ([#&#8203;2271](https://github.com/urfave/cli/issues/2271)) by [@&#8203;barry3406](https://github.com/barry3406) in [#&#8203;2319](https://github.com/urfave/cli/pull/2319) - fix: show BoolWithInverseFlag aliases in help text by [@&#8203;wucm667](https://github.com/wucm667) in [#&#8203;2321](https://github.com/urfave/cli/pull/2321) #### New Contributors - [@&#8203;gabelluardo](https://github.com/gabelluardo) made their first contribution in [#&#8203;2298](https://github.com/urfave/cli/pull/2298) - [@&#8203;markshep-wbg](https://github.com/markshep-wbg) made their first contribution in [#&#8203;2287](https://github.com/urfave/cli/pull/2287) - [@&#8203;lawrence3699](https://github.com/lawrence3699) made their first contribution in [#&#8203;2309](https://github.com/urfave/cli/pull/2309) - [@&#8203;Yanhu007](https://github.com/Yanhu007) made their first contribution in [#&#8203;2310](https://github.com/urfave/cli/pull/2310) - [@&#8203;alliasgher](https://github.com/alliasgher) made their first contribution in [#&#8203;2311](https://github.com/urfave/cli/pull/2311) - [@&#8203;barry3406](https://github.com/barry3406) made their first contribution in [#&#8203;2317](https://github.com/urfave/cli/pull/2317) - [@&#8203;morozov](https://github.com/morozov) made their first contribution in [#&#8203;2316](https://github.com/urfave/cli/pull/2316) - [@&#8203;wucm667](https://github.com/wucm667) made their first contribution in [#&#8203;2321](https://github.com/urfave/cli/pull/2321) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.8.0...v3.9.0> ### [`v3.8.0`](https://github.com/urfave/cli/releases/tag/v3.8.0) [Compare Source](https://github.com/urfave/cli/compare/v3.7.0...v3.8.0) #### What's Changed - chore(deps): bump mkdocs-material from 9.7.1 to 9.7.2 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2267](https://github.com/urfave/cli/pull/2267) - chore(deps): bump mkdocs-material from 9.7.2 to 9.7.3 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2272](https://github.com/urfave/cli/pull/2272) - chore(deps): bump mkdocs-material from 9.7.3 to 9.7.4 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2276](https://github.com/urfave/cli/pull/2276) - Fix: check MutuallyExclusiveFlags across parent command chain by [@&#8203;siutsin](https://github.com/siutsin) in [#&#8203;2274](https://github.com/urfave/cli/pull/2274) - Modernize source code by [@&#8203;kolyshkin](https://github.com/kolyshkin) in [#&#8203;2289](https://github.com/urfave/cli/pull/2289) - flag: replace regexp use by [@&#8203;kolyshkin](https://github.com/kolyshkin) in [#&#8203;2288](https://github.com/urfave/cli/pull/2288) - chore(deps): bump mkdocs-material from 9.7.4 to 9.7.5 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2284](https://github.com/urfave/cli/pull/2284) - Fix:(issue\_2281) Remove incorrect check for local flag for set by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2290](https://github.com/urfave/cli/pull/2290) - Fix:(issue\_2275) Make flag action execution consistent by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2295](https://github.com/urfave/cli/pull/2295) - Fix:(issue\_2293) --flag="" no longer rejected as missing argument by [@&#8203;idelchi](https://github.com/idelchi) in [#&#8203;2297](https://github.com/urfave/cli/pull/2297) - Fix:(issue\_2292) Empty positional args no longer break parse loop by [@&#8203;idelchi](https://github.com/idelchi) in [#&#8203;2296](https://github.com/urfave/cli/pull/2296) #### New Contributors - [@&#8203;idelchi](https://github.com/idelchi) made their first contribution in [#&#8203;2297](https://github.com/urfave/cli/pull/2297) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.7.0...v3.8.0> ### [`v3.7.0`](https://github.com/urfave/cli/releases/tag/v3.7.0) [Compare Source](https://github.com/urfave/cli/compare/v3.6.2...v3.7.0) #### What's Changed - Fix: use the correct type name in the tracef message by [@&#8203;icholy](https://github.com/icholy) in [#&#8203;2251](https://github.com/urfave/cli/pull/2251) - chore(deps): bump mkdocs-git-revision-date-localized-plugin from 1.5.0 to 1.5.1 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2252](https://github.com/urfave/cli/pull/2252) - Fix:(issue\_2254) Fix incorrect handling of arg after short option token by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2255](https://github.com/urfave/cli/pull/2255) - feat: ShellComplete for fish by [@&#8203;marcusramberg](https://github.com/marcusramberg) in [#&#8203;2256](https://github.com/urfave/cli/pull/2256) - Fix: propagate MutuallyExclusiveFlags persistent flags to subcommands by [@&#8203;siutsin](https://github.com/siutsin) in [#&#8203;2266](https://github.com/urfave/cli/pull/2266) - feat: support dynamic fish completion by [@&#8203;Maks1mS](https://github.com/Maks1mS) in [#&#8203;2270](https://github.com/urfave/cli/pull/2270) - fix(help): show GLOBAL OPTIONS for leaf subcommands when HideHelpCommand is true by [@&#8203;TimSoethout](https://github.com/TimSoethout) in [#&#8203;2269](https://github.com/urfave/cli/pull/2269) #### New Contributors - [@&#8203;marcusramberg](https://github.com/marcusramberg) made their first contribution in [#&#8203;2256](https://github.com/urfave/cli/pull/2256) - [@&#8203;siutsin](https://github.com/siutsin) made their first contribution in [#&#8203;2266](https://github.com/urfave/cli/pull/2266) - [@&#8203;TimSoethout](https://github.com/TimSoethout) made their first contribution in [#&#8203;2269](https://github.com/urfave/cli/pull/2269) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.6.2...v3.7.0> ### [`v3.6.2`](https://github.com/urfave/cli/releases/tag/v3.6.2) [Compare Source](https://github.com/urfave/cli/compare/v3.6.1...v3.6.2) #### What's Changed - chore(deps): bump actions/checkout from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2230](https://github.com/urfave/cli/pull/2230) - chore(deps): bump mkdocs-material from 9.6.23 to 9.7.0 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2231](https://github.com/urfave/cli/pull/2231) - Improve test coverage by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2236](https://github.com/urfave/cli/pull/2236) - Add more tests to improve code coverage by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2237](https://github.com/urfave/cli/pull/2237) - Fix:(issue\_2238) Dont process flags for completion command by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2239](https://github.com/urfave/cli/pull/2239) - Fix:(issue\_2228) Fix for default command by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2232](https://github.com/urfave/cli/pull/2232) - chore(deps): bump mkdocs-material from 9.7.0 to 9.7.1 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2242](https://github.com/urfave/cli/pull/2242) - Docs: correct typo in migration guide by [@&#8203;kzygmans](https://github.com/kzygmans) in [#&#8203;2243](https://github.com/urfave/cli/pull/2243) - Fix:(issue\_2244) Dont check req flags for help and completion commands by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2245](https://github.com/urfave/cli/pull/2245) - Only show separator if command has usage text by [@&#8203;mikecluck](https://github.com/mikecluck) in [#&#8203;2247](https://github.com/urfave/cli/pull/2247) #### New Contributors - [@&#8203;kzygmans](https://github.com/kzygmans) made their first contribution in [#&#8203;2243](https://github.com/urfave/cli/pull/2243) - [@&#8203;mikecluck](https://github.com/mikecluck) made their first contribution in [#&#8203;2247](https://github.com/urfave/cli/pull/2247) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.6.1...v3.6.2> ### [`v3.6.1`](https://github.com/urfave/cli/releases/tag/v3.6.1) [Compare Source](https://github.com/urfave/cli/compare/v3.6.0...v3.6.1) #### What's Changed - chore(deps): bump golangci/golangci-lint-action from 8 to 9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2222](https://github.com/urfave/cli/pull/2222) - feat: add ability to override usage text of default help command by [@&#8203;Maks1mS](https://github.com/Maks1mS) in [#&#8203;2196](https://github.com/urfave/cli/pull/2196) - Fix:(issue\_2223) Fix incorrect processing of empty value after = by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2224](https://github.com/urfave/cli/pull/2224) #### New Contributors - [@&#8203;Maks1mS](https://github.com/Maks1mS) made their first contribution in [#&#8203;2196](https://github.com/urfave/cli/pull/2196) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.6.0...v3.6.1> ### [`v3.6.0`](https://github.com/urfave/cli/releases/tag/v3.6.0) [Compare Source](https://github.com/urfave/cli/compare/v3.5.0...v3.6.0) #### What's Changed - support parallel running of commands by [@&#8203;oprudkyi](https://github.com/oprudkyi) in [#&#8203;2215](https://github.com/urfave/cli/pull/2215) - Fix:(issue\_2208) Fix local flag by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2211](https://github.com/urfave/cli/pull/2211) - chore(deps): bump the python-packages group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2219](https://github.com/urfave/cli/pull/2219) - Call actions on flags set from env by [@&#8203;malclocke](https://github.com/malclocke) in [#&#8203;2221](https://github.com/urfave/cli/pull/2221) #### New Contributors - [@&#8203;malclocke](https://github.com/malclocke) made their first contribution in [#&#8203;2221](https://github.com/urfave/cli/pull/2221) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.5.0...v3.6.0> ### [`v3.5.0`](https://github.com/urfave/cli/releases/tag/v3.5.0) [Compare Source](https://github.com/urfave/cli/compare/v3.4.1...v3.5.0) #### What's Changed - Update mkdocs reqs by [@&#8203;meatballhat](https://github.com/meatballhat) in [#&#8203;2190](https://github.com/urfave/cli/pull/2190) - Allow the user to stop processing flags after seeing N args by [@&#8203;adrian-thurston](https://github.com/adrian-thurston) in [#&#8203;2163](https://github.com/urfave/cli/pull/2163) - chore(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2194](https://github.com/urfave/cli/pull/2194) - chore(deps): bump mkdocs-material from 9.6.16 to 9.6.18 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2195](https://github.com/urfave/cli/pull/2195) - chore(deps): bump actions/setup-go from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2198](https://github.com/urfave/cli/pull/2198) - chore(deps): bump actions/setup-node from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2199](https://github.com/urfave/cli/pull/2199) - chore(deps): bump actions/setup-python from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2200](https://github.com/urfave/cli/pull/2200) - chore(deps): bump github.com/stretchr/testify from 1.11.0 to 1.11.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2197](https://github.com/urfave/cli/pull/2197) - chore(deps): bump mkdocs-material from 9.6.18 to 9.6.19 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2201](https://github.com/urfave/cli/pull/2201) - chore(deps): bump mkdocs-material from 9.6.19 to 9.6.20 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2202](https://github.com/urfave/cli/pull/2202) - feat: add name of argument into error message when parsing fails by [@&#8203;oprudkyi](https://github.com/oprudkyi) in [#&#8203;2203](https://github.com/urfave/cli/pull/2203) - chore(deps): bump mkdocs-material from 9.6.20 to 9.6.21 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2204](https://github.com/urfave/cli/pull/2204) - add space between arguments usage by [@&#8203;dimfu](https://github.com/dimfu) in [#&#8203;2207](https://github.com/urfave/cli/pull/2207) - chore(deps): bump mkdocs-material from 9.6.21 to 9.6.22 in the python-packages group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2213](https://github.com/urfave/cli/pull/2213) - Fix: Make DefaultText behaviour consistent by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2214](https://github.com/urfave/cli/pull/2214) #### New Contributors - [@&#8203;adrian-thurston](https://github.com/adrian-thurston) made their first contribution in [#&#8203;2163](https://github.com/urfave/cli/pull/2163) - [@&#8203;oprudkyi](https://github.com/oprudkyi) made their first contribution in [#&#8203;2203](https://github.com/urfave/cli/pull/2203) - [@&#8203;dimfu](https://github.com/dimfu) made their first contribution in [#&#8203;2207](https://github.com/urfave/cli/pull/2207) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.4.1...v3.5.0> ### [`v3.4.1`](https://github.com/urfave/cli/releases/tag/v3.4.1) [Compare Source](https://github.com/urfave/cli/compare/v3.4.0...v3.4.1) #### What's Changed - Use recommended GitHub Actions runner labels by [@&#8203;meatballhat](https://github.com/meatballhat) in [#&#8203;2181](https://github.com/urfave/cli/pull/2181) - chore(deps): bump actions/checkout from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2179](https://github.com/urfave/cli/pull/2179) - Document that `v3` series is recommended for new development by [@&#8203;meatballhat](https://github.com/meatballhat) in [#&#8203;2186](https://github.com/urfave/cli/pull/2186) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.4.0...v3.4.1> ### [`v3.4.0`](https://github.com/urfave/cli/releases/tag/v3.4.0) [Compare Source](https://github.com/urfave/cli/compare/v3.3.9...v3.4.0) #### What's Changed - Export help display functions as variables to allow custom help display logic by [@&#8203;almas-x](https://github.com/almas-x) in [#&#8203;2150](https://github.com/urfave/cli/pull/2150) - Invoke OnUsageError when missing required flags by [@&#8203;MohitPanchariya](https://github.com/MohitPanchariya) in [#&#8203;2161](https://github.com/urfave/cli/pull/2161) - Fix:(issue\_2169) Allow trim space for string slice flags by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2171](https://github.com/urfave/cli/pull/2171) - Add example of flag groups to docs by [@&#8203;jllovet](https://github.com/jllovet) in [#&#8203;2178](https://github.com/urfave/cli/pull/2178) - Add installation instructions for gfmrun by [@&#8203;jllovet](https://github.com/jllovet) in [#&#8203;2177](https://github.com/urfave/cli/pull/2177) - Ensure public vars reference public types by [@&#8203;meatballhat](https://github.com/meatballhat) in [#&#8203;2180](https://github.com/urfave/cli/pull/2180) #### New Contributors - [@&#8203;almas-x](https://github.com/almas-x) made their first contribution in [#&#8203;2150](https://github.com/urfave/cli/pull/2150) - [@&#8203;MohitPanchariya](https://github.com/MohitPanchariya) made their first contribution in [#&#8203;2161](https://github.com/urfave/cli/pull/2161) - [@&#8203;jllovet](https://github.com/jllovet) made their first contribution in [#&#8203;2178](https://github.com/urfave/cli/pull/2178) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.9...v3.4.0> ### [`v3.3.9`](https://github.com/urfave/cli/releases/tag/v3.3.9) [Compare Source](https://github.com/urfave/cli/compare/v3.3.8...v3.3.9) #### What's Changed - Fix typos in documentation for customizations and full API example by [@&#8203;amarjit03](https://github.com/amarjit03) in [#&#8203;2165](https://github.com/urfave/cli/pull/2165) - Update advanced.md by [@&#8203;thetillhoff](https://github.com/thetillhoff) in [#&#8203;2170](https://github.com/urfave/cli/pull/2170) #### New Contributors - [@&#8203;amarjit03](https://github.com/amarjit03) made their first contribution in [#&#8203;2165](https://github.com/urfave/cli/pull/2165) - [@&#8203;thetillhoff](https://github.com/thetillhoff) made their first contribution in [#&#8203;2170](https://github.com/urfave/cli/pull/2170) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.8...v3.3.9> ### [`v3.3.8`](https://github.com/urfave/cli/releases/tag/v3.3.8) [Compare Source](https://github.com/urfave/cli/compare/v3.3.7...v3.3.8) #### What's Changed - Remove "alpha" wording around `v3` series by [@&#8203;meatballhat](https://github.com/meatballhat) in [#&#8203;2155](https://github.com/urfave/cli/pull/2155) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.7...v3.3.8> ### [`v3.3.7`](https://github.com/urfave/cli/releases/tag/v3.3.7) [Compare Source](https://github.com/urfave/cli/compare/v3.3.6...v3.3.7) #### What's Changed - fix: add missing `IsLocal` for BoolWithInverseFlag by [@&#8203;huiyifyj](https://github.com/huiyifyj) in [#&#8203;2151](https://github.com/urfave/cli/pull/2151) - Fix OnUsageError Trigger When Error Is Caused by Mutually Exclusive Flags by [@&#8203;Ali-Doustkani](https://github.com/Ali-Doustkani) in [#&#8203;2152](https://github.com/urfave/cli/pull/2152) #### New Contributors - [@&#8203;Ali-Doustkani](https://github.com/Ali-Doustkani) made their first contribution in [#&#8203;2152](https://github.com/urfave/cli/pull/2152) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.6...v3.3.7> ### [`v3.3.6`](https://github.com/urfave/cli/releases/tag/v3.3.6) [Compare Source](https://github.com/urfave/cli/compare/v3.3.5...v3.3.6) #### What's Changed - Fish completions with identically named sub-commands now work by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2130](https://github.com/urfave/cli/pull/2130) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.5...v3.3.6> ### [`v3.3.5`](https://github.com/urfave/cli/releases/tag/v3.3.5) [Compare Source](https://github.com/urfave/cli/compare/v3.3.4...v3.3.5) #### What's Changed - Fix:(issue\_2137) Ensure default value for bool with inverse flag is h… by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2138](https://github.com/urfave/cli/pull/2138) - Fix:(issue\_2131) Show help text for BoolWithInverseFlag by [@&#8203;Juneezee](https://github.com/Juneezee) in [#&#8203;2142](https://github.com/urfave/cli/pull/2142) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.4...v3.3.5> ### [`v3.3.4`](https://github.com/urfave/cli/releases/tag/v3.3.4) [Compare Source](https://github.com/urfave/cli/compare/v3.3.3...v3.3.4) #### What's Changed - Fix Docs(issue\_2125) Add PathFlag to StringFlag migration by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2136](https://github.com/urfave/cli/pull/2136) - fix: remove extraneous space from subcommand help template by [@&#8203;G-Rath](https://github.com/G-Rath) in [#&#8203;2140](https://github.com/urfave/cli/pull/2140) - Fix:(issue\_2135) Correct formatting of default subcommand USAGE text by [@&#8203;zzspoon](https://github.com/zzspoon) in [#&#8203;2139](https://github.com/urfave/cli/pull/2139) #### New Contributors - [@&#8203;zzspoon](https://github.com/zzspoon) made their first contribution in [#&#8203;2139](https://github.com/urfave/cli/pull/2139) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.3...v3.3.4> ### [`v3.3.3`](https://github.com/urfave/cli/releases/tag/v3.3.3) [Compare Source](https://github.com/urfave/cli/compare/v3.3.2...v3.3.3) #### What's Changed - Simpler top-level context detection for fish completions by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2121](https://github.com/urfave/cli/pull/2121) - Fish completion inside hidden commands by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2122](https://github.com/urfave/cli/pull/2122) - chore(deps): bump golangci/golangci-lint-action from 7 to 8 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;2123](https://github.com/urfave/cli/pull/2123) - fix: off-by-one in timestamp parsing by [@&#8203;nickajacks1](https://github.com/nickajacks1) in [#&#8203;2127](https://github.com/urfave/cli/pull/2127) - Fish completions tests invokes setup by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2124](https://github.com/urfave/cli/pull/2124) - Fix docs by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2128](https://github.com/urfave/cli/pull/2128) #### New Contributors - [@&#8203;nickajacks1](https://github.com/nickajacks1) made their first contribution in [#&#8203;2127](https://github.com/urfave/cli/pull/2127) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.2...v3.3.3> ### [`v3.3.2`](https://github.com/urfave/cli/releases/tag/v3.3.2) [Compare Source](https://github.com/urfave/cli/compare/v3.3.1...v3.3.2) #### What's Changed - Add docs for advanced value source by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2119](https://github.com/urfave/cli/pull/2119) - docs: add renames to v3 migration doc by [@&#8203;G-Rath](https://github.com/G-Rath) in [#&#8203;2111](https://github.com/urfave/cli/pull/2111) #### New Contributors - [@&#8203;G-Rath](https://github.com/G-Rath) made their first contribution in [#&#8203;2111](https://github.com/urfave/cli/pull/2111) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.1...v3.3.2> ### [`v3.3.1`](https://github.com/urfave/cli/releases/tag/v3.3.1) [Compare Source](https://github.com/urfave/cli/compare/v3.3.0...v3.3.1) #### What's Changed - Avoid suggesting files in fish command completions. by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2114](https://github.com/urfave/cli/pull/2114) - Cleanup docs by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2118](https://github.com/urfave/cli/pull/2118) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.3.0...v3.3.1> ### [`v3.3.0`](https://github.com/urfave/cli/releases/tag/v3.3.0) [Compare Source](https://github.com/urfave/cli/compare/v3.2.0...v3.3.0) #### What's Changed - Add v3 issue template by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2104](https://github.com/urfave/cli/pull/2104) - Fix:(issue\_2105) Ensure fish completion works by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2106](https://github.com/urfave/cli/pull/2106) - add test for MutuallyExclusiveFlags with After by [@&#8203;bystones](https://github.com/bystones) in [#&#8203;2107](https://github.com/urfave/cli/pull/2107) - use correct context in After function with subcommand by [@&#8203;bystones](https://github.com/bystones) in [#&#8203;2108](https://github.com/urfave/cli/pull/2108) - Enable to customize completion commands by [@&#8203;suzuki-shunsuke](https://github.com/suzuki-shunsuke) in [#&#8203;2103](https://github.com/urfave/cli/pull/2103) - Fish completions no longer suggest subcommands that have already been picked by [@&#8203;bittrance](https://github.com/bittrance) in [#&#8203;2117](https://github.com/urfave/cli/pull/2117) - feat: adds support for explicit `float32` and `float64` by [@&#8203;ldez](https://github.com/ldez) in [#&#8203;2112](https://github.com/urfave/cli/pull/2112) #### New Contributors - [@&#8203;bystones](https://github.com/bystones) made their first contribution in [#&#8203;2107](https://github.com/urfave/cli/pull/2107) - [@&#8203;bittrance](https://github.com/bittrance) made their first contribution in [#&#8203;2117](https://github.com/urfave/cli/pull/2117) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.2.0...v3.3.0> ### [`v3.2.0`](https://github.com/urfave/cli/releases/tag/v3.2.0) [Compare Source](https://github.com/urfave/cli/compare/v3.1.1...v3.2.0) **Breaking change IntFlag now uses int type and not int64. Please change to using Int64Flag for int64 types. Similar behavior for UintFlag as well. See <https://pkg.go.dev/github.com/urfave/cli/v3> for a full list of flag types. See [#&#8203;2094](https://github.com/urfave/cli/issues/2094) for full patch for this** #### What's Changed - chore: Bump golangci-lint to v2 by [@&#8203;mrueg](https://github.com/mrueg) in [#&#8203;2083](https://github.com/urfave/cli/pull/2083) - Fix docs for shell completions by [@&#8203;antimatter96](https://github.com/antimatter96) in [#&#8203;2090](https://github.com/urfave/cli/pull/2090) - docs: improve migration guides render by [@&#8203;ldez](https://github.com/ldez) in [#&#8203;2091](https://github.com/urfave/cli/pull/2091) - docs: improve migration guide v3 by [@&#8203;ldez](https://github.com/ldez) in [#&#8203;2093](https://github.com/urfave/cli/pull/2093) - feat!: add more integers and unsigned integers type flags by [@&#8203;somebadcode](https://github.com/somebadcode) in [#&#8203;2094](https://github.com/urfave/cli/pull/2094) - PR-2094: Fix docs by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2099](https://github.com/urfave/cli/pull/2099) - Fix:(PR-2094) Update docs for new types by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2100](https://github.com/urfave/cli/pull/2100) - Fix:(issue\_2056) Add cmd.XXXArgs() functions for retrieving args by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2088](https://github.com/urfave/cli/pull/2088) - Add docs for arg types by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2101](https://github.com/urfave/cli/pull/2101) #### New Contributors - [@&#8203;antimatter96](https://github.com/antimatter96) made their first contribution in [#&#8203;2090](https://github.com/urfave/cli/pull/2090) - [@&#8203;ldez](https://github.com/ldez) made their first contribution in [#&#8203;2091](https://github.com/urfave/cli/pull/2091) - [@&#8203;somebadcode](https://github.com/somebadcode) made their first contribution in [#&#8203;2094](https://github.com/urfave/cli/pull/2094) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.1.1...v3.2.0> ### [`v3.1.1`](https://github.com/urfave/cli/compare/v3.1.0...v3.1.1) [Compare Source](https://github.com/urfave/cli/compare/v3.1.0...v3.1.1) ### [`v3.1.0`](https://github.com/urfave/cli/releases/tag/v3.1.0) [Compare Source](https://github.com/urfave/cli/compare/v2.27.7...v3.1.0) #### What's Changed - go.mod: Require go1.22 by [@&#8203;mrueg](https://github.com/mrueg) in [#&#8203;2026](https://github.com/urfave/cli/pull/2026) - Fix:(issue\_2030) Add support for trailing hypen for short options by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2031](https://github.com/urfave/cli/pull/2031) - Run Before actions after setting up subcommand by [@&#8203;fjl](https://github.com/fjl) in [#&#8203;2028](https://github.com/urfave/cli/pull/2028) - The example have some problem in api by [@&#8203;jokemanfire](https://github.com/jokemanfire) in [#&#8203;2039](https://github.com/urfave/cli/pull/2039) - Rename "Bash Completions" to "Shell Completions" by [@&#8203;abitrolly](https://github.com/abitrolly) in [#&#8203;2044](https://github.com/urfave/cli/pull/2044) - Support root level map keys in map sources by [@&#8203;lukasbindreiter](https://github.com/lukasbindreiter) in [#&#8203;2047](https://github.com/urfave/cli/pull/2047) - while print flag , the placeholder if need but not set. by [@&#8203;jokemanfire](https://github.com/jokemanfire) in [#&#8203;2043](https://github.com/urfave/cli/pull/2043) - Add dependabot by [@&#8203;mrueg](https://github.com/mrueg) in [#&#8203;2025](https://github.com/urfave/cli/pull/2025) - Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;2054](https://github.com/urfave/cli/pull/2054) - Bump golangci/golangci-lint-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;2053](https://github.com/urfave/cli/pull/2053) - Bump codecov/codecov-action from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;2052](https://github.com/urfave/cli/pull/2052) - Fix:(issue\_2032) Support for post parse config loading by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2033](https://github.com/urfave/cli/pull/2033) - Fix:(issue\_2066) Remove dependency on golang flag library by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2074](https://github.com/urfave/cli/pull/2074) - Fix:(issue\_1891) Roll out v3 docs by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2080](https://github.com/urfave/cli/pull/2080) - Fix:(issue\_2077) Make sure onUsageError is invoked for command when a… by [@&#8203;dearchap](https://github.com/dearchap) in [#&#8203;2081](https://github.com/urfave/cli/pull/2081) #### New Contributors - [@&#8203;mrueg](https://github.com/mrueg) made their first contribution in [#&#8203;2026](https://github.com/urfave/cli/pull/2026) - [@&#8203;jokemanfire](https://github.com/jokemanfire) made their first contribution in [#&#8203;2039](https://github.com/urfave/cli/pull/2039) - [@&#8203;lukasbindreiter](https://github.com/lukasbindreiter) made their first contribution in [#&#8203;2047](https://github.com/urfave/cli/pull/2047) - [@&#8203;dependabot](https://github.com/dependabot) made their first contribution in [#&#8203;2054](https://github.com/urfave/cli/pull/2054) **Full Changelog**: <https://github.com/urfave/cli/compare/v3.0.0-beta1.01...v3.1.0> </details> <details> <summary>yuin/goldmark-emoji (github.com/yuin/goldmark-emoji)</summary> ### [`v2.0.0`](https://github.com/yuin/goldmark-emoji/releases/tag/v2.0.0) [Compare Source](https://github.com/yuin/goldmark-emoji/compare/v1.0.6...v2.0.0) - feat: initial commit of v2 </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "before 5am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjQuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI2NC4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWwiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
alex force-pushed renovate/major-major-updates from bfeb906207 to 51ab24a426 2026-07-22 02:08:51 +00:00 Compare
alex changed title from fix(deps): update major updates (major) to fix(deps): update major updates (major) - abandoned 2026-07-23 02:02:26 +00:00
Author
Owner

Autoclosing Skipped

This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.

### Autoclosing Skipped This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.
alex force-pushed renovate/major-major-updates from 51ab24a426 to 396904c46d 2026-07-24 02:06:47 +00:00 Compare
alex changed title from fix(deps): update major updates (major) - abandoned to Update major updates (major) 2026-07-24 02:13:46 +00:00
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/major-major-updates:renovate/major-major-updates
git switch renovate/major-major-updates

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch devel
git merge --no-ff renovate/major-major-updates
git switch renovate/major-major-updates
git rebase devel
git switch devel
git merge --ff-only renovate/major-major-updates
git switch renovate/major-major-updates
git rebase devel
git switch devel
git merge --no-ff renovate/major-major-updates
git switch devel
git merge --squash renovate/major-major-updates
git switch devel
git merge --ff-only renovate/major-major-updates
git switch devel
git merge renovate/major-major-updates
git push origin devel
Sign in to join this conversation.
No reviewers
No labels
dependencies
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
alex/opengist!44
No description provided.