v1.69.0
- Add sortkeys by @pjebs in https://github.com/valyala/fasthttp/pull/2118
- Expose header parsing error variables by @ReneWerner87 in https://github.com/valyala/fasthttp/pull/2096
- Add documentation that modifying during iteration can panic by @erikdubbelboer in https://github.com/valyala/fasthttp/pull/2122
- update readme by @pjebs in https://github.com/valyala/fasthttp/pull/2114
- chore(deps): bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2092
- chore(deps): bump golangci/golangci-lint-action from 8 to 9 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2095
- chore(deps): bump golang.org/x/sys from 0.37.0 to 0.38.0 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2094
- chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.44.0 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2098
- chore(deps): bump golang.org/x/net from 0.46.0 to 0.47.0 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2097
- chore(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2099
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2101
- chore(deps): bump github.com/klauspost/compress from 1.18.1 to 1.18.2 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2103
- chore(deps): bump golang.org/x/net from 0.47.0 to 0.48.0 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2109
- chore(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2111
- chore(deps): bump securego/gosec from 2.22.10 to 2.22.11 by @dependabot[bot] in https://github.com/valyala/fasthttp/pull/2110
Full Changelog: https://github.com/valyala/fasthttp/compare/v1.68.0...v1.69.0
Wails v3.0.0-alpha.57
- Replace various debug logs from Info to Debug (by @mbaklor)
- Fix SaveFileDialog.SetFilename() having no effect on Linux (#4841) by @samstanier
- Fix drop coordinates showing as undefined in drag-n-drop example
- Fix macOS app bundle creation failing when APP_NAME contains spaces (brace expansion issue)
- Fix index out of bounds panic on Windows when calling service methods (revert goccy/go-json)
🤖 This is an automated nightly release generated from the latest changes in the v3-alpha branch.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.57
Wails v3.0.0-alpha.56
- Add
internal/libpathpackage for finding native library paths on Linux with parallel search, caching, and support for Flatpak/Snap/Nix
- BREAKING: Rename
EnableDragAndDroptoEnableFileDropin window options - BREAKING: Rename
DropZoneDetailstoDropTargetDetailsin event context - BREAKING: Rename
DropZoneDetails()method toDropTargetDetails()onWindowEventContext - BREAKING: Remove
WindowDropZoneFilesDroppedevent, useWindowFilesDroppedinstead - BREAKING: Change HTML attribute from
data-wails-dropzonetodata-file-drop-target - BREAKING: Change CSS hover class from
wails-dropzone-hovertofile-drop-target-active - BREAKING: Remove
DragEffect,OnEnterEffect,OnOverEffectoptions from Windows (were part of removed IDropTarget)
- Fix file drag-and-drop on Windows not working at non-100% display scaling
- Fix HTML5 internal drag-and-drop being broken when file drop was enabled on Windows
- Fix file drop coordinates being in wrong pixel space on Windows (physical vs CSS pixels)
- Fix file drag-and-drop on Linux not working reliably with hover effects
- Fix HTML5 internal drag-and-drop being broken when file drop was enabled on Linux
- Remove native
IDropTargetimplementation on Windows in favor of JavaScript-based approach (matches v2 behavior)
🤖 This is an automated nightly release generated from the latest changes in the v3-alpha branch.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.56
New Year new Fyne release :) - lots of bug fixes
- Added Japanese translation
- Crash in accordion (#3966)
- Extended list does not focus correctly when tapped (#5997)
- TextGrid: Ensure we are refreshing the correct row (#6023)
- Entry doesn't lose focus when clicking on button elsewhere (#5107)
- Mouse clicks missed (#4672)
- Possible crash when form is truncated when an Entry is focused
- Alt-Tab'ing should not open MainMenu (#2998)
- Wayland: ALT key steals focus to the menubar if it exists (#5960)
- Extending the build-In theme only works fully when theme is set after app has started (#6056)
- Multi-segment RichText not right aligning correctly (#6060)
Wails v3.0.0-alpha.55
- Switch to goccy/go-json for all runtime JSON processing (method bindings, events, webview requests, notifications, kvstore), improving performance by 21-63% and reducing memory allocations by 40-60%
- Optimize BoundMethod struct layout and cache isVariadic flag to reduce per-call overhead
- Use stack-allocated argument buffer for methods with <=8 arguments to avoid heap allocations
- Optimize result collection in method calls to avoid slice allocation for single return values
- Use sync.Map for MIME type cache to improve concurrent performance
- Use buffer pool for HTTP transport request body reading
- Lazily allocate CloseNotify channel in content type sniffer to reduce per-request allocations
- Remove debug CSS logging from asset server
- Expand MIME type extension map to cover 50+ common web formats (fonts, audio, video, etc.)
- Update all commands in Taskfile.yml files for all operating systems to accommodate spaces in variables such as
APP_NAMEby @ndianabasi
- Remove github.com/wailsapp/mimetype dependency in favor of expanded extension map + stdlib http.DetectContentType, reducing binary size by ~1.2MB
- Remove gopkg.in/ini.v1 dependency by implementing minimal .desktop file parser for Linux file explorer, saving ~45KB
- Remove samber/lo from runtime code by using Go 1.21+ stdlib slices package and minimal internal helpers, saving ~310KB
🤖 This is an automated nightly release generated from the latest changes in the v3-alpha branch.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.55
v4.15.0
Security
WARNING: If your application relies on cross-origin or same-site (same subdomain) requests do not blindly push this version to production
The CSRF middleware now supports the Sec-Fetch-Site header as a modern, defense-in-depth approach to CSRF protection, implementing the OWASP-recommended Fetch Metadata API alongside the traditional token-based mechanism.
How it works:
Modern browsers automatically send the Sec-Fetch-Site header with all requests, indicating the relationship between the request origin and the target. The middleware uses this to make security decisions:
same-originornone: Requests are allowed (exact origin match or direct user navigation)same-site: Falls back to token validation (e.g., subdomain to main domain)cross-site: Blocked by default with 403 error for unsafe methods (POST, PUT, DELETE, PATCH)
For browsers that don't send this header (older browsers), the middleware seamlessly falls back to traditional token-based CSRF protection.
New Configuration Options:
TrustedOrigins []string: Allowlist specific origins for cross-site requests (useful for OAuth callbacks, webhooks)AllowSecFetchSiteFunc func(echo.Context) (bool, error): Custom logic for same-site/cross-site request validation
Example:
e.Use(middleware.CSRFWithConfig(middleware.CSRFConfig{
// Allow OAuth callbacks from trusted provider
TrustedOrigins: []string{"https://oauth-provider.com"},
// Custom validation for same-site requests
AllowSecFetchSiteFunc: func(c echo.Context) (bool, error) {
// Your custom authorization logic here
return validateCustomAuth(c), nil
// return true, err // blocks request with error
// return true, nil // allows CSRF request through
// return false, nil // falls back to legacy token logic
},
}))
PR: https://github.com/labstack/echo/pull/2858
Type-Safe Generic Parameter Binding
-
Added generic functions for type-safe parameter extraction and context access by @aldas in https://github.com/labstack/echo/pull/2856
Echo now provides generic functions for extracting path, query, and form parameters with automatic type conversion, eliminating manual string parsing and type assertions.
New Functions:
- Path parameters:
PathParam[T],PathParamOr[T] - Query parameters:
QueryParam[T],QueryParamOr[T],QueryParams[T],QueryParamsOr[T] - Form values:
FormParam[T],FormParamOr[T],FormParams[T],FormParamsOr[T] - Context store:
ContextGet[T],ContextGetOr[T]
Supported Types: Primitives (
bool,string,int/uintvariants,float32/float64),time.Duration,time.Time(with custom layouts and Unix timestamp support), and custom types implementingBindUnmarshaler,TextUnmarshaler, orJSONUnmarshaler.Example:
// Before: Manual parsing idStr := c.Param("id") id, err := strconv.Atoi(idStr) // After: Type-safe with automatic parsing id, err := echo.PathParam[int](c, "id") // With default values page, err := echo.QueryParamOr[int](c, "page", 1) limit, err := echo.QueryParamOr[int](c, "limit", 20) // Type-safe context access (no more panics from type assertions) user, err := echo.ContextGet[*User](c, "user")
- Path parameters:
PR: https://github.com/labstack/echo/pull/2856
DEPRECATION NOTICE Timeout Middleware Deprecated - Use ContextTimeout Instead
The middleware.Timeout middleware has been deprecated due to fundamental architectural issues that cause data races. Use middleware.ContextTimeout or middleware.ContextTimeoutWithConfig instead.
Why is this being deprecated?
The Timeout middleware manipulates response writers across goroutine boundaries, which causes data races that cannot be reliably fixed without a complete architectural redesign. The middleware:
- Swaps the response writer using
http.TimeoutHandler - Must be the first middleware in the chain (fragile constraint)
- Can cause races with other middleware (Logger, metrics, custom middleware)
- Has been the source of multiple race condition fixes over the years
What should you use instead?
The ContextTimeout middleware (available since v4.12.0) provides timeout functionality using Go's standard context mechanism. It is:
- Race-free by design
- Can be placed anywhere in the middleware chain
- Simpler and more maintainable
- Compatible with all other middleware
Migration Guide:
// Before (deprecated):
e.Use(middleware.Timeout())
// After (recommended):
e.Use(middleware.ContextTimeout(30 * time.Second))
Important Behavioral Differences:
-
Handler cooperation required: With ContextTimeout, your handlers must check
context.Done()for cooperative cancellation. The old Timeout middleware would send a 503 response regardless of handler cooperation, but had data race issues. -
Error handling: ContextTimeout returns errors through the standard error handling flow. Handlers that receive
context.DeadlineExceededshould handle it appropriately:
e.GET("/long-task", func(c echo.Context) error {
ctx := c.Request().Context()
// Example: database query with context
result, err := db.QueryContext(ctx, "SELECT * FROM large_table")
if err != nil {
if errors.Is(err, context.DeadlineExceeded) {
// Handle timeout
return echo.NewHTTPError(http.StatusServiceUnavailable, "Request timeout")
}
return err
}
return c.JSON(http.StatusOK, result)
})
- Background tasks: For long-running background tasks, use goroutines with context:
e.GET("/async-task", func(c echo.Context) error {
ctx := c.Request().Context()
resultCh := make(chan Result, 1)
errCh := make(chan error, 1)
go func() {
result, err := performLongTask(ctx)
if err != nil {
errCh <- err
return
}
resultCh <- result
}()
select {
case result := <-resultCh:
return c.JSON(http.StatusOK, result)
case err := <-errCh:
return err
case <-ctx.Done():
return echo.NewHTTPError(http.StatusServiceUnavailable, "Request timeout")
}
})
Full Changelog: https://github.com/labstack/echo/compare/v4.14.0...v4.15.0
Version 3.0.6 Bug Fix Release
This address some minor bug fixes, and it reduces some of the writing we do to the terminal when changing attributes and using color.
Most of the rest of the commits in this release are related to improving test coverage, and enhancing the mock terminal backend. Note that the very useless SimScreen has been removed, as the MockBackend is far more functional.
Also some demos have moved from _demos to demos -- and they are now verified in the CI/CD. We will be doing this with the rest of the demos over time.
- refactor: Work in progress on new emulator backend by @gdamore in https://github.com/gdamore/tcell/pull/925
- test: cover the rest of the color API by @gdamore in https://github.com/gdamore/tcell/pull/927
- fix: Fix edge for color API (invalid numeric color), add tests for ed… by @gdamore in https://github.com/gdamore/tcell/pull/928
- Continued progress on emulation and tests thereof by @gdamore in https://github.com/gdamore/tcell/pull/929
- test: Add test for cursor mode (25) by @gdamore in https://github.com/gdamore/tcell/pull/930
- test: Add test for automargin by @gdamore in https://github.com/gdamore/tcell/pull/931
- Fix wide encoding, and add unicode tests for emulator by @gdamore in https://github.com/gdamore/tcell/pull/932
- chore: move Tty to sub-subpackage (including WindowSize) by @gdamore in https://github.com/gdamore/tcell/pull/933
- fix(emulator): Discriminate between deleted cells and cells with a sp… by @gdamore in https://github.com/gdamore/tcell/pull/934
- feat(emulator): Add more SGR attributes, basic ANSI color, including … by @gdamore in https://github.com/gdamore/tcell/pull/935
- feat(emulator): Start of keyboard processing (very preliminary) by @gdamore in https://github.com/gdamore/tcell/pull/936
- Use hello world with mock to increase coverage (and fix bugs it uncovered) by @gdamore in https://github.com/gdamore/tcell/pull/937
- fix: Fix case of NO_COLOR being set but empty; added trivial screen i… by @gdamore in https://github.com/gdamore/tcell/pull/938
- refactor: Refactor the beep demo into a testable package by @gdamore in https://github.com/gdamore/tcell/pull/939
- feat(emulator): Add Titler, and tests for it. by @gdamore in https://github.com/gdamore/tcell/pull/940
- tests: support bits for webasm to support common tests, update style … by @gdamore in https://github.com/gdamore/tcell/pull/942
- feat: Complete legacy keyboard protocol for extra keys by @gdamore in https://github.com/gdamore/tcell/pull/943
- test: add missing linux and extra modifier tests by @gdamore in https://github.com/gdamore/tcell/pull/944
- fix(emulator): fix extended attributes response by @gdamore in https://github.com/gdamore/tcell/pull/945
- Improve legacy mapping in emulator by @gdamore in https://github.com/gdamore/tcell/pull/946
- docs: Add macOS status, and use custom logo lab for Windows 11 logo by @gdamore in https://github.com/gdamore/tcell/pull/947
- Various refactoring improvements, eliminate redundant SGR 39 / 49. by @gdamore in https://github.com/gdamore/tcell/pull/948
- chore: Minor improvements, fix possible bug in stopQ handling (windows) by @gdamore in https://github.com/gdamore/tcell/pull/949
- docs: improve the badges by @gdamore in https://github.com/gdamore/tcell/pull/950
- Add emulation resize support by @gdamore in https://github.com/gdamore/tcell/pull/951
- chore: color test should use mock instead of simscreen by @gdamore in https://github.com/gdamore/tcell/pull/952
- test: add basic mouse event test by @gdamore in https://github.com/gdamore/tcell/pull/953
- chore!: Drop the simulation screen and associated tests by @gdamore in https://github.com/gdamore/tcell/pull/954
- feat(emulator): Add tab stop support by @gdamore in https://github.com/gdamore/tcell/pull/955
- chore: move styles demo to demo and add test by @gdamore in https://github.com/gdamore/tcell/pull/956
- feat(emulator): Add VPR and VPA support by @gdamore in https://github.com/gdamore/tcell/pull/957
- feat(emulator): Add cursor application key mode by @gdamore in https://github.com/gdamore/tcell/pull/958
Full Changelog: https://github.com/gdamore/tcell/compare/v3.0.5...v3.0.6
v3.8.3-patch.15
- fix: group notification by @icey-yu in https://github.com/openimsdk/open-im-server/pull/3619
- fix: resolve deadlock in cache eviction and improve GetBatch implementation by @withchao in https://github.com/openimsdk/open-im-server/pull/3638
- feat: replace LongConn with ClientConn interface and simplify message handling by @withchao in https://github.com/openimsdk/open-im-server/pull/3645
- Fix/group member rejoin bug 3.8.3 by @zhouribin in https://github.com/openimsdk/open-im-server/pull/3646
- refactor: simplify platformID handling and enhance UserConnContext structure by @withchao in https://github.com/openimsdk/open-im-server/pull/3648
- fix(group): set max_seq to 0 when join group by @dsx137 in https://github.com/openimsdk/open-im-server/pull/3647
- @dsx137 made their first contribution in https://github.com/openimsdk/open-im-server/pull/3647
Full Changelog: https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.12...v3.8.3-patch.15
v3.0.0-beta.6
https://resty.dev/docs/upgrading-to-v3/
https://resty.dev/docs/new-features-and-enhancements/
- fix: disable sync.Pool usage with gzip.Reader temporarily by @jeevatkm in https://github.com/go-resty/resty/pull/1091, @khatibomar https://github.com/go-resty/resty/pull/1087
- feat: add in-memory marshal and unmarshal to complement existing encoder and decoder #1021 by @jeevatkm in https://github.com/go-resty/resty/pull/1082
- feat!: revise request content length implementation #971 by @jeevatkm in https://github.com/go-resty/resty/pull/1084
- feat!: add ratio-based circuit breaker and streamline methods #1026 by @jeevatkm in https://github.com/go-resty/resty/pull/1086
- feat: add circuit breaker on trigger and on state change hooks #1024 by @jeevatkm in https://github.com/go-resty/resty/pull/1089
- refactor: replace atomic counters with sliding window in circuit breaker by @aviyam181199 @liuzengh in https://github.com/go-resty/resty/pull/1088
- release: version bump to v3.0.0-beta.6 by @jeevatkm in https://github.com/go-resty/resty/pull/1092
- test: add digest auth post body content check in the test case #1009 by @jeevatkm in https://github.com/go-resty/resty/pull/1083
- @khatibomar made their first contribution in https://github.com/go-resty/resty/pull/1087
- @aviyam181199 made their first contribution in https://github.com/go-resty/resty/pull/1088
Full Changelog: https://github.com/go-resty/resty/compare/v3.0.0-beta.5...v3.0.0-beta.6
Wails v3.0.0-alpha.54
- Add
CollectionBehavioroption toMacWindowfor controlling window behavior across macOS Spaces and fullscreen (#4756) by @leaanthony
- Fix command argument error when executing 'build:universal:lipo:go' task on Linux by @wux1an
- Fix Docker error "undefined symbol: ___ubsan_handle_xxxxxxx" when running 'wails3 build GOOS=darwin GOARCH=arm64' on Linux by @wux1an
- Remove debug printf statements from Darwin URL scheme handler (#4834)
🤖 This is an automated nightly release generated from the latest changes in the v3-alpha branch.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.54