v3.0.0-rc.2
- Upgrade Guide: https://resty.dev/docs/upgrading-to-v3/
- fix: content decoder not found error when do not parse response is enabled and unsupported content-encoding header present by @jeevatkm in https://github.com/go-resty/resty/pull/1169
- fix: panics and state corruption in Request.Clone, Client.Close, SSE default logger, and invalid HTTP method handling by @g3m0sis in https://github.com/go-resty/resty/pull/1172
- @g3m0sis made their first contribution in https://github.com/go-resty/resty/pull/1172
Full Changelog: https://github.com/go-resty/resty/compare/v3.0.0-rc.1...v3.0.0-rc.2
v4.15.3 - Static encoded-separator route bypass fix (GHSA-vfp3-v2gw-7wfq)
- fix(static): reject encoded path separators that bypass route-level middleware by @vishr in https://github.com/labstack/echo/pull/3011
Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler (used by Static/StaticFS) and the Static middleware are affected. Backport of the v5 fix (#3009, released in v5.2.0). Thanks to @a-tt-om and @oran-gugu for reporting.
Full Changelog: https://github.com/labstack/echo/compare/v4.15.2...v4.15.3
Wails v3.0.0-alpha.102
- Add experimental
wails3 setupwizard for interactive project setup and dependency checking - Add
--jsonflag towails3 doctorfor machine-readable output - Add signing status section to
wails3 doctorcommand
- Fix npm detection on Linux to check PATH in addition to package manager
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.102
v5.2.0 - Static encoded-separator route bypass fix (GHSA-vfp3-v2gw-7wfq)
- fix(static): reject encoded path separators that bypass route-level middleware by @vishr in https://github.com/labstack/echo/pull/3009
- fix(middleware/static): don't double-unescape request path (#2599) by @vishr in https://github.com/labstack/echo/pull/3006
Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler/StaticFS and the Static middleware are affected. Thanks to @a-tt-om and @oran-gugu for reporting.
- feat(middleware): optional RateLimiterStoreContext for response headers (#2961) by @vishr in https://github.com/labstack/echo/pull/3007
- perf: optimize core hot paths (chain, context, binding, responses) by @vishr in https://github.com/labstack/echo/pull/3008
- fix(binder): include field name in bind conversion errors (#2629) by @vishr in https://github.com/labstack/echo/pull/3005
- fix(binder): serialize BindingError to structured JSON (#2771) by @vishr in https://github.com/labstack/echo/pull/3004
- fix(binder): MustUnixTime docs say time.Time, not time.Duration by @c-tonneslan in https://github.com/labstack/echo/pull/2988
- fix(middleware): reset ContentLength after gzip decompression by @shblue21 in https://github.com/labstack/echo/pull/3000
- fix(middleware/proxy): append RealIP to X-Forwarded-For for WebSocket requests by @kawaway in https://github.com/labstack/echo/pull/2994
- Fix proxy panic when balancer has no targets by @shblue21 in https://github.com/labstack/echo/pull/2977
- fix(middleware): correct documented KeyAuth KeyLookup default by @leestana01 in https://github.com/labstack/echo/pull/2992
- test: lock in v5 group route method-handling (405 + OPTIONS) by @vishr in https://github.com/labstack/echo/pull/3003
- docs: liveness signals in README + public ROADMAP by @vishr in https://github.com/labstack/echo/pull/3002
- Fix typos in CSRFConfig comments by @shblue21 in https://github.com/labstack/echo/pull/2979
- refactor: modernize code usage using gofix by @kumapower17 in https://github.com/labstack/echo/pull/2970
- refactor: replace Split in loops with more efficient SplitSeq by @box4wangjing in https://github.com/labstack/echo/pull/2969
- refactor: use the built-in max/min to simplify the code by @criciss in https://github.com/labstack/echo/pull/2966
- Update GitHub actions deps versions by @aldas in https://github.com/labstack/echo/pull/2971
- @criciss made their first contribution in https://github.com/labstack/echo/pull/2966
- @box4wangjing made their first contribution in https://github.com/labstack/echo/pull/2969
- @shblue21 made their first contribution in https://github.com/labstack/echo/pull/2977
- @c-tonneslan made their first contribution in https://github.com/labstack/echo/pull/2988
- @leestana01 made their first contribution in https://github.com/labstack/echo/pull/2992
- @kawaway made their first contribution in https://github.com/labstack/echo/pull/2994
Full Changelog: https://github.com/labstack/echo/compare/v5.1.1...v5.2.0
Wails v3.0.0-alpha.101
- iOS: native message dialogs (UIAlertController) and open file/files/directory dialogs (UIDocumentPickerViewController); save dialogs return an explicit error
- iOS: clipboard support via UIPasteboard
- iOS: real screen metrics via UIScreen (points, pixels, scale, safe-area work area)
- iOS: device builds (
IOS_PLATFORM=device), code-signing identity / provisioning profile / entitlements support,.ipapackaging, anddeploy-devicevia devicectl - iOS: configurable minimum iOS version (
ios.minIOSVersionin build/config.yml) - iOS:
wails3 doctorreports Xcode and iOS SDK availability on macOS - iOS: system events — battery, network, theme, screen-lock and low-memory surface as
events.IOS.*and platform-neutralevents.Common.*application events - iOS: native mobile feature bridge (exported
application.IOS*) — share sheet, open URL, keep-awake, torch, safe-area insets, brightness, app info, orientation lock, status bar, biometrics (Face ID/Touch ID), local notifications and Keychain secure storage - iOS: sensors & hardware — haptics, one-shot geolocation, accelerometer, proximity, text-to-speech, storage info, power/battery state, network status, keyboard insets and screen-capture detection
- iOS: documentation (IOS.md and a docs-site guide)
- Android: native message dialogs (AlertDialog) and open file/files dialogs (Storage Access Framework, imported as cache copies); open-directory and save dialogs return an explicit error
- Android: clipboard support via ClipboardManager
- Android: real screen metrics via WindowMetrics/DisplayMetrics (dp, pixels, scale, system-bar work area)
- Android: haptics (
Android.Haptics.Vibrate), device info (Android.Device.Info) and toast (Android.Toast.Show) runtime methods - Android: typed lifecycle events (
events.Android.*, generated from events.txt) withActivityCreatedmapped toCommon.ApplicationStarted - Android: build pipeline produces installable debug and release APKs (
android:run,android:package,android:package:fat); release signing via the debug keystore by default or a real keystore throughANDROID_KEYSTORE_*env vars - Android:
wails3 doctorreports the Android SDK, NDK and JDK - Android: system events — battery, network, theme, screen-lock and low-memory surface as
events.Android.*and platform-neutralevents.Common.*application events - Android: native mobile feature bridge (exported
application.Android*) — share, open URL, keep-awake, torch, safe-area insets, brightness, app info, orientation lock, status bar, biometrics (BiometricPrompt), local notifications and EncryptedSharedPreferences secure storage - Android: sensors & hardware — haptics, one-shot geolocation, accelerometer, proximity, text-to-speech, storage info, power/battery state, network status, keyboard insets and FLAG_SECURE screen-capture blocking
- Android: documentation (ANDROID.md and a docs-site guide)
- Example: the
mobilekitchen sink gains Mobile and Hardware tabs demonstrating the native feature bridge across iOS and Android (pill tabs wrap to multiple rows) - Mobile: battery — the accelerometer, proximity sensor, torch and the example's periodic clock are paused when the app is backgrounded and restored on return (Android keeps the process running in the background, and the torch is hardware state that persists on iOS), and Android system-event receivers are only registered while the app is in the foreground
- iOS: camera capture —
application.IOSCapturePhoto/IOSCaptureVideo(UIImagePickerController → anative:captureevent with a base64 thumbnail) - iOS: background execution —
application.IOSBeginBackgroundTask/IOSEndBackgroundTask(a UIApplication background-task window) and a configurableios.backgroundModes(build/config.yml) that templatesUIBackgroundModesinto the generated Info.plist - Android: camera capture —
application.AndroidCapturePhoto/AndroidCaptureVideo(system camera via FileProvider → anative:captureevent) - Android: foreground service —
application.AndroidStartForegroundService/AndroidStopForegroundService(aWailsForegroundServicewith an ongoing notification keeps the process alive for long-running background work) - Example: a Camera tab demonstrating photo/video capture and background execution (foreground service on Android, background-task window on iOS)
- Fix
getUserMediaalways failing withNotAllowedErroron Linux: WebKitGTK denies permission requests nobody handles, and thepermission-requestsignal was not connected. Camera/microphone are now handled per a new cross-platformWebviewWindowOptions.Permissionsmap (map[PermissionType]Permission), honored on both Linux (WebKitGTK) and Windows (WebView2). On Linux, which has no native prompt, camera/microphone default to allowed (restoringgetUserMedia) and can be turned off withPermissionDeny(#5552) - iOS:
GOOS=ioscompiles again (exportedevents.IOS, mobile method-name stubs) and production-tagged builds compile (build-tag fixes in pkg/application and several services) - iOS: Go→JS events and ExecJS now work — the page no longer loads twice at startup and the
wails:runtime:readyhandshake can no longer be lost - iOS:
ApplicationDidFinishLaunching/ApplicationStartedno longer race app startup; removed the fixed 2-second startup sleep - iOS: fixed a C-string leak on every Go→JS JavaScript execution
- iOS:
hasListenersnow reflects real listener registration - iOS: framework debug logging is compiled out of production builds
- Android:
GOOS=androidcompiles again — definedevents.Android, removed the out-of-boundsevents_android.golistener array, added the mobile method-name stub, and stopped desktop-Linux files (linux_cgo.*,events_linux.*,environment_linux.go) leaking into Android builds - Android: JS→Go bindings now work — the WebView cannot deliver
fetch()POST bodies toshouldInterceptRequest, so runtime calls route through a JavascriptInterface transport (nativeHandleRuntimeCall) instead of crashing on a nil request body - Android:
Screens.*runtime calls return real data — the ScreenManager is now populated at startup (it was never wired, soGetAllreturned nil) - Android: framework debug logging is compiled out of production builds and routes through logcat under the
Wailstag in debug builds - Android: real
hasListenersregistry, JNI reference/exception handling, and a single-load page lifecycle (no double navigation) - Fix
wails3 generate bindingsfailing with "Access is denied" on Windows when the Vite dev server is running, by syncing generated files into the output directory instead of renaming over it (#5515) - Fix intermittent fatal crash on macOS when reading screen information after a display change: the screen id and name stored pointers to autoreleased
UTF8Stringbuffers that could be freed before Go copied them (use-after-free). The strings are nowstrdup'd and freed after conversion, and screen enumeration runs in an explicit autorelease pool so it no longer leaks when called from Go goroutines (#5556) - Fix intermittent SIGSEGV on Linux when the assetserver closes a
WebKitURISchemeRequest: the finalg_object_unrefran on the assetserver goroutine, finalizing a WebKit GObject off the GTK main thread. The unref is now marshalled onto the GTK main context viag_main_context_invoke(#5557)
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.101
Wails v3.0.0-alpha.100
- Extend
MacWebviewPreferenceswith additional WKWebView configuration options:EnableAutoplayWithoutUserAction,AllowsAirPlayForMediaPlayback,AllowsMagnification,JavaScriptCanOpenWindowsAutomatically,MinimumFontSize, andApplicationNameForUserAgent(#5549)
- Fix
wails3 generate bindingsfailing with "Access is denied" on Windows when the Vite dev server is running, by syncing generated files into the output directory instead of renaming over it (#5561) - Fix JS resize events not firing for frameless windows on Linux; fix scrollbar edge detection for frameless windows (#5368)
- Fix updater on Windows failing with "invalid cross-device link" when the temp directory is on a different volume to the install directory (#5560)
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.100
9.20.1
This is a patch release containing bug fixes only. There are no new features or breaking changes; upgrading from 9.20.0 is a drop-in replacement.
PeekPushNotificationName previously inspected only the bytes already buffered by bufio, so when a push frame header straddled a buffer fill boundary it could return a truncated notification name (e.g. "messa" instead of "message"). The push processor then mis-routed the frame and ReadReply silently dropped it, causing intermittent RESP3 pub/sub message loss. The peek now grows its window (36 bytes → up to 4 KiB) and reads more from the connection until the header is complete, cleanly separating incomplete prefixes from corrupt frames (including overflow-safe bulk-length handling). Fixes #3839.
- RESP3 push peeking:
PeekPushNotificationNameno longer returns a truncated notification name when a push frame header spans a buffer boundary, preventing silent RESP3 pub/sub message loss (fixes #3839) (#3842) by @ndyakov FT.HYBRIDvector params: Vector data is now always sent viaPARAMSwith auto-generated param names (__vector_param_N, with collision avoidance) whenVectorParamNameis omitted, since Redis no longer accepts inline vector blobs; theFTHybridOptions.Paramsmap is no longer mutated, so the same options struct can be reused across calls (#3844) by @ndyakovCLUSTER SHARDSforward compatibility: Unknown shard- and node-level attributes in theCLUSTER SHARDSreply are now skipped viaDiscardNext()instead of erroring, so clients keep working when the server introduces new fields (#3843) by @madolson- PubSub double reconnect:
PubSub.releaseConnno longer reconnects twice when a connection is both unusable (or pending handoff) and reports a bad-connection error, avoiding a wasted connection establish-then-close cycle (#3833) by @cxljs
We'd like to thank all the contributors who worked on this release!
Full Changelog: https://github.com/redis/go-redis/compare/v9.20.0...v9.20.1
9.20.1
This is a patch release containing bug fixes only. There are no new features or breaking changes; upgrading from 9.20.0 is a drop-in replacement.
PeekPushNotificationName previously inspected only the bytes already buffered by bufio, so when a push frame header straddled a buffer fill boundary it could return a truncated notification name (e.g. "messa" instead of "message"). The push processor then mis-routed the frame and ReadReply silently dropped it, causing intermittent RESP3 pub/sub message loss. The peek now grows its window (36 bytes → up to 4 KiB) and reads more from the connection until the header is complete, cleanly separating incomplete prefixes from corrupt frames (including overflow-safe bulk-length handling). Fixes #3839.
- RESP3 push peeking:
PeekPushNotificationNameno longer returns a truncated notification name when a push frame header spans a buffer boundary, preventing silent RESP3 pub/sub message loss (fixes #3839) (#3842) by @ndyakov FT.HYBRIDvector params: Vector data is now always sent viaPARAMSwith auto-generated param names (__vector_param_N, with collision avoidance) whenVectorParamNameis omitted, since Redis no longer accepts inline vector blobs; theFTHybridOptions.Paramsmap is no longer mutated, so the same options struct can be reused across calls (#3844) by @ndyakovCLUSTER SHARDSforward compatibility: Unknown shard- and node-level attributes in theCLUSTER SHARDSreply are now skipped viaDiscardNext()instead of erroring, so clients keep working when the server introduces new fields (#3843) by @madolson- PubSub double reconnect:
PubSub.releaseConnno longer reconnects twice when a connection is both unusable (or pending handoff) and reports a bad-connection error, avoiding a wasted connection establish-then-close cycle (#3833) by @cxljs
We'd like to thank all the contributors who worked on this release!
Full Changelog: https://github.com/redis/go-redis/compare/v9.20.0...v9.20.1
v5.28.0
- Organize README features, enhance testing, and update docs by @asim in https://github.com/micro/go-micro/pull/2955
- Enhance documentation, optimize images, and add health check feature by @asim in https://github.com/micro/go-micro/pull/2958
- Optimize image formats and fix lease re-registration issue by @asim in https://github.com/micro/go-micro/pull/2959
- feat(health): add RegistryCheck for registry connectivity health checks by @Copilot in https://github.com/micro/go-micro/pull/2957
Full Changelog: https://github.com/micro/go-micro/compare/v5.27.0...v5.28.0
v0.13.0
Starting with this release, pdfcpu improves CLI usability with broader stdin/stdout pipeline support and stricter overwrite handling.
Check out the refreshed documentation at https://pdfcpu.io
Many commands now support - for stdin/stdout, making pdfcpu easier to use in shell pipelines. Explicit output files and non-empty output directories are no longer overwritten implicitly. Use the new global --force flag when overwriting is intentional.
Example:
pdfcpu optimize - out.pdf < in.pdf
or:
cat in.pdf | pdfcpu optimize - - > out.pdf
or a pipeline:
aws s3 cp s3://acme-contracts/master.pdf - \
| pdfcpu optimize - - \
| aws s3 cp - s3://acme-contracts/optimized/master.pdf
This release adds and refines several user-facing CLI features:
- Broader stdin/stdout support using
- - Global
--forceflag for explicit overwrite handling annotations list --jsonform list --jsoncertificates list --jsonmerge --bookmark-mode wrap|preserve- Improved
versioncommand behavior - Clarified help text around signature validation scope and trust boundaries
The new overwrite behavior is intentionally stricter. Existing scripts that relied on implicit overwrites may need to add --force.
The merge command now supports bookmark handling modes:
pdfcpu merge --bookmark-mode wrap out.pdf in1.pdf in2.pdf
Supported modes:
wrappreserve
The default is wrap.
This release also improves bookmark tree preservation and handling of bookmark destination collisions.
JSON output is now available for selected listing commands:
pdfcpu annotations list --json in.pdf
pdfcpu form list --json in.pdf
pdfcpu certificates list --json
form list --json also supports multi-file form export JSON.
Standard builds now start with an empty trusted certificate directory.
Embedded EUTL certificate bundles are only included when building with:
-tags pdfcpu_eutl
certificates reset now resets the certificate directory to the build defaults.
This keeps standard builds smaller and avoids implying a bundled trust store unless it was explicitly selected at build time.
An experimental Windows 7 x64 build is available in the release assets:
pdfcpu_0.13.0_Windows_x86_64_win7_experimental.zip
This build uses a patched Go toolchain and is not part of the regular supported release matrix. Feedback from Windows 7 SP1 x64 users is welcome (at #870), especially the output of:
cmd
ver
pdfcpu.exe version
pdfcpu.exe validate test.pdf
This release adds configurable parser and resource limits for:
- stream bytes
- decoded bytes
- image pixels and bytes
- object counts
- xref entries
- recursion depth
The corresponding limits are also part of the configuration. Users of older version will be prompted by the CLI to reset their configuration.
Additional cycle and depth checks were added for page trees, form fields, name trees, and object graph traversal.
Stream parsing and filter decoding have also been hardened against oversized, malformed, and overflowing inputs.
Very large or malformed PDFs that were previously attempted may now be rejected earlier.
This release includes targeted fixes and compatibility improvements for:
- annotation geometry during resize, including
RectandQuadPoints - merge bookmark handling
- form filling with user fonts
- removing document properties and associated catalog XMP metadata
- relaxed validation for selected malformed JavaScript action and structure-tree object-reference cases
- booklet page count and content-buffer handling
- FlateDecode predictor and EOF handling
- output path handling in extraction, fonts, forms, split/cut, and attachment-related workflows
- watermarks, stamps, validation, fonts, properties, and related command behavior
Dependencies were updated, including go-runewidth, x/crypto, x/image, and x/text.
Now usage, help text and docs describe the current signature validation scope and trust boundaries more clearly.
This release does not claim complete legal, eIDAS, LTV, or long-term trust validation.
Behind the scenes, this release includes command plumbing refactoring in pkg/cli, updated tests around command dispatch, and an experimental Windows 7 build workflow.
Everybody for testing, reporting issues, and feeding back real-world PDFs. Your bug reports and edge cases continue to make pdfcpu more robust and useful. Shoutouts to @harish for spending time on submitting a PR.
- 2226694 bump version, fix #1410, #1411
- a212fad refactor cli cmd plumbing
- 982b418 clarify signature trust boundaries
- d27afe2 fix version cmd
- 80b99fe add certificate JSON listing and reset defaults
- a3225ab refactor parameter handling
- 4f4129e add experimental Win7 build
- 84a68af decrease binary size via default build w/o bundled certificates, provide build tag pdfcpu_eutl for bundling EUTL trust-list certs
- ecb6888 fix #1291
- 3491406 fix identify version
- e102024 fix #1316
- d886d17 fix #1375
- d27963b fix #1317
- 174230a fix #1359
- 8719193 fix merge bookmark destination collisions
- 991e0ec fix: #1364
- b11ad47 fix: #1394
- 3a73dfa refactor: cli command plumbing
- 6ac18f9 fix arg validation
- 895371a fix #1396
- 59ca0db fix #1402
- 14e191d fix handling of os.Exit
- cbbb3b5 add missing GoDoc comments
- 8983029 add cycle-detection
- b4c1f98 add recursion-depth checking
- 54d7f0a add limits to configuration
- 21f8b3b sanitize file paths
- e8abb82 harden filter decoders and stream parsing against overflow
- 0ea56f8 update scripts
- 05e8897 add stdin/stdout support, add --force