v6.3.0
- Trim landing tagline to one-liner by @asim in https://github.com/micro/go-micro/pull/2997
- website: trim landing tagline to the one-liner by @asim in https://github.com/micro/go-micro/pull/2998
- website: add Support to top nav (landing + docs layout) by @asim in https://github.com/micro/go-micro/pull/2999
- website: deduplicate header/footer via Jekyll includes by @asim in https://github.com/micro/go-micro/pull/3000
- flow: add Loop — agentic loops as a flow step by @asim in https://github.com/micro/go-micro/pull/3001
- sponsors: add OpenAI (Codex for Open Source) by @asim in https://github.com/micro/go-micro/pull/3002
- blog: announce OpenAI Codex for Open Source grant by @asim in https://github.com/micro/go-micro/pull/3003
- Add CODEX.md codex maintainer playbook by @asim in https://github.com/micro/go-micro/pull/3004
- Add CODEX maintainer playbook and update examples/docs to include context and refreshed console output by @asim in https://github.com/micro/go-micro/pull/3005
- Add provider-conformance harness, contract test, and reframe docs to 'agent harness' by @asim in https://github.com/micro/go-micro/pull/3006
- harness/new: honest conformance timeout + cheaper contract test (re-land of #3007) by @asim in https://github.com/micro/go-micro/pull/3008
- docs/blog: anchor the agent-harness positioning by @asim in https://github.com/micro/go-micro/pull/3015
- docs: cross-agent coordination rules (CLAUDE.md + CODEX.md) by @asim in https://github.com/micro/go-micro/pull/3016
- website: new hero image + reframe landing (harness AND service framework) by @asim in https://github.com/micro/go-micro/pull/3018
- Add agent model retry and timeout resilience by @asim in https://github.com/micro/go-micro/pull/3017
- website: tighten hero (drop "in Go", simpler tagline, in-hero image) by @asim in https://github.com/micro/go-micro/pull/3019
- website: size hero image to 600px by @asim in https://github.com/micro/go-micro/pull/3020
- agent: make model retries opt-in + harden retry backoff by @asim in https://github.com/micro/go-micro/pull/3021
- loop: continuous-improvement charter + scheduled backbone by @asim in https://github.com/micro/go-micro/pull/3022
- docs: mark harness Resilience as shipped by @asim in https://github.com/micro/go-micro/pull/3023
- loop: drive scheduled backbone via Codex (no Anthropic key needed) by @asim in https://github.com/micro/go-micro/pull/3025
- loop: hourly Codex dispatch + auto-merge green Codex PRs by @asim in https://github.com/micro/go-micro/pull/3026
- Add agent OpenTelemetry run observability by @asim in https://github.com/micro/go-micro/pull/3027
- loop: thesis / North Star + align the loop to it by @asim in https://github.com/micro/go-micro/pull/3028
- website: text-only "Go Micro" brand (remove nav logo) by @asim in https://github.com/micro/go-micro/pull/3029
- docs: burger (☰) sidebar toggle on the left on mobile by @asim in https://github.com/micro/go-micro/pull/3030
- website: fix mobile horizontal overflow on the landing page by @asim in https://github.com/micro/go-micro/pull/3031
- thesis: complementary to LangChain, not competing by @asim in https://github.com/micro/go-micro/pull/3032
- ci: gate Codex dispatch on CODEX_TRIGGER_TOKEN secret by @asim in https://github.com/micro/go-micro/pull/3033
Full Changelog: https://github.com/micro/go-micro/compare/v6.2.1...v6.3.0
Wails v3.0.0-alpha2.106
- Bump
webview2to v1.0.27.- ci(webview2): fix release build (cross-compile Windows + complete go.sum) (#5671) Full diff: https://github.com/wailsapp/wails/compare/webview2/v1.0.26...webview2/v1.0.27
- Remove go vet from webview2 release workflow cross-compilation in PR by @taliesin-ai
- Update auto-changelog OpenRouter model to google/gemini-2.5-flash-lite in PR by @taliesin-ai
- Bump
webview2to v1.0.26.
- Recover from transient runtime COM errors instead of exiting (#5658, #5580).
Chromium.errorCallbackpreviously calledos.Exit(1)for any COM error, so a recoverable hiccup after startup killed the whole application. Runtime paths (Resize/GetClientRect,Navigate/NavigateToString,Init,MessageReceived,PutZoomFactor,OpenDevToolsWindow) now log and recover. In particular, a malformed/untrusted web message inMessageReceivedis now dropped rather than taking the process down. This addresses the mixed-DPI monitor-crossing crash class (#5544, #5650). Environment/controller-creation paths remain fatal. Full diff: https://github.com/wailsapp/wails/compare/webview2/v1.0.25...webview2/v1.0.26
- Fix release-webview2 workflow to correctly handle go.sum files in PR by @taliesin-ai
- Fix Linux GTK4 menu updates by clearing and rebuilding the native menu in PR by @taliesin-ai
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha2.106
webview2 v1.0.27
- ci(webview2): fix release build (cross-compile Windows + complete go.sum) (#5671)
Full diff: https://github.com/wailsapp/wails/compare/webview2/v1.0.26...webview2/v1.0.27
webview2 v1.0.26
- Recover from transient runtime COM errors instead of exiting (#5658, #5580).
Chromium.errorCallbackpreviously calledos.Exit(1)for any COM error, so a recoverable hiccup after startup killed the whole application. Runtime paths (Resize/GetClientRect,Navigate/NavigateToString,Init,MessageReceived,PutZoomFactor,OpenDevToolsWindow) now log and recover. In particular, a malformed/untrusted web message inMessageReceivedis now dropped rather than taking the process down. This addresses the mixed-DPI monitor-crossing crash class (#5544, #5650). Environment/controller-creation paths remain fatal.
Full diff: https://github.com/wailsapp/wails/compare/webview2/v1.0.25...webview2/v1.0.26
v6.2.1
- support: advertise commercial support, consulting, and sponsorship by @asim in https://github.com/micro/go-micro/pull/2989
- website: add commercial support to the landing page by @asim in https://github.com/micro/go-micro/pull/2990
- docs: install the CLI with @v6 instead of @latest by @asim in https://github.com/micro/go-micro/pull/2991
- Enhance comparison guide for Go Micro and Google ADK by @asim in https://github.com/micro/go-micro/pull/2993
- Enhance ADK vs Go Micro comparison and apply lint fixes by @asim in https://github.com/micro/go-micro/pull/2994
- lint: clear the golangci-lint backlog and enforce a blocking lint in CI by @asim in https://github.com/micro/go-micro/pull/2995
- Enforce blocking golangci-lint in CI and clear lint backlog by @asim in https://github.com/micro/go-micro/pull/2996
Full Changelog: https://github.com/micro/go-micro/compare/v6.2.0...v6.2.1
v6.2.0
- docs: consolidate to a single agentic/DX roadmap by @asim in https://github.com/micro/go-micro/pull/2982
- examples: support desk agent + blog walkthrough by @asim in https://github.com/micro/go-micro/pull/2983
- Enhance support agent example and fix protoless service scaffolding by @asim in https://github.com/micro/go-micro/pull/2986
Full Changelog: https://github.com/micro/go-micro/compare/v6.1.0...v6.2.0
9.21.0
This is a minor release adding new features and bug fixes. There are no breaking changes; upgrading from 9.20.x is a drop-in replacement.
Two new StringCmdable methods let callers read and write Redis string values directly into and from pre-allocated byte buffers, eliminating the per-call payload allocation that Get/Set incur:
GetToBuffer(ctx, key, buf) *ZeroCopyStringCmd // reads into buf; ZeroCopyStringCmd { Val() int; Bytes() []byte; Result() (int, error) }
SetFromBuffer(ctx, key, buf) *StatusCmd
GetToBuffer decodes the bulk reply straight into the caller-owned buf (no intermediate allocation); a buffer that is too small returns an error after draining the payload, so the connection stays aligned for the next reply. SetFromBuffer is provided for API symmetry — it dispatches to the same []byte writer path as Set(ctx, key, buf, 0) and produces byte-identical output on the wire. Available on *Client, *ClusterClient, *Ring, *Conn and Pipeliner.
Redis treats XTRIM/XADD approximate-trim (~) LIMIT 0 as "disable the trimming effort cap entirely", which differs from omitting LIMIT (the implicit 100 * stream-node-max-entries default). The command builders previously only emitted LIMIT when limit > 0, so callers could never send an explicit LIMIT 0. Following the KeepTTL = -1 precedent, the new XTrimLimitDisabled = -1 sentinel now emits an explicit LIMIT 0; limit == 0 keeps the historical no-LIMIT behavior, so existing callers produce byte-identical commands.
(#3848) by @TheRealMal
- Zero-copy buffer string commands: new
GetToBuffer/SetFromBufferonStringCmdableand theZeroCopyStringCmdresult type, reading/writing string values into caller-owned buffers without per-call payload allocation (#3834) by @ndyakov XTrimLimitDisabledsentinel:XTRIM/XADDapproximate trimming can now send an explicitLIMIT 0to disable the trim effort cap, via the newXTrimLimitDisabled = -1sentinel (#3848) by @TheRealMal- PubSub health-check timeouts:
channel.initHealthChecknow bounds thePingit issues with a fresh per-check timeout context (the exportedpingTimeout/reconnectTimeout) instead ofcontext.TODO(), so a stuck health-check Ping can no longer block indefinitely (#3819) by @abdellani - Skip redundant
UNWATCHinTx.Close: a transaction now tracks whether aWATCHis still active (watchArmed) and only issuesUNWATCHonClosewhen it is, removing an extra round trip on the commonWATCH/.../EXECand no-keyWatchpaths while never returning a connection to the pool with an active watch (#3854) by @fcostaoliveira
maintnotificationsModeAutofail-open:ModeAutonow stays fail-open when the server does not support maintenance notifications — connections are retired and tracking is guarded during downgrade so the client keeps working instead of erroring (#3853) by @terrorobe
We'd like to thank all the contributors who worked on this release!
@abdellani, @fcostaoliveira, @ndyakov, @terrorobe, @TheRealMal
9.21.0
This is a minor release adding new features and bug fixes. There are no breaking changes; upgrading from 9.20.x is a drop-in replacement.
Two new StringCmdable methods let callers read and write Redis string values directly into and from pre-allocated byte buffers, eliminating the per-call payload allocation that Get/Set incur:
GetToBuffer(ctx, key, buf) *ZeroCopyStringCmd // reads into buf; ZeroCopyStringCmd { Val() int; Bytes() []byte; Result() (int, error) }
SetFromBuffer(ctx, key, buf) *StatusCmd
GetToBuffer decodes the bulk reply straight into the caller-owned buf (no intermediate allocation); a buffer that is too small returns an error after draining the payload, so the connection stays aligned for the next reply. SetFromBuffer is provided for API symmetry — it dispatches to the same []byte writer path as Set(ctx, key, buf, 0) and produces byte-identical output on the wire. Available on *Client, *ClusterClient, *Ring, *Conn and Pipeliner.
Redis treats XTRIM/XADD approximate-trim (~) LIMIT 0 as "disable the trimming effort cap entirely", which differs from omitting LIMIT (the implicit 100 * stream-node-max-entries default). The command builders previously only emitted LIMIT when limit > 0, so callers could never send an explicit LIMIT 0. Following the KeepTTL = -1 precedent, the new XTrimLimitDisabled = -1 sentinel now emits an explicit LIMIT 0; limit == 0 keeps the historical no-LIMIT behavior, so existing callers produce byte-identical commands.
(#3848) by @TheRealMal
- Zero-copy buffer string commands: new
GetToBuffer/SetFromBufferonStringCmdableand theZeroCopyStringCmdresult type, reading/writing string values into caller-owned buffers without per-call payload allocation (#3834) by @ndyakov XTrimLimitDisabledsentinel:XTRIM/XADDapproximate trimming can now send an explicitLIMIT 0to disable the trim effort cap, via the newXTrimLimitDisabled = -1sentinel (#3848) by @TheRealMal- PubSub health-check timeouts:
channel.initHealthChecknow bounds thePingit issues with a fresh per-check timeout context (the exportedpingTimeout/reconnectTimeout) instead ofcontext.TODO(), so a stuck health-check Ping can no longer block indefinitely (#3819) by @abdellani - Skip redundant
UNWATCHinTx.Close: a transaction now tracks whether aWATCHis still active (watchArmed) and only issuesUNWATCHonClosewhen it is, removing an extra round trip on the commonWATCH/.../EXECand no-keyWatchpaths while never returning a connection to the pool with an active watch (#3854) by @fcostaoliveira
maintnotificationsModeAutofail-open:ModeAutonow stays fail-open when the server does not support maintenance notifications — connections are retired and tracking is guarded during downgrade so the client keeps working instead of erroring (#3853) by @terrorobe
We'd like to thank all the contributors who worked on this release!
@abdellani, @fcostaoliveira, @ndyakov, @terrorobe, @TheRealMal
Release v1.31.2
- Fix potential rows leak on panic by deferring rows.Close() @omer-cengel (#7798)
- perf: replace fmt.Sprintf with strconv in ExplainSQL numeric formatting @alpardfm (#7796)
- Document NowFunc timezone behavior @morning-verlu (#7799)
- correct typo and rename fileType to fieldType in AlterColumn @cragone (#7748)
- fix: panic when using clause.Returning with CreateInBatches @Truongquangkhang (#7768)
- fix(migrator): add nil guards to ColumnType methods to prevent panic @lihan3238 (#7767)
- ci: switch tests Go matrix to stable/oldstable and update setup-go @smf-h (#7726)
- chore(ci): bump actions/stale to v9 @Olexandr88 (#7696)
- fix(migrator): don't clear alterColumn when defaults match @qqxhb (#7728)
- Add package comments to fix ST1000 warnings @twocs (#7708)
- generics: populate WithResult error @qqxhb (#7723)
- fix(utils): restore FileWithLineNum caller depth and add regression test @smf-h (#7717)
- tests: skip customized foreign key many2many on MySQL 8.4+ @smf-h (#7727)
- fix tiny typo in error message @snelg (#7738)
- Add unit test verifying chainable query methods mutate statement @miladev95 (#7684)
- fix: Close connection after ping failure to prevent goroutine leak @liang09255 (#7689)
- fix: Row() and Rows() functions should automaticaly apply the generic type as model @hakanakyurek (#7664)
- internal/lru: improve concurrency with RWMutex @miladev95 (#7668)
- Fix nil pointer panic in serializer for nil any-type fields @doraemonkeys (#7634)
- staticcheck QF1001 @miladev95 (#7648)
- Support array/slice expansion for named SQL parameters in parentheses @bafflingbug (#7614)
Wails v3.0.0-alpha2.105
- Add
application.Systemfor runtime platform detection from shared code:System.IsMobile()(iOS/Android),System.IsDesktop()(macOS/Windows/Linux),System.IsServer()(theserverbuild tag), andSystem.IsPlatform(application.PlatformMacOS|PlatformWindows|PlatformLinux|PlatformIOS|PlatformAndroid|PlatformServer)to test a single target directly. It compiles on every target so you can branch without build tags. Matching frontend helpers (System.IsMobile/IsDesktop/IsIOS/IsAndroid/...) are available in@wailsio/runtime - Add a "Using Other Frontend Frameworks" guide showing how to drop your own Vite project into
frontend/(covers Solid, Preact, Lit, SvelteKit, Qwik, Angular, etc.) - The
wails3 setupwizard now checks the mobile (iOS/Android) toolchain — Xcode and the iOS Simulator runtime, JDK, Android SDK/NDK and emulator — with one-click install and copyable shell-config fixes where applicable - Generated projects ship a
frontend/.npmrcsetting a 7-dayminimum-release-ageto reduce exposure to freshly published (potentially compromised) packages (honoured by pnpm and bun; harmlessly ignored by npm)
- Redesign all built-in starter templates with a new neon-mountain hero look (web, iOS and Android)
- TypeScript is now the default for starter templates and owns the bare template name.
wails3 init(no-t) scaffolds a TypeScript project;-t vanilla,-t react,-t vueand-t svelteare TypeScript, with JavaScript variants at-t vanilla-js,-t react-js,-t vue-jsand-t svelte-js. Built-in templates declare their language withtypescript:intemplate.yaml; community templates using the-tssuffix continue to work as a fallback - Redesign the
wails3 setupwizard with the neon "digital Wails" theme (frosted-glass vibrancy over a mountain backdrop)
- Fix crash on Windows when restoring an app that was minimised long enough for WebView2 to suspend or its render/GPU process to be recycled. The minimise/restore DPI resync (#5544) now only touches the WebView2 controller when the window's DPI actually changed, avoiding fatal COM calls into a suspended controller on the common same-DPI restore (#5605)
- Fix repeated native
SIGABRT/SIGSEGVcrashes (typically insideg_object_unrefduring the GTK main loop) on long-running Linux apps under frequent asset/media loads. The asset server completedWebKitURISchemeRequests from worker goroutines, calling thread-unsafe WebKit2GTK functions off the GTK main thread; completion (webkit_uri_scheme_request_finish_with_response/finish_error) now runs on the main thread. Completes the partial fix in #5566. Affects both the GTK3 and GTK4/WebKitGTK 6.0 builds (#5631, #5557) - Fix intermittent
fatal error: invalid pointer found on stackinsetupSignalHandlerson Linux/GTK3. Window IDs passed as signaluser_datawere held in a Gounsafe.Pointerlocal, so the garbage collector aborted when it scanned the (non-pointer) value during a stack copy. The ID is now kept integer-typed (uintptr_t) on the Go side, back-porting to the legacy GTK3 path the same fix #4958 applied to the GTK4 path (which switched the C signal functions touintptr_tto clear-race/checkptr errors) (#5631)
- Remove the
react-swc,preact,lit,solid,qwikandsveltekitstarter templates (and their-tsvariants). The supported built-in set is nowvanilla,react,vueandsvelte— each TypeScript by default, with-jsJavaScript variants. Any other framework can still be used by bringing your own frontend or via a custom template
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha2.105