|
1 | 1 | # @cipherstash/cli |
2 | 2 |
|
| 3 | +## 1.0.0-rc.2 |
| 4 | + |
| 5 | +### Patch Changes |
| 6 | + |
| 7 | +- 6fcb967: `stash init` now pins the packages it installs (`@cipherstash/stack`, the |
| 8 | + integration adapter, and `stash` itself) to the exact versions this CLI |
| 9 | + release was built alongside, instead of installing bare package names that |
| 10 | + resolve through npm dist-tags (#661). During a pre-release window dist-tags |
| 11 | + lag or point at placeholders, so an unpinned `init` could silently deliver a |
| 12 | + different release than the CLI driving the setup — stale `@cipherstash/stack`, |
| 13 | + or an empty placeholder adapter — breaking `/v3` imports out of the box. The |
| 14 | + versions are embedded at build time from the release train itself |
| 15 | + (`src/release-train.ts`, the single source both the build and the runtime |
| 16 | + check against), so they can never disagree with what was published together. |
| 17 | + |
| 18 | + Init also now surfaces **version skew** on already-installed packages — |
| 19 | + unconditionally, before any prompt or early exit, including when the install |
| 20 | + is declined or partially fails. Interactively it offers to align the skewed |
| 21 | + packages in the same confirm as the missing installs (keeping `stash` a dev |
| 22 | + dependency); non-interactively it never mutates an existing install — it |
| 23 | + warns and prints the exact align commands. A package whose manifest exists |
| 24 | + but can't be read (an aborted install) is reported as skew, not treated as |
| 25 | + matching. All other install guidance is pinned the same way: the |
| 26 | + missing-package hints, `.cipherstash/context.json`'s `installCommand`, the |
| 27 | + `install-eql` manual note, the native-module recovery hint (previously |
| 28 | + `stash@latest`), and the `stash wizard` one-shot spawn (previously an |
| 29 | + unpinned `npx @cipherstash/wizard`). The `stash-cli` skill documents the |
| 30 | + behaviour, and the other bundled skills' manual install commands now carry a |
| 31 | + verify-what-resolved note. |
| 32 | + |
| 33 | +- d803914: Two guards for the release-train version embed (#661 follow-up): |
| 34 | + |
| 35 | + **Direction-aware version skew.** `stash init` now distinguishes an installed |
| 36 | + package that is _behind_ this CLI release (offered alignment / the pinned |
| 37 | + install command, as before) from one that is _newer_ than the release expects. |
| 38 | + A newer install no longer produces a downgrade command — init prints the exact |
| 39 | + `stash` update command instead (release-train lockstep guarantees that version |
| 40 | + exists), and when missing packages are about to be installed alongside newer |
| 41 | + ones it says the pairing may not match and to update `stash` first. Unreadable |
| 42 | + or malformed manifest versions always count as behind (a broken install should |
| 43 | + be offered the reinstall fix, never "looks newer, leave it"). |
| 44 | + |
| 45 | + **Version lockstep.** The release-train packages (`stash`, |
| 46 | + `@cipherstash/stack`, `@cipherstash/stack-drizzle`, |
| 47 | + `@cipherstash/stack-supabase`, `@cipherstash/prisma-next`, |
| 48 | + `@cipherstash/wizard`) are now a Changesets `fixed` group: a release of any of |
| 49 | + them republishes all of them at the same version, so the CLI's embedded |
| 50 | + version map can never go stale against the packages it pins (previously a |
| 51 | + runtime-package-only release would have left the published CLI embedding — |
| 52 | + and recommending — outdated versions). A test now asserts the fixed group |
| 53 | + stays exactly equal to the release train. |
| 54 | + |
| 55 | +- 413ca39: The legacy `@cipherstash/drizzle` package (the `@cipherstash/protect`-based |
| 56 | + Drizzle integration) is removed from the repository and the release train — |
| 57 | + `@cipherstash/protect` is sunsetting at Stack 1.0, and the package's successor |
| 58 | + is `@cipherstash/stack-drizzle`. Already-published versions remain installable |
| 59 | + from npm (deprecated, pointing here); the git history preserves the source for |
| 60 | + any emergency maintenance. The `stash-drizzle` skill and the |
| 61 | + `@cipherstash/stack-drizzle` README now state the deprecation explicitly so |
| 62 | + nobody (human or agent) installs the legacy package by mistake. |
| 63 | + - @cipherstash/migrate@1.0.0-rc.0 |
| 64 | + |
3 | 65 | ## 1.0.0-rc.1 |
4 | 66 |
|
5 | 67 | ### Minor Changes |
|
0 commit comments