Julien Neuhart
8a0de7d5d7
build(makefile): disable two go fix modernizers that emit broken code
...
go fix runs the modernize suite since Go 1.26, and two of its analyzers
rewrite this codebase into code that does not compile, so make fmt broke
the build and then make lint. CONTRIBUTING tells every contributor to run
both before opening a PR.
embedlit folded telemetryCfg.LogLevel into a literal that already set that
key, and errorsastype rewrote errors.As to errors.AsType[HttpError] even
though HttpError does not embed error. Disable both, with a TODO covering
when each can come back.
2026-09-03 19:22:23 +02:00
Julien Neuhart
3c691cbebc
test(health): assert conversions succeed across a planned restart
2026-09-03 17:55:35 +02:00
Julien Neuhart
0e83f737b4
docs(supervisor): point maybeRestartAfterTask at the timeout constant
2026-09-03 17:52:52 +02:00
Julien Neuhart
57b048c611
fix(supervisor): reset the request counter on a failed relaunch
...
restart() reset reqCounter only after a successful Launch, so a failed
one left it at the limit. maybeRestartAfterTask then re-fired on every
subsequent task, producing back-to-back restarts and, with planned
restarts now reporting healthy, a node that keeps restarting while
claiming health.
Reset on the attempt instead. A process that will not start is recovered
by ensureHealthy, which restarts synchronously and reports the failure.
2026-09-03 17:52:01 +02:00
Julien Neuhart
d79e174c6f
fix(supervisor): bound the eager restart with a deadline
...
maybeRestartAfterTask ran its restart on a bare background context while
the drain loop in doRestartLocked selects only on ctx.Done(). A task that
never completed blocked the drain forever, pinning isRestarting. Since a
planned restart now reports healthy, that left the node claiming health
for good. LibreOffice escaped it because its concurrency of 1 drains no
slots, but Chromium defaults to 6.
Give that restart its own deadline. On expiry it aborts and the next task
retries it.
2026-09-03 16:10:16 +02:00
Julien Neuhart
88ddaed09b
fix(supervisor): report healthy during planned process restarts
...
The eager restart fired after --chromium-restart-after or
--libreoffice-restart-after conversions made Healthy() report false,
so a client probing /health between two conversions got a 503 from an
otherwise serving node. Tasks arriving during that window are requeued
by acquireSlot, not rejected.
Track whether the in-flight restart is planned and keep reporting
healthy for those. Unplanned restarts still report unhealthy so load
balancers get honest information.
Closes #1648
2026-09-03 16:04:20 +02:00
Julien Neuhart
8944db131c
fix(api): bound downloadFrom concurrency and entry count
2026-09-02 14:57:29 +02:00
Johannes Klein
676570074a
fix(Dockerfile): re-add libreoffice-math so DOCX math formulas render
...
The v8.30.0 image slimming replaced the libreoffice metapackage with an
explicit component list that omits libreoffice-math. Writer imports OMML
equations as Math objects, so without the component every formula is
silently dropped from converted PDFs.
Fixes #1644
2026-09-02 11:55:30 +02:00
dependabot[bot]
11179cb271
chore(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.1 ( #1646 )
...
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go ) from 1.83.0 to 1.83.1.
- [Release notes](https://github.com/grpc/grpc-go/releases )
- [Commits](https://github.com/grpc/grpc-go/compare/v1.83.0...v1.83.1 )
---
updated-dependencies:
- dependency-name: google.golang.org/grpc
dependency-version: 1.83.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 10:51:17 +02:00
Julien Neuhart
c2a85f92d0
chore(deps): update unoconverter to v0.5.0
2026-08-31 19:01:18 +02:00
Muhammad Haseeb
7dbff18e65
fix(chromium): fail fast with 503 when Chromium crashes ( #1641 )
2026-08-31 16:48:21 +02:00
Julien Neuhart
923e5f71eb
style(api): remove redundant parentheses in type switch
2026-08-31 13:38:05 +02:00
Julien Neuhart
334f859d95
chore(deps): update golangci-lint to v2.13.2
2026-08-31 13:36:02 +02:00
Julien Neuhart
0819514b7b
chore(deps): update Go to 1.27.0
2026-08-31 13:36:02 +02:00
Julien Neuhart
c636a52666
fix(otel): keep telemetry off unless an exporter is configured
2026-08-31 13:27:05 +02:00
dependabot[bot]
0b16b0ab34
chore(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.1 ( #1636 )
...
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify ) from 1.11.1 to 1.12.1.
- [Release notes](https://github.com/stretchr/testify/releases )
- [Commits](https://github.com/stretchr/testify/compare/v1.11.1...v1.12.1 )
---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
dependency-version: 1.12.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 11:57:55 +02:00
Julien Neuhart
c0f487e333
feat(api): add OIDC bearer token authentication
v8.36.0
2026-08-14 17:04:20 +02:00
Julien Neuhart
3de6932279
feat(pdfengines): apply multiple stamps and watermarks on every route
2026-08-14 16:36:40 +02:00
Julien Neuhart
e9a67132ec
feat(pdfengines): apply multiple stamps in one request ( #1601 )
2026-08-14 15:52:14 +02:00
Julien Neuhart
41b33fd6ad
test(integration): allow repeated form fields in requests
2026-08-14 15:52:14 +02:00
Julien Neuhart
2521485bf8
test(libreoffice): add .ppsm and .ppsx to the Bad Request extension list
2026-08-14 15:20:46 +02:00
Julien Neuhart
65e5699b71
feat(pdfengines): generate document-title bookmarks when merging ( #867 )
2026-08-14 12:36:13 +02:00
Julien Neuhart
b3c06fb8ae
test(chromium): cover thenable waitForExpression
2026-08-14 12:00:57 +02:00
Julien Neuhart
f90684e165
fix(chromium): add missing import for awaited waitForExpression
2026-08-14 11:58:19 +02:00
Niklas
90e614afa4
feat(chromium): await thenable waitForExpression ( #1617 )
2026-08-14 11:57:29 +02:00
Julien Neuhart
6a087cb1f7
test(libreoffice): cover OOXML PowerPoint show conversion ( #1626 )
2026-08-14 11:49:46 +02:00
Ilya Fedorov
38db892552
fix(libreoffice): accept the OOXML PowerPoint show extensions ( #1626 )
2026-08-14 11:43:12 +02:00
Julien Neuhart
ca9603bdf4
chore(test): format optimize-images testdata and integration README
2026-08-14 11:07:16 +02:00
Julien Neuhart
0c1e82c885
chore(deps): update Go and npm dependencies
2026-08-14 11:07:16 +02:00
Julien Neuhart
1303e0ebc9
refactor(pdfengines): remove qpdf embed fallback ( #1628 )
2026-08-14 11:07:16 +02:00
Julien Neuhart
cc1341c3cf
chore(deps): update pdfcpu to v0.15.0 ( #1628 )
2026-08-13 20:39:11 +02:00
Julien Neuhart
1ac1d9887e
feat(pdfengines): optimize PDF images to reduce file size ( #359 )
2026-08-13 19:39:09 +02:00
Julien Neuhart
7a730cfdc2
feat(chromium): add --chromium-clear-storage to clear local storage between conversions ( #919 )
2026-08-13 14:56:46 +02:00
Julien Neuhart
b213f2ffed
fix(chromium): fit the page to content for landscape single-page ( #1390 )
2026-08-13 14:14:48 +02:00
Julien Neuhart
8d1eeaa73a
feat(chromium): screenshot a single element via the selector form field ( #947 )
2026-08-13 13:56:17 +02:00
Julien Neuhart
2f6818d3df
fix(chromium): hint at --chromium-start-timeout when Chromium fails to start
2026-08-13 12:47:45 +02:00
Julien Neuhart
38f6e466d4
chore(libreoffice): drop the now-unneeded gosec nolint
2026-08-13 12:32:55 +02:00
Julien Neuhart
e39840d5cf
ci: bump golangci-lint to v2.12.2
2026-08-13 12:31:28 +02:00
Julien Neuhart
9b48d3f84e
chore(libreoffice): silence a gosec G703 false positive on temp-file cleanup
2026-08-13 12:28:46 +02:00
Julien Neuhart
05bde96334
refactor(qpdf): make embed-metadata logging context-aware
2026-08-13 08:21:35 +02:00
Julien Neuhart
8b2c15d5de
fix(api): classify client-cancelled requests as 499 instead of 500
2026-08-13 08:21:35 +02:00
Julien Neuhart
8d327a5196
fix(libreoffice): render scrolled workbooks in full for SinglePageSheets
2026-08-13 08:21:35 +02:00
Julien Neuhart
dc61c3631e
test(libreoffice): rename the linked-content tag to libreoffice-ssrf
2026-08-13 08:21:35 +02:00
Julien Neuhart
dc7c68152c
fix(chromium): filter WebSocket handshakes against the outbound policy
2026-08-13 08:21:35 +02:00
Julien Neuhart
357c3b4a59
fix(outbound): return 403 instead of 500 for an unresolvable outbound host
2026-08-13 08:21:35 +02:00
Julien Neuhart
91f2587fef
Merge commit from fork
...
Co-authored-by: Jacob Brackett <jbrackett@makenotion.com >
2026-08-13 08:08:28 +02:00
Julien Neuhart
9ec7be4687
docs: use real identifiers in the Godoc examples
v8.35.0
2026-08-07 19:56:54 +02:00
Julien Neuhart
de7f335791
fix(outbound): keep dial pinning for hops the environment proxy declines
2026-08-07 16:37:03 +02:00
Julien Neuhart
815f586315
fix(chromium): bound the total scope matching time per conversion
2026-08-07 16:29:55 +02:00
Julien Neuhart
b71df026f6
fix(api): sanitize the output filename header
2026-08-07 16:22:42 +02:00