Repository navigation
fix(deps): update dependencies - #30
Merged
Merged
Conversation
Contributor
Author
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
tannevaled
force-pushed
the
renovate/deps
branch
2 times, most recently
from
October 12, 2026 07:02
2b6a8e3 to
a34351c
Compare
tannevaled
force-pushed
the
renovate/deps
branch
from
October 13, 2026 07:28
a34351c to
e2da274
Compare
tannevaled
force-pushed
the
renovate/deps
branch
from
October 14, 2026 05:55
e2da274 to
dc0f53a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v0.56.2→v0.57.0v0.14.0→v0.20.0v0.7.0→v0.9.0Release Notes
go-crdt/crdt (github.com/go-crdt/crdt)
v0.57.0Compare Source
go-pdfkit/ops (github.com/go-pdfkit/ops)
v0.20.0Compare Source
v0.19.0Compare Source
v0.18.0Compare Source
v0.17.0Compare Source
v0.16.0: — the colour the text is painted inCompare Source
textcolourpaints the text one colour and leaves the rest of the page alone.pdfops textcolour -to '#​0000ff' report.pdf blue-text.pdf pdfops textcolour -to black -pages 1-4 scan.pdf fixed.pdf⛔ Setting a colour before each text object is not enough, and that is what
the first draft did. A text object that sets its own colour overrides it, so
a page whose paragraphs say
1 0 0 rgcame out unchanged while the toolreported success. Every colour operator inside a text object is blanked —
g,rg,k,cs,sc,scnand their stroking capitals — so the colourasked for is the one that paints.
⛔ The colour goes outside the text object, wrapped in
q/Q. A textobject does not save the graphics state, so a colour set inside one leaks into
whatever is drawn after it — which is how a recolouring turns a company's logo
the same shade as its paragraphs. A test asserts the rectangle beside the text
keeps its own red.
Both the filling and the stroking colour are set, because text has render
modes: 0 fills, 1 strokes, 2 does both. A tool that set only the fill would
leave outlined text in its old colour.
⛔ It splices, and does not re-serialise
Writing the operations back out would mean formatting every operand again,
including an inline image's still-encoded bytes, where a formatter that is
merely lossless-for-objects can change what the image means. So the
rewriting keeps every byte it does not deliberately change — which is why
reader.Operationcarries its byterange, added for this. A stream with no text comes back byte for byte
unchanged.
The colour operators are blanked with spaces rather than deleted, so every
offset after one is still the offset the scan reported. Deleting would be
correct only if the edits were applied back to front, and a rule that is
correct in one order only is a rule somebody will reorder.
⛔ What it cannot reach, it counts
Text drawn through a Form XObject is not recoloured, and the reason is not
difficulty: an XObject is shared, so recolouring one would change pages the
caller did not name. A document whose text is all inside XObjects would
otherwise come back looking converted and be unchanged — the one failure a
caller cannot see by opening the result and glancing at it. So the count is
reported:
Doc.UnreachedTextis the same answer in Go, and it is zero until the documenthas been written because until then there is nothing to have reached.
#f00is full redEach digit of a short hex colour is doubled, not shifted:
#f00isff0000, so the component is0xf × 17. A shift gives 240/255 for what everybrowser and design tool calls full red, and a logo recoloured to 94 % red is a
defect nobody can see but a printer. The test asserts the short and long forms
agree, and says the wrong number out loud so nobody has to work out which is
which.
v0.15.1: — the colour a print file declaresCompare Source
OutputIntentsandURIjoin the entries a rewrite carries.⛔ Found by an audit, not by a report
Twice in one afternoon this package was found dropping a catalogue entry
whose absence is not "no opinion" but a default — page labels, then optional
content — so the whole list was measured: a document holding twenty-three
catalogue entries, a watermark over it, and of each entry the question what
would its absence mean?
/OutputIntents/URIBoth name no page, so they copy safely. The test reaches the profile stream
and not just the array, because an
/OutputIntentswhose/DestOutputProfilewent with the rebuild declares a colour space it cannot supply.
What is deliberately not carried, now written down with its reason
/OpenAction,/AA— these are code. Dropping them is safer, and iswhat
sanitizeexists for;/Legal,/DSS— a signature's attestation and validation data. Arewrite invalidated that signature the moment it changed a byte, and carrying
the validation data of a signature that no longer verifies would say the
document is still attested when it is not;
/Threads,/Collection— they point into the document, which is why/Names /Destsis not carried either.⛔ And three the audit reported as lost that are not
/AcroForm,/Outlinesand/StructTreeRootare all carried. The audit'sfixture held an empty one of each, and an empty form, outline or structure
tree is deliberately not written.
A measured absence has to be read before it is believed — which is the other
half of why the audit was worth running, and why the report is in the README
rather than only in a commit message.
Checks
100 % statement coverage with zero uncovered blocks,
go vetandgofmtclean. Two mutations caught.
🤖 Generated with Claude Code
v0.15.0: — layers, and the hidden one every verb was revealingCompare Source
Doc.Layers,SetLayerVisible,AddLayerandDropLayer, withpdfops layersover them. This closes BentoPDF'spdf-layers.⛔⛔ And it closes a disclosure
Measured before the change, with a probe written for the purpose: a one-page
drawing with a layer switched off, run through
pdfops watermark, came backwith no
/OCPropertiesat all — the content still marked as belonging toa layer, the layer object still reachable through the page's own resources, and
nothing left saying which layer was hidden.
So the hidden layer showed. A drawing distributed with an "internal
pricing" layer turned off revealed it to any verb at all.
/OCPropertiesafter a watermarkThe witness test asserts the visibility, not the presence of the layers: a
carry that kept both and lost which was off would pass a test that counted
them, and would have exactly the same consequence.
What the file says about its own layers is obeyed
/BaseState OFFinverts the question — everything is hidden unless/ONnames it. A reader that only looked at/OFFwould report every layerof such a document as visible, and a drawing that ships with all its layers
off but one is exactly how an alternatives document is built;
/Lockedis the document asking that a layer not be switched, and-hideon one is refused: a drawing's dimension layer is what everythingelse is positioned against;
/D /Orderis the nesting, written back nested, and a string inside it isthe group's label rather than a layer.
⛔ Dropping a hidden layer is refused. What was drawn on it does not go with
it: the content stays in the page and stops being optional, so the hidden
drawing becomes permanently visible — the opposite of what somebody deleting
a layer called "internal pricing" expects.
⛔ A name is not an identifier. A drawing assembled from two others often
has two "Markup" layers, so an ambiguous name is refused with the count.
A merge keeps every source's layers, which
keepCataloguewould not: itrefuses to merge two catalogues because two forms whose fields are named the
same cannot honestly become one — but two drawings' layers can.
⛔ Three defects the tests found in my own code, each invisible to the one before
/Orderof six thousand layers passed it once and added all six thousand. The test that lowered the ceiling to two and got six back found it/Orderwas written flatFour guards were removed as dead code a coverage gap found: an explicit test
for a group's string label, which
addalready refuses by type, and threenot-found returns the validation upstream makes unreachable.
Checks
100 % statement coverage with zero uncovered blocks,
go vetandgofmtclean. Eight mutations caught, including the state this package was in
before.
🤖 Generated with Claude Code
go-pdfkit/reader (github.com/go-pdfkit/reader)
v0.9.0Compare Source
v0.8.0: — an Operation says which bytes of the stream it isCompare Source
OperationgainsStartandEnd: the byte range of the operation in thestream it was scanned from —
Startat its first operand (or at the operatorwhen it has none),
Endjust past the operator.⛔ They are here so a content stream can be edited in place
A tool that wants to put something before every
BThas two honest ways tofind one:
image's bytes mean;
does.
BTappears inside strings, inside names, and inside an inline image's data,and a byte search cannot tell those from an operator. The test pins the
discriminator:
A tool splicing at index 1 corrupts the string.
Two details that are easy to get wrong
Endis the lexer's position, not the operator's start plus its length.An inline image's operator token is
BIand its operation runs to theEIthree keywords later, so measuring from the operator would put the end in
the middle of the image's data — where a splice corrupts the image instead
of the stream around it. Asserted;
Startis the first operand's position, so splicing before an operationdoes not land between its operands and its operator.
1 0 0 RGstarts atthe
1, not at theRG.The ranges of a stream are asserted ordered and disjoint, which is what
lets a caller splice at several of them in one pass, and a stream with rubbish
in it keeps honest ranges around what the scan stepped over.
Why in
readerrather than in the callerThree packages already scan content streams through this one scanner —
extract,renderandlatex— so the primitive is shared already; what wasmissing was the one fact only the scan has. The first consumer is
go-pdfkit/ops, for a verb that recolours text without touching anything else.Checks
100 % statement coverage,
go vetandgofmtclean. Two mutations caught: therange reduced to the operator alone, and the first-operand mark overwritten by
each later operand.
🤖 Generated with Claude Code
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.