·
7 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
- test(setup): experimental end-to-end setup-flow matrix (all ecosystems, workspaces, monorepo) by Mikola Lysenko (@mikolalysenko) in #98
- ci: remove changelog rollover from release workflow by Mikola Lysenko (@mikolalysenko) in #97
- feat(setup): add --check and --remove flags with dry-run + edit previews by Mikola Lysenko (@mikolalysenko) in #99
- feat: package-manager-agnostic PyPI post-install patch hook (.pth) by Mikola Lysenko (@mikolalysenko) in #100
- feat(cargo): project-local [patch]-redirect backend + single fail-closed guard by Mikola Lysenko (@mikolalysenko) in #102
- feat(golang): project-local go.mod [replace]-redirect backend + fail-closed guard by Mikola Lysenko (@mikolalysenko) in #104
- feat(study-crates): test-file target + reward-hacking benchmark prompt by Mikola Lysenko (@mikolalysenko) in #101
- feat(setup): fix cargo release blocker, close all 5 contract gaps, add composer + gem publishing by Mikola Lysenko (@mikolalysenko) in #105
- fix: correctness bug sweep + hardening tests across crawlers, patch, and vex by Mikola Lysenko (@mikolalysenko) in #106
- refactor(cargo): patch crates in place; drop the [patch]-redirect backend + build guard by Mikola Lysenko (@mikolalysenko) in #107
- feat(api): batch patch lookups through the public proxy in scan by Mikola Lysenko (@mikolalysenko) in #108
- feat: socket-patch vendor — committable vendoring of patched dependencies by Mikola Lysenko (@mikolalysenko) in #109
- feat: integrate vendor with scan/apply/vex — scan --vendor/--detached, vendor-aware lifecycle by Mikola Lysenko (@mikolalysenko) in #110
- fix: second-pass bug sweep — crawler traversal guards, FIFO hangs, atomic writes, CLI contract by Mikola Lysenko (@mikolalysenko) in #111
- feat: vendor/scan/apply overhaul — lockfile-driven discovery, verified auto-fetch, mismatch-tolerant apply by Mikola Lysenko (@mikolalysenko) in #115
- feat(vendor): download prebuilt patched packages from patch.socket.dev (--vendor-source) by Mikola Lysenko (@mikolalysenko) in #116
- feat: three patch-apply modes — hosted, vendored, agent — with full ecosystem + VEX coverage by Mikola Lysenko (@mikolalysenko) in #117
- cleanup: CLI simplify pass, correctness fixes, core dedups, scan split, docs sync (−587 net lines) by Mikola Lysenko (@mikolalysenko) in #120
- fix(vendor): verify the extracted tree after a service-download, not just the archive bytes by Mikola Lysenko (@mikolalysenko) in #122
- ci: fix cargo cache eviction — rust-cache, per-suite e2e keys, main-only saves by Mikola Lysenko (@mikolalysenko) in #121
- chore(deps): Bump serde_with from 3.20.0 to 3.21.0 by Dependabot (@dependabot)[bot] in #123
- feat!: remove unlock + --break-lock, fold lock cleanup into repair, reorder --help by Mikola Lysenko (@mikolalysenko) in #124
- feat(config): socket login now configures socket-patch — socket-cli config.json fallback + SOCKET_CLI_* aliases by Mikola Lysenko (@mikolalysenko) in #125
- fix(test): e2e_safety_pnpm — don't follow pnpm 10.34's store→project symlinks by Mikola Lysenko (@mikolalysenko) in #126
- docs: README overhaul on the Divio model + ecosystems doc split + auth/config alignment by Mikola Lysenko (@mikolalysenko) in #127
- feat: socket-patch --update self-update + passive update notifier by Mikola Lysenko (@mikolalysenko) in #128
- test(vendor): yarn 1 dev-flow e2e — lockfile re-save survival + strapi-incident guards by Mikola Lysenko (@mikolalysenko) in #129
- feat(cli): hidden --mode aliases — vendor/host by Mikola Lysenko (@mikolalysenko) in #130
- test(redirect): yarn classic hosted-mode capstone e2e by Mikola Lysenko (@mikolalysenko) in #132
- fix(redirect): fail closed on non-npm: berry descriptors + yarn layering regression suite by Mikola Lysenko (@mikolalysenko) in #131
- feat(vendor): warn when a wired classic yarn.lock is one berry install from silent de-patching by Mikola Lysenko (@mikolalysenko) in #133
- fix(vendor): accept sha1-only SRI as last-resort verification in registry_fetch by Mikola Lysenko (@mikolalysenko) in #134
- test: fix hostile-decoy env race flaking the setup-matrix and e2e suites by Mikola Lysenko (@mikolalysenko) in #135
- test: exclude crawler-e2e siblings from #[serial] env swaps via #[parallel] by Mikola Lysenko (@mikolalysenko) in #136
- chore(deps): Bump quinn-proto from 0.11.14 to 0.11.16 by Dependabot (@dependabot)[bot] in #137
- feat(release): publish to every supported ecosystem from one release dispatch (Maven Central + NuGet + consolidated release.yml) by Mikola Lysenko (@mikolalysenko) in #138
- feat(release): version-bump automation + shared release-readiness gate by Mikola Lysenko (@mikolalysenko) in #139
- fix(update): retry sanity-exec on ETXTBSY — deflake coverage and harden self-update against the fork/exec fd race by Mikola Lysenko (@mikolalysenko) in #140
- test(hosted): production e2e for
scan --mode hostedacross every ecosystem and package manager by Mikola Lysenko (@mikolalysenko) in #141 - test: hermetic package-manager caches — squash of #142/#143/#144 + review fixes + hosted-e2e unblock by Mikola Lysenko (@mikolalysenko) in #146
- fix(scan,get): rank patches by severity, then merge state, then patch recency by Mikola Lysenko (@mikolalysenko) in #147
- test(hosted): decide the gem tolerance by probing the server by Mikola Lysenko (@mikolalysenko) in #149
- Structure-review batch: sweep fixes, module taxonomy, npm-family dedup, coverage gaps, CI honesty by Mikola Lysenko (@mikolalysenko) in #150
- chore: blame-ignore the #150 squash; retry the bun download in the npm image by Mikola Lysenko (@mikolalysenko) in #156
- fix(get,scan): retain patch-added new files; guard empty patch records by Mikola Lysenko (@mikolalysenko) in #158
- fix(scan): warn to run
pnpm install --trust-lockfileafter a hosted pnpm redirect by Mikola Lysenko (@mikolalysenko) in #159 - fix(test): unbreak main — give four get edge-case fixtures a real file for #158's guardrail by Mikola Lysenko (@mikolalysenko) in #168
- fix(scan): honor --vendor-source in the vendored flow by Mikola Lysenko (@mikolalysenko) in #160
- fix(test): deflake update-notifier e2e on Windows CI (grace-budget race) by Mikola Lysenko (@mikolalysenko) in #171
- feat: promote maven and nuget to fully available — retire the SOCKET_EXPERIMENTAL_* gates by Mikola Lysenko (@mikolalysenko) in #170
- fix(vendor/pypi_uv): reconstruct [package.metadata] for path-sourced uv packages by Mikola Lysenko (@mikolalysenko) in #167
- fix(vendor): count skipped packages, not advisory warnings by Mikola Lysenko (@mikolalysenko) in #166
- fix(vendor): recover pypi wheels for pdm/poetry/pipenv, not just uv by Mikola Lysenko (@mikolalysenko) in #165
- fix(scan): keep hosted --json envelope schema-consistent across discovery by Mikola Lysenko (@mikolalysenko) in #163
- fix(scan): stop the false [UPDATE] nag for equal-or-older batch-ranked patches by Mikola Lysenko (@mikolalysenko) in #162
- fix(vendor): resolve installed packages via the qualified-purl-aware lookup by Mikola Lysenko (@mikolalysenko) in #157
- test(vendored): real-production e2e for
scan --mode vendoredacross every package manager by Mikola Lysenko (@mikolalysenko) in #169 - fix(scan): warn when a mode takeover leaves the other ledger stale by Mikola Lysenko (@mikolalysenko) in #164
- fix(gem): bundler vendored+hosted audit — 13 confirmed bugs fixed, tests hardened by Mikola Lysenko (@mikolalysenko) in #175
- fix(vendor): match bun tuples on version, keep CRLF by Mikola Lysenko (@mikolalysenko) in #180
- fix(hosted): honest warnings for pnpm/yarn/bun and CRLF locks by Mikola Lysenko (@mikolalysenko) in #182
- fix(hosted): re-redirect stale bun.lock URLs, fail closed on drift by Mikola Lysenko (@mikolalysenko) in #186
- fix(vendor): accurate refusals for bundled/alias/CRLF lock shapes by Mikola Lysenko (@mikolalysenko) in #185
- fix(redirect): atomic fail-closed ledger, ledger-aware updates[] by Mikola Lysenko (@mikolalysenko) in #192
- fix(vendor): carry berry lock original across patch updates by Mikola Lysenko (@mikolalysenko) in #190
- fix(vendor): refuse catalog-consumed deps in pnpm vendoring by Mikola Lysenko (@mikolalysenko) in #184
- fix(hosted): CRLF-safe yarn classic rewrite, guard npm: aliases by Mikola Lysenko (@mikolalysenko) in #188
- test(gem): hermetic hosted capstone + CHECKSUMS/transitive/scan --vendor coverage; gems.rb + CRLF redirect fixes by Mikola Lysenko (@mikolalysenko) in #177
- fix(hosted): refuse pnpm v5/v6 lock keys fail-closed by Mikola Lysenko (@mikolalysenko) in #183
- feat(install): install from install.socket.dev, optionally without github.com by Mikola Lysenko (@mikolalysenko) in #145
- fix(vendor): fail closed in the cargo vendored flow by Mikola Lysenko (@mikolalysenko) in #194
- fix(redirect): make the cargo hosted redirect transactional and fail-closed by Mikola Lysenko (@mikolalysenko) in #193
- fix(npm): detect pnpm node-linker=pnp trees as pnpm by Mikola Lysenko (@mikolalysenko) in #181
- fix(composer): redirect confirmation, discovery, setup fidelity, revert safety by Mikola Lysenko (@mikolalysenko) in #195
- fix(apply,rollback): reach the documented mismatch policy for singleton gem/pypi/maven variants; variant-scope the rollback before-blob gate by Mikola Lysenko (@mikolalysenko) in #176
- fix(vendor): write pnpm overrides to pnpm-workspace.yaml for pnpm >= 11 by Mikola Lysenko (@mikolalysenko) in #174
- fix(hosted): persist redirect ledger before lockfile writes by Mikola Lysenko (@mikolalysenko) in #187
- fix(scan): scope takeover cleanup per package, warn on hosted --prune by Mikola Lysenko (@mikolalysenko) in #191
- fix(hosted): never redirect bundled npm entries; warn on misses by Mikola Lysenko (@mikolalysenko) in #189
- fix(vendor): vendor pure-ruby (?platform=ruby) gems, gate on the purl not the staging dir by Mikola Lysenko (@mikolalysenko) in #172
- fix(cargo): fully migrate hosted<->vendored modes (C1-C7) by Mikola Lysenko (@mikolalysenko) in #196
- feat(hosted): golang hosted redirect via fork-replace + committed go.sum pin (free tier) by Mikola Lysenko (@mikolalysenko) in #173
- chore: convert production unwrap() to expect() with invariant messages by Mikola Lysenko (@mikolalysenko) in #198
- fix(vendor): gem wiring reconstruction, dir-artifact file inventory, per-section lock remotes by Mikola Lysenko (@mikolalysenko) in #179
- fix(gem): production-safe bundler plugin — tolerant bootstrap, honest digest, project-scoped stamp by Mikola Lysenko (@mikolalysenko) in #178
- fix(gem): hosted grant rotation refreshes the source block in place — no more nested Gemfile sources by Mikola Lysenko (@mikolalysenko) in #211
- fix(gem): setup --remove clears bundler's machine-local .bundle/plugin registration by Mikola Lysenko (@mikolalysenko) in #210
- fix(vex): honest machine diagnostics, stale-doc removal, out-of-sync disclosure; offline proxy-notice suppression by Mikola Lysenko (@mikolalysenko) in #208
- fix(vendor): keep artifacts and ledger when revert drift-skips the lock restore by Mikola Lysenko (@mikolalysenko) in #205
- fix(scan): surface cross-mode state — hosted wiring retained, vendored ownership, berry vendored-entry refusal by Mikola Lysenko (@mikolalysenko) in #207
- fix(vendor): pre-revert live hosted redirects when vendoring npm-family purls by Mikola Lysenko (@mikolalysenko) in #206
- fix(rollback): surface missing-blob aborts in the JSON envelope by Mikola Lysenko (@mikolalysenko) in #204
- fix(npm): discover pnpm virtual-store packages — transitive deps were invisible to apply and scan by Mikola Lysenko (@mikolalysenko) in #202
- test(yarn): version-matrix e2e capstones — yarn2/3 refusal pins, berry workspaces + pnpm-linker install proofs by Mikola Lysenko (@mikolalysenko) in #200
- fix(gem): bundler >= 2.2 floor — setup refuses to wire 1.x, check red-flags unloadable wiring by Mikola Lysenko (@mikolalysenko) in #209
- fix(scan): surface yarn PnP refusal instead of silent success-0 across all modes by Mikola Lysenko (@mikolalysenko) in #201
- fix(scan): parse pnpm v5.4/v6 lock grammars in the lockfile supplement by Mikola Lysenko (@mikolalysenko) in #203
- chore: drop Composer/Packagist, Maven Central, and NuGet CLI publishing by Mikola Lysenko (@mikolalysenko) in #214
- fix(scan): surface hosted redirect state in report-only scan --json and list by Mikola Lysenko (@mikolalysenko) in #220
- fix(gem): warn when the hosted redirect leaves a stale unpatched install materialized by Mikola Lysenko (@mikolalysenko) in #219
- fix(gem): discover flat BUNDLE_PATH gem layouts — bundler-1 env-var installs were invisible to scan/get/apply by Mikola Lysenko (@mikolalysenko) in #218
- test(gem): restore production e2e after the 2026-08-18 catalog republish by Mikola Lysenko (@mikolalysenko) in #217
- fix(apply): patch every on-disk copy of a duplicated package (multi-copy silent partial P0) by Mikola Lysenko (@mikolalysenko) in #216
- fix(hosted): rewrite both npm locks when shrinkwrap + package-lock coexist (npm 12 false-success P0) by Mikola Lysenko (@mikolalysenko) in #215
- fix(vendor): fall back to local build when the served gem stub gemspec is invalid by Mikola Lysenko (@mikolalysenko) in #221
- Omnibus: 2026-08 single-file review sweep — 100 fixes across CLI, crawlers, setup, patch engine, self-update, and all vendor backends by Mikola Lysenko (@mikolalysenko) in #223
- fix(gem): crawl bundle-path roots in bundler precedence order, patch every coexisting copy, contain config-sourced roots by Mikola Lysenko (@mikolalysenko) in #222
- fix(bun): accept bun.lock lockfileVersion 2 — bun 1.4 re-versioned an unchanged grammar by Mikola Lysenko (@mikolalysenko) in #224
- feat(get): --mode hosted|vendored with installed-version narrowing of advisory fan-outs by Mikola Lysenko (@mikolalysenko) in #226
- fix(test): confine the RLIMIT_FSIZE atomic-write repro to a child process by Mikola Lysenko (@mikolalysenko) in #227
- chore(release): bump version to 4.0.0 by Mikola Lysenko (@mikolalysenko) in #228
Full Changelog: v3.3.0...v4.0.0