Version Packages - #83
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 23, 2026 08:08
9c1e379 to
31cd25f
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 23, 2026 08:37
31cd25f to
92884fa
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 23, 2026 08:43
92884fa to
3ea0a20
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 23, 2026 17:28
3ea0a20 to
623b187
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 23, 2026 17:36
623b187 to
0c22c3b
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 24, 2026 13:43
0c22c3b to
325f6bd
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 24, 2026 16:21
325f6bd to
352790e
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 24, 2026 17:48
352790e to
a1e701e
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 25, 2026 02:05
a1e701e to
42b09ae
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 25, 2026 02:17
42b09ae to
e120302
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 was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@docker-doctor/cli@0.4.3
Patch Changes
485a1ee: Sanitize scanned file paths before they reach a coding agent. Rule messages were already flattened, but the paths beside them were interpolated raw into both the handoff prompt and the
.docker-doctor/*.txtreports, so a filename containing newlines could introduce its own line into an agent's instructions. Those per-rule reports now also flatten the message, matching the prompt.37b3f7d: Warn when a config names a rule or category that does not exist. Keys are matched exactly, so a typo'd rule key — or a category written as
securityinstead ofSecurity— used to be accepted and then silently match nothing, leaving a suppression the user believed was active doing nothing. Unknown keys are reported on stderr rather than failing the scan, so a config naming a rule removed in a later release still runs.1cda220: Fix
use-exec-formmissing bracket-wrappedCMD/ENTRYPOINTargs that are not valid JSON.CMD [node, index.js]was accepted as exec form because the rule only checked for a leading[and a trailing], but Docker treats anything that is not a JSON string array as shell form and runs it under/bin/sh -c— exactly what the rule exists to flag. Single-quoted elements and trailing commas were missed the same way.Exec-form detection now lives in one place,
parseExecForminparsers/, whichuse-exec-formanduse-pipefailboth use, so the two rules can no longer disagree about what exec form is. This surfaces new warnings on Dockerfiles that previously passed; the fix is to quote the elements (CMD ["node", "index.js"]).8105153: Fix
use-pipefailso its verdict reflects how Docker actually runs aRUN.SHELLis honoured. The rule's own docs prescribeSHELL ["/bin/bash", "-o", "pipefail", "-c"]as the fix, but applying it never cleared the warning, because only the singleRUNline was inspected. The active shell is now tracked per stage: a stage reachedFROM <previous stage>inherits it, while a fresh base image orscratchresets it, matching BuildKit.RUNis judged on its own argv.RUN ["/bin/bash", "-o", "pipefail", "-c", "…"]no longer warns. Conversely, aSHELLdirective no longer suppresses the warning for an exec-formRUNthat execs a different shell — Docker runs that argv directly, so theSHELLprefix never applies. This surfaces new warnings on Dockerfiles that previously passed.# TODO: use set -o pipefailcomment no longer silences a real finding, and a# avoid curl | shcomment no longer invents one.set -o errexit && echo pipefail | tee logandssh -o StrictHostKeyChecking=no h | grep pipefailnow warn. The new pattern is also linear, replacing one that backtracked pathologically on longRUNlines.Known limitation: quoting is invisible to the check, so
RUN echo "set -o pipefail" >> .bashrc && cat x | grep ystill reads as configuring the option. Tracked as atest.todoalongside the existing quoted-pipes case.77f056a: Reword all 25 rule summaries into one imperative voice ("Run the container as a non-root user", "Use multi-stage builds", "Add a .dockerignore file") and format code tokens in help text as backticks (
USER node,apk add --no-cache).rules list,rules explain, and the docs show the new wording; rule keys, severities, and diagnostic messages are unchanged.4a600a4: Route every rule through one
FROMparser.use-pipefailcarried its own regex, which required each--flagto precede the base image and lost the stage name when one followed it, soFROM base --platform=linux/amd64 AS appnever registeredappas a stage and later stages built on it stopped inheriting itsSHELL. It now uses the sharedparseFromArgs, aspin-image-versionandprefer-slim-basealready did, andcollectStageAliasesis built on it too.The reserved empty base is now recognised the same way everywhere via
isScratch.pin-image-versioncompared case-sensitively whileuse-pipefaillowercased first, soFROM SCRATCHwas reported as an image that "does not specify a tag" by one rule and treated as the empty stage by the other. It is treated as the empty stage everywhere now, so that diagnostic no longer appears.d78d960: Teach
no-root-userandavoid-dev-dependenciesabout multi-stage inheritance. A stage builtFROM <previous stage>inherits that stage's image config and layers, butno-root-userresetUSERto root on everyFROM, reporting a false positive when the parent stage had already dropped privileges, andavoid-dev-dependenciesaudited only the instructions after the lastFROM, missing dev installs whose layers the final image inherits from a parent stage. Both rules now resolve the stage chain through a sharedparseFromArgshelper in the image-ref parser.