v5.5.2
lego is an independent, free, and open-source project, if you value it, consider supporting it! ❤️
Everybody thinks that the others will donate, but in the end, nobody does.
So if you think that lego is worth it, please consider donating.
For key updates, see the changelog.
Wails v3.0.0-beta.25
- Stop
wails3 devand its background processes when the primary application exits (#6048)
🤖 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-beta.25
Version 1.61.0 (2026-09-22)
- feat(consumer): support cooperative rebalancing by @dnwe in https://github.com/IBM/sarama/pull/3696
- feat: support KIP-848 ConsumerGroupDescribe API by @shilohlee98 in https://github.com/IBM/sarama/pull/3748
- examples: add cooperative-sticky assignor to consumergroup by @dnwe in https://github.com/IBM/sarama/pull/3760
- fix(client): only deregister the broker registered under that ID by @hsdfat in https://github.com/IBM/sarama/pull/3752
- fix(consumer): stop roundrobin balancer looping on an unsubscribed topic by @lenamonj in https://github.com/IBM/sarama/pull/3740
- fix(producer): drain pending responses immediately once channel closes by @navi89mai in https://github.com/IBM/sarama/pull/3729
- fix: prevent race in asyncProducer retryHandler by @dloebl in https://github.com/IBM/sarama/pull/3733
- fix(protocol): return ErrUnsupportedVersion for absent broker API keys by @wxldonnaBJ in https://github.com/IBM/sarama/pull/3741
- chore(deps): update dependency golangci/golangci-lint to v2.13.2 by @renovate[bot] in https://github.com/IBM/sarama/pull/3732
- chore(deps): bump github.com/klauspost/compress from 1.19.2 to 1.20.0 by @dependabot[bot] in https://github.com/IBM/sarama/pull/3743
- chore(deps): bump github.com/pierrec/lz4/v4 from 4.1.29 to 4.1.30 by @dependabot[bot] in https://github.com/IBM/sarama/pull/3751
- chore(deps): update dependency vearutop/teststat to v0.1.29 by @renovate[bot] in https://github.com/IBM/sarama/pull/3730
- chore(deps): bump the golang-x group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/IBM/sarama/pull/3749
- chore(deps): update docker/bake-action action to v7.4.0 - autoclosed by @renovate[bot] in https://github.com/IBM/sarama/pull/3756
- chore(deps): update docker/setup-buildx-action action to v4.4.1 by @renovate[bot] in https://github.com/IBM/sarama/pull/3757
- fix(test): capture logs without replacing the global Logger by @official-burak in https://github.com/IBM/sarama/pull/3737
- test(functional): cover cooperative Java interoperability by @dnwe in https://github.com/IBM/sarama/pull/3754
- docs: clarify producer batching configuration by @krvladislav in https://github.com/IBM/sarama/pull/3712
- @shilohlee98 made their first contribution in https://github.com/IBM/sarama/pull/3748
- @hsdfat made their first contribution in https://github.com/IBM/sarama/pull/3752
- @lenamonj made their first contribution in https://github.com/IBM/sarama/pull/3740
- @navi89mai made their first contribution in https://github.com/IBM/sarama/pull/3729
- @krvladislav made their first contribution in https://github.com/IBM/sarama/pull/3712
- @dloebl made their first contribution in https://github.com/IBM/sarama/pull/3733
- @official-burak made their first contribution in https://github.com/IBM/sarama/pull/3737
- @wxldonnaBJ made their first contribution in https://github.com/IBM/sarama/pull/3741
Full Changelog: https://github.com/IBM/sarama/compare/v1.60.2...v1.61.0
v2.14.0
This release contains new features, improvements and bug fixes.
- US-1698 Image compression API for DOCX:
Document.CompressImages(targetDPI, jpegQuality), the equivalent of Word's "Compress Pictures" - US-1749
XLOOKUP,XMATCH,SWITCHandTEXTSPLITfor the spreadsheet formula engine - US-1750 Statistical functions for the spreadsheet formula engine: the
STDEV/VARfamily,NORM.DIST,NORM.INV,BINOM.DIST,PERCENTILE,QUARTILE,CORREL,FORECASTandLINEST - US-1783 Presentation text formatting and slide property API: italic, underline, strike, caps, character spacing, kerning, superscript/subscript, language, line spacing, margins, indents and tab stops, plus
Slide.SetHidden/Hidden,SlideSize.SetType/TypeandPresentation.NotesSize/SetNotesSize
- US-1658 XLSX to PDF conversion honoring print areas, including multi-range lists, whole-column and whole-row references
- US-1665 DOCX to PDF rendering of Word section formatting: multi-column layout, page borders, line numbering and page-number formats
- US-1761 UniPDF dependency update to v5.1.0
- US-1699 CI/CD pipeline gating convert render output against committed baselines, with stale-baseline detection and pixel-diff artifacts on failure
- US-1729 Table of contents not generated for content wrapped in a Structured Document Tag (SDT) fix
- US-1749
INDEXpanicking out of bounds when the column argument equals the row width fix - US-1658 XLSX to PDF fixes for the page size table (missing Quarto and Envelope 9 codes, swapped Envelope B5 dimensions, incorrect Monarch width), charts duplicating series data from both live and cached values, mis-sized merged cells, and page-break artifacts in row borders and trailing pages
- US-1761 The minimum supported Go version is now 1.25.0, raised by the UniPDF v5.1.0 dependency. Projects building UniOffice with Go 1.24 or earlier need to upgrade their toolchain.
v6.14.0
- agent: let a caller observe run events as they happen by @asim in https://github.com/micro/go-micro/pull/4905
- ai/atlascloud: report token usage from Generate by @asim in https://github.com/micro/go-micro/pull/4906
- agent: add a versioned inspectable run record by @asim in https://github.com/micro/go-micro/pull/4908
- docs: align agent and flow durability guarantees by @be-student in https://github.com/micro/go-micro/pull/4907
- flow: persist agent and service run lineage by @asim in https://github.com/micro/go-micro/pull/4911
- config: close loader when config closes by @asim in https://github.com/micro/go-micro/pull/4915
- Rename AI package to model by @asim in https://github.com/micro/go-micro/pull/4918
- Fix model package documentation after rename by @asim in https://github.com/micro/go-micro/pull/4919
- Remove Anthropic sponsorship listings by @asim in https://github.com/micro/go-micro/pull/4921
- Keep only Atlas Cloud in sponsor sections by @asim in https://github.com/micro/go-micro/pull/4922
- a2a: configure network-specific NAT64 prefixes by @asim in https://github.com/micro/go-micro/pull/4924
- fix(pgx): default store context by @asim in https://github.com/micro/go-micro/pull/4944
- fix(nats): report disconnected registry queries by @asim in https://github.com/micro/go-micro/pull/4945
- fix(ci): restore lint and vulnerability gates by @asim in https://github.com/micro/go-micro/pull/4947
- fix(natsjs): honor manual event acknowledgements by @asim in https://github.com/micro/go-micro/pull/4948
- feat(agent): allow custom agents and wrappers to resume runs by @asim in https://github.com/micro/go-micro/pull/4949
- feat(agent): expose typed pause and terminal run errors by @asim in https://github.com/micro/go-micro/pull/4951
- fix(agent): keep delegated tools within the parent service scope by @asim in https://github.com/micro/go-micro/pull/4950
- fix(natsjs): prevent durable consumers from skipping history by @asim in https://github.com/micro/go-micro/pull/4943
- fix(agent): recover timeout and rate-limited runs by @asim in https://github.com/micro/go-micro/pull/4952
- fix(model): preserve Groq/OpenAI options and follow-up errors by @asim in https://github.com/micro/go-micro/pull/4953
- feat(agent): expose model budgets and deterministic tool limits by @asim in https://github.com/micro/go-micro/pull/4954
- docs: lead README with Go framework APIs and runnable code by @asim in https://github.com/micro/go-micro/pull/4955
- feat: wait for service dependencies with cancellation and backoff by @asim in https://github.com/micro/go-micro/pull/4956
- feat(errors): match remote statuses and retain reason metadata by @asim in https://github.com/micro/go-micro/pull/4958
- feat(events): separate subjects from streams and preserve event IDs by @asim in https://github.com/micro/go-micro/pull/4957
- feat(client): distinguish discovery failures and configure endpoint budgets by @asim in https://github.com/micro/go-micro/pull/4959
- feat(codec): configure protobuf JSON zeros and safe integer numbers by @asim in https://github.com/micro/go-micro/pull/4960
- feat(agent): durable context-aware tool approvals by @asim in https://github.com/micro/go-micro/pull/4961
- feat(kubernetes): add workload controller adapter and Service reconciliation by @asim in https://github.com/micro/go-micro/pull/4962
- feat(a2a): verify AP2 mandates before paid invocation by @asim in https://github.com/micro/go-micro/pull/4963
- fix(gateway): enforce administrative and transport security boundaries by @asim in https://github.com/micro/go-micro/pull/4964
- @be-student made their first contribution in https://github.com/micro/go-micro/pull/4907
Full Changelog: https://github.com/micro/go-micro/compare/v6.13.0...v6.14.0
Release 10.30.5
- fix: allow signed integer fields in port validation by @EJJI0113 in https://github.com/go-playground/validator/pull/1633
- Go 1.27 support by @nodivbyzero in https://github.com/go-playground/validator/pull/1637
- docs: add AI agent attribution requirements to CONTRIBUTING.md by @deankarn in https://github.com/go-playground/validator/pull/1640
- @EJJI0113 made their first contribution in https://github.com/go-playground/validator/pull/1633
Full Changelog: https://github.com/go-playground/validator/compare/v10.30.4...v10.30.5
Wails v3.0.0-beta.24
- Restrict GITHUB_TOKEN permissions in build and publish workflows to follow the principle of least privilege
- Fix path traversal and symlink escapes in the screen example asset middleware
- Keep setup wizard dependency installation functional while restricting it to approved package-manager commands
🤖 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-beta.24
v0.16.0-rc.1
This release candidate is available for testing.
Please try it with your existing workflows and report regressions before the final v0.16.0 release.
- Updated Go API — Explicit contexts for long-running operations, optional progress reporting, and reusable caller-owned configuration.
- Configuration redesign — Schema-aware loading, explicit initialization and reset, plus read-only and stateless operation.
- Automation and container preparation — Signal cancellation, safer output replacement, password-file inputs, and verified execution under arbitrary user IDs.
- Stronger PDF validation — Improved malformed-input handling, graph-traversal safeguards, and compatibility warnings for selected relaxed-validation decisions.
- Clearer signature validation — Separate reporting of document integrity, certificate trust, revocation, and timestamp evidence.
- PDF processing fixes — Improved resize orientation, rotated watermarks, form appearances, image handling, and LZW decoding.
- Smaller Go module — Approximately 94% smaller in the original packaging comparison. Samples and test fixtures remain in Git but are excluded from module downloads.
Go applications require Go 1.26 or later and updates to affected API calls. Existing file-backed configurations from v0.15 or earlier require an explicit configuration reset.
go get github.com/pdfcpu/pdfcpu@v0.16.0-rc.1
Existing v0.15 and older config.yml files do not contain the new configuration schema identifier. pdfcpu preserves the file and reports that a reset is required instead of rewriting it automatically.
If the configuration is not customized, run:
pdfcpu config reset
pdfcpu config validate
For an explicit configuration root, use the same root for every command:
pdfcpu --conf /srv/pdfcpu config reset
pdfcpu --conf /srv/pdfcpu config validate
pdfcpu --conf /srv/pdfcpu config inspect
Installed user fonts and trusted certificates are preserved.
Before resetting, back up any customized config.yml.
After resetting, reapply your settings. Installed fonts and trusted certificates are preserved.
New installations and stateless operation with --conf disable need no migration.
See the v0.16 configuration upgrade guide.
| Change | Required action |
|---|---|
Long-running operations require a context.Context |
Pass the request or job context, or context.Background() when cancellation is not needed. Nil contexts are rejected. |
Validation and optimization operations take a final *api.ProgressOptions |
Pass nil when progress events are not needed. |
LoadConfiguration() now takes options and returns an error |
Call api.LoadConfiguration(api.ConfigurationOptions{}) and handle the error. |
Context-free and interim WithContext/WithOptions variants were consolidated |
Use the canonical operation name. |
Configurations supplied by an application remain caller-owned and can be reused after an operation. Clone a configuration before applying different settings for another job; do not mutate it concurrently while operations use it. Passing nil loads the default configuration and may initialize files on disk. For stateless applications, explicitly load api.ConfigurationModeStateless and pass the returned configuration.
See API installation and usage and the v0.16 migration guide for before/after examples.
- Automatic discovers or initializes file-backed configuration for normal CLI and API use.
- Read-only loads a prepared configuration tree without modifying it.
- Stateless uses built-in settings and the 14 core PDF fonts without accessing configuration files, user fonts or the local certificate store.
The CLI selects stateless mode with --conf disable.
Applications select a mode through api.ConfigurationOptions.
Configuration root precedence is the explicit flag, PDFCPU_CONFIG_ROOT, then the operating-system default.
Normal CLI PDF commands have no read-only-mode flag: prepare the complete tree first and mount it read-only.
Go applications can select api.ConfigurationModeReadOnly to load existing configuration without modifying files.
The new commands are:
pdfcpu config init
pdfcpu config list
pdfcpu config inspect [--json]
pdfcpu config validate
pdfcpu config reset
Use pdfcpu config inspect for configuration paths and effective policy.
The CLI responds to Ctrl+C, SIGINT and SIGTERM. The first signal requests a clean stop; a second signal terminates immediately. Go callers control cancellation through the context passed to the operation.
Cancellation is cooperative, so a large operation may take a moment to reach a safe stopping point. File-producing operations stage output before publication. When cancellation or an ordinary write failure occurs before publication, an existing destination is preserved and unfinished temporary output is removed.
Stdin PDF input and merged form multi-fill output to stdout use the operating-system temporary directory. Replacement files are staged beside their destination. On supported Unix systems, replacement preserves the destination group or fails before publication.
Use --upw-file or --opw-file wherever the corresponding literal password flag is accepted. Supply a password either directly or through a file, not both. Password files cannot use stdin.
One trailing LF or CRLF is ignored. Other spaces and line endings remain part of the password. An empty file supplies an empty password, except where a non-empty owner password is required.
Password changes can replace their positional old/new password pair with:
| Command | Old password | New password |
|---|---|---|
changeupw |
--upwold-file |
--upwnew-file |
changeopw |
--opwold-file |
--opwnew-file |
Both file options for a password change must be supplied together.
maxInputBytesoptionally limits each PDF input, including stdin spooling. Zero remains unlimited.maxObjectBytesexposes the existing per-object reader buffer limit. Its default remains 64 MiB.- Offline mode now consistently covers remote images, link validation and live CRL/OCSP requests.
- Outbound image and revocation requests reject loopback, private, link-local, multicast, unspecified and selected special-purpose destinations by default. Trusted private revocation hosts can be configured explicitly.
These settings limit individual inputs or operations; they are not a total memory, disk or job-time budget.
Compatibility-warning coverage has substantially expanded. Relaxed validation reports selected conditions that strict validation would reject, indicating whether content was accepted, skipped or repaired in memory. These warnings are available through the CLI and structured API reports; --quiet suppresses CLI warnings.
Go callers can obtain the same ordered report through ValidateWithReport, ValidateFileWithReport and ValidateContextWithReport. Existing error-only validation APIs remain available.
The v0.16.0 coverage is intentionally bounded and will be extended gradually.
Right now it covers the parser vertical slice and selected Type 1 font, remote destination, annotation, Type 3 function, simple-font width and Indexed-image mask compatibility paths changed for this release. Other existing relaxed parser, reader and validator fallbacks may not produce a structured notice. The absence of a notice does not prove that relaxed validation followed the strict path.
Strict validation describes the checks pdfcpu currently implements; it does not certify complete ISO 32000 compliance or prove that no bounded low-level reader recovery occurred.
Stronger validation and safer handling of malformed PDFs, including improved bounds checks, cycle detection and error reporting. Relaxed mode adds targeted compatibility exceptions while strict validation retains its requirements.
Signature validation now separates established evidence from the overall local assessment. Compact output includes an Integrity: line. Full output groups cryptographic signature, signed-content digest, profile, signer certificate, certificate path, revocation and timestamp evidence before presenting the assessment.
unknown means that evidence was unavailable, inconclusive or not checked; it does not mean success.
Document timestamps receive the supported local RFC 3161 CMS-signature, message-imprint, profile, TSA-certificate and configured-local path checks. Embedded signature timestamp tokens are located and parsed, including their generation time, but are not yet authenticated. Timestamp presence alone does not establish PAdES B-T.
pdfcpu reports local technical evidence.
It does not make enterprise-policy, legal-validity, eIDAS, qualified-signature or complete long-term-validation decisions.
PAdES classification remains limited to the supported B-B result.
See signature validation for the complete output and current limitations.
The Go module now excludes samples and test fixtures while retaining all runtime resources (#1449).
This release prepares pdfcpu for container deployment; an official image is planned for v0.17.
- Existing v0.15 and older file-backed configuration requires an explicit reset.
- Long-running Go APIs require a non-nil context under their canonical names.
- Validation and optimization APIs listed above require the final progress argument.
- Strict validation may reject malformed structures that earlier releases did not check.
- Relaxed compatibility warnings do not yet cover every pre-existing fallback.
- Cancellation takes effect at checkpoints, so some operations may not stop immediately.
#1407, #1444, #1449, #1457, #1460, #1461, #1465, #1466, #1467, #1470, #1472, #1473, #1474, #1477, #1479, #1484, #1485, #1487.