chore(deps): update devdependency @shelve/cli to v5#160
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #160 +/- ##
=======================================
Coverage 66.83% 66.83%
=======================================
Files 81 81
Lines 2023 2023
Branches 601 601
=======================================
Hits 1352 1352
Misses 534 534
Partials 137 137 🚀 New features to boost your workflow:
|
9686537 to
f8608b8
Compare
7d1c230 to
ff252f8
Compare
ff252f8 to
ad4819c
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:
4.2.0→5.0.1Release Notes
HugoRCD/shelve (@shelve/cli)
v5.0.1Compare Source
Patch Changes
d63f766Thanks @HugoRCD! - Add test coverage for the v5 additions — encrypted offline cache (roundtrip / TTL / token rotation / tampering), OS-keychain credentials with XDG file fallback and legacy~/.shelvemigration, agent-ignore files,shelve://secret references, andparseDuration. Along the way,CredentialsServicenow creates$XDG_CONFIG_HOMEon demand so writes no longer fail on freshly provisioned machines.v5.0.0Major Changes
#731
af6266eThanks @HugoRCD! - Makeshelve runthe default secret-injection path with offline support, secret references, watch mode, and AI-agent guards. Move CLI credentials to the OS keychain.OS keychain storage
@napi-rs/keyring(macOS Keychain, libsecret, Windows Credential Manager). The fallback file is XDG-compliant (~/.config/.shelve, mode0600) and the legacy~/.shelveis migrated automatically on first read.rc9.readUser/rc9.writeUserare deprecated; we now usereadUserConfig/writeUserConfig.shelve logoutclears both the keychain entry and the rc file.Encrypted offline cache
shelve runwrites an AES-256-GCM cache at~/.shelve/cache/<sha256(team:project:env)>.json.enc, with the key derived from the API token via HKDF. Revoking the token makes the cache unreadable.--offline(force cache, fail if absent),--no-cache(never read or write),--cache-ttl 24h(override freshness).shelve runtransparently falls back to a fresh-enough cache and prints a warning instead of crashing.Secret references
shelve run --template .env.templateresolvesshelve://<team>/<project>/<env>/<KEY>references against the live or cached secrets, leaving literal values untouched. The template file can be safely committed to Git.Watch mode
shelve run --watchpolls Shelve for variable changes and forwardsSIGHUPto the child on update (let Vite/Nuxt/Next handle the reload). Use--restart-on-changeto instead kill and respawn.AI-agent guards
shelve initwrites.cursorignore,.aiderignore,.codeiumignore,.continueignore, and a# shelve-managed-blockin.gitignoreto keep.envout of model contexts.shelve pullnow detects AI-agent environments viastd-env(cursor,claude,devin,replit,gemini,codex,auggie,opencode,kiro,goose,pi) and prompts before writing plaintext secrets to disk (skip with--yes). SetAI_AGENT=<name>to force-detect.#732
5e8bf14Thanks @HugoRCD! - Harden API token storage, switch CLI auth toAuthorization: Bearer, and add scoped tokens.Breaking — token format and storage
crypto.randomBytes(32)+ Crockford base32 (no moreMath.random) and stored assha256(token)alongside a non-secret prefix. Plaintext is returned only at creation and never readable again. Existing tokens are invalidated by the migration — re-issue them after upgrading.GET /api/tokensno longer returns plaintext token values; onlyprefix,name,scopes,expiresAt,lastUsedAt,lastUsedIpare exposed.timingSafeEqualinstead of decrypting every token in a loop.Breaking — CLI authentication
Authorization: Bearer <token>instead ofCookie: authToken=…. The cookie path still works for one release window withDeprecationandSunsetresponse headers.New — scoped tokens
teamIds,projectIds,environmentIds, andpermissions: ('read' | 'write')[]. Scopes are enforced server-side viarequireTokenScope.expiresAtand a CIDRallowedCidrsallowlist.lastUsedAtandlastUsedIpare written on each authenticated request.The token UI (
/user/tokensand the create dialog) shows the prefix instead of the full token, displays scopes/expiry/last-used columns, and reveals the secret value only once at creation.Patch Changes
#730
59d2bf3Thanks @HugoRCD! - Fixshelve runsubprocess handling and add missing dependencies.tinyexec+tree-killtonode:child_process.spawnwith proper process-group signal forwarding (process.kill(-pid, signal)on POSIX). Resolves the long-standingchildPidbug where signals were never propagated and child trees were left as zombies.npxfallback (~200 ms cold start, broken signals) and use the localnode_modules/.bin/nrdirectly when shorthand commands likepnpm devare passed.tinyexecandconsolaas direct dependencies of@shelve/cli. They were transitive-only before, so installs under npm/yarn/bun broke as soon as pnpm hoisting wasn't there to save the day.#732
4c3fa8dThanks @HugoRCD! - Fixshe_…undefined…tokens: the Crockford base32 alphabet was missing twosymbols (only 30 chars instead of 32), so two random bits per token mapped to
undefinedand ended up baked into the literal token string. Switched to thestandard 32-char Crockford alphabet (
0-9+A-ZminusI/L/O/U).Tokens generated before this fix (with
undefinedbaked in) keep working —the hash is deterministic against whatever string was issued — but you should
rotate them: they're shorter than advertised in entropy and noticeably ugly.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.