Skip to content

Releases: HugoRCD/shelve

Shelve v3.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 21:30
a998781

Minor Changes

  • #765 903908f Thanks @voidhrithik! - Add projects to the command palette so you can search and jump to any project across your teams.

Patch Changes

  • #765 903908f Thanks @voidhrithik! - Only enforce the BotID check on production, so OTP sign-in works on preview deployments.

  • #757 f9cfe6e Thanks @HugoRCD! - Align nested project API handlers with the team from the URL path and tighten bulk project mutations.

@shelve/cli@5.3.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 21:30
a998781

Minor Changes

  • #766 ff8d85f Thanks @voidhrithik! - From a monorepo root, push, pull, diff and sync now run once per package that has its own shelve.json, and --path <dir> targets a single one. Root shelve.json settings reach sub-packages instead of being dropped, though project stays per-package.

    Three things that were quietly broken now behave: autoCreateProject: false stops project creation even under --yes, diff no longer writes an empty env file or creates projects, and shelve run falls back to its encrypted cache when the API call fails instead of exiting.

    Errors in --json mode now print the documented envelope on stderr rather than a stack trace. When a package fails partway through a fan-out, the error names it and lists the packages that already finished, in the prose hint and in error.context.

Shelve v3.3.0

Choose a tag to compare

@github-actions github-actions released this 31 May 14:08

Minor Changes

  • #754 f247f0c Thanks @HugoRCD! - Improve audit log UX with enriched API responses, timeline UI, expanded event coverage, and human-readable token scope labels.

  • #756 13840b5 Thanks @HugoRCD! - Add browser-based device login for the CLI (shelve login opens Shelve to approve; auto-creates a revocable CLI API token). Keeps SHELVE_TOKEN, --token, and --with-token for CI and manual tokens. Login and authorize pages show CLI-specific messaging when redirecting from the device flow.

@shelve/cli@5.2.0

Choose a tag to compare

@github-actions github-actions released this 31 May 14:08
fe922ff

Minor Changes

  • #756 13840b5 Thanks @HugoRCD! - Add browser-based device login for the CLI (shelve login opens Shelve to approve; auto-creates a revocable CLI API token). Keeps SHELVE_TOKEN, --token, and --with-token for CI and manual tokens. Login and authorize pages show CLI-specific messaging when redirecting from the device flow.

Shelve v3.2.0

Choose a tag to compare

@github-actions github-actions released this 30 May 19:43
8b241b2

Minor Changes

  • #752 787cf07 Thanks @HugoRCD! - Add sync policies for push/pull conflict handling, shelve diff and shelve sync, server-side protected environments on projects, and consolidate published agent skills into a single comprehensive shelve skill (remove shelve-app).

Shelve v3.1.0

Choose a tag to compare

@github-actions github-actions released this 30 May 16:03
c383b3c

What's Changed

Features 🚀

  • feat(lp): add vercel self-hosting docs by @HugoRCD in #606
  • feat(app): add otp auth method by @HugoRCD in #609
  • feat(lp): add terms and privacy notice by @HugoRCD in #610
  • feat(apps): make vault app agnostic by @HugoRCD in #617
  • feat(app): upgrade nuxt and @nuxt/ui by @HugoRCD in #632
  • feat(app): add bot-id protection by @HugoRCD in #670
  • feat: auto-redirect single-team users by @onmax in #685
  • feat(docs): use docus by @HugoRCD in #705
  • feat(app): add groups and description for env var by @HugoRCD in #724
  • feat(app): improve variable creation form UX by @HugoRCD in #725
  • feat(lp): showcase v5 security surface on the landing page by @HugoRCD in #738
  • feat(app): expose full token scoping + polish audit logs UI by @HugoRCD in #739

Bug Fixes 🐞

  • fix: apply Turborepo best practices by @anthonyshew in #683
  • fix(cli): allow global commands without package.json by @onmax in #684
  • fix: prevent PGlite deadlock in team creation by @onmax in #687
  • fix: broken css and invalid border class by @onmax in #688
  • fix(app): use request origin for invitation email URL instead of undefined config by @fmazmz in #716
  • fix(app): align welcomeEmail props with EmailService by @HugoRCD in #729
  • fix(cli): switch shelve run to spawn + process-group signal handling by @HugoRCD in #730
  • fix(changeset): retarget LP changesets to @shelve/lp by @HugoRCD in #740
  • fix(cli): credentials written in the wrong path by @HugoRCD in #745

Documentation 📚

  • docs(lp): refresh documentation for v5 encryption, tokens, audit logs by @HugoRCD in #737

Tests 🧪

  • test: add unit and E2E testing infrastructure by @HugoRCD in #721
  • test(app): add cli push and pull e2e integration tests by @HugoRCD in #722
  • test(cli): cover offline cache, credentials, secret refs, ignore files by @HugoRCD in #734
  • test(app): cover tokens, scopes, bearer auth, and audit logs by @HugoRCD in #735

Refactoring 🛠

  • refactor(app): improve members table and date across the app by @HugoRCD in #607
  • refactor(app): improve navigation by @HugoRCD in #608
  • refactor(app): update auth middleware by @HugoRCD in #666

Dependency Updates 📦

  • chore(changeset): drop no-op LP changesets by @HugoRCD in #742
  • chore(deps): update all non-major dependencies by @renovate[bot] in #743
  • chore: upgrade pnpm to v11 and add minimumReleaseAge by @HugoRCD in #744

New Contributors

Full Changelog: v2.3.3...v3.1.0

@shelve/cli@5.1.0

Choose a tag to compare

@github-actions github-actions released this 30 May 19:43
8b241b2

Minor Changes

  • #751 f9a0848 Thanks @HugoRCD! - Add agent-friendly global flags (--json, --quiet, --yes, --non-interactive), structured JSON errors on stderr, non-interactive guards across all commands, and machine-readable output for query commands. Adds shelve doctor, run spawn JSON events, GitHub Action, CI playground smoke tests, LP skills manifest check, troubleshooting docs, shelve-app agent skill, and llms.txt skill links. Includes login --token, generate --type, HTTP debug logging, fixes silent fetch failures in shelve run, full CLI documentation on shelve.cloud, and a Docus-published agent skill at /.well-known/skills/.

  • #752 787cf07 Thanks @HugoRCD! - Add sync policies for push/pull conflict handling, shelve diff and shelve sync, server-side protected environments on projects, and consolidate published agent skills into a single comprehensive shelve skill (remove shelve-app).

Patch Changes

  • #749 e64d2ec Thanks @HugoRCD! - Add a self-contained playground/run/ fixture and root pnpm play scripts so the full shelve run flow can be exercised end-to-end without leaving the repo, hitting the production API, or running the Shelve app.

    • A tiny zero-dep node:http fake Shelve API (server.mjs) seeded with a team / project / 3 environments / variables / a fake token (seed.json). Implements the four endpoints shelve run calls.
    • An orchestrator (start.mjs) that boots the server, waits for /health, then spawns the locally-stubbed CLI with the right SHELVE_* env vars injected and tears the server down on exit / Ctrl-C.
    • Root scripts: pnpm play (= shelve run dev), pnpm play:start, pnpm play:fail, pnpm play:watch, pnpm play:server (server only). Each runs pnpm -C packages/cli stub first so edits in packages/cli/src/** are picked up without a rebuild.
    • Two admin endpoints (POST /__playground/variables, POST /__playground/reset) let you trigger watch-mode reloads from another terminal with a single curl.
    • Not part of the pnpm workspace — pnpm install ignores it, no host-project lockfile drift can swallow output.

    Also fixes several long-standing shelve run correctness and cross-platform bugs the playground surfaced:

    • CLI orphaned its own child. runMain(main).then(() => process.exit(0)) resolved as soon as the run command function returned (right after spawn), killing the CLI before the child had done anything. With stdio: 'inherit' the orphaned child kept writing to the terminal so it looked fine, but signal forwarding, watch mode and exit-code propagation were all broken. Fix: the run command awaits a never-resolving promise; child.on('exit') is now the only path to process.exit.
    • --watch --restart-on-change killed the CLI on the first reload. Killing the old child fired its exit handler which called process.exit(143) before the new child could spawn. Fix: mark the outgoing child with __restarting so its exit handler is a no-op while watch is swapping in a replacement.
    • Signal handler leak in watch mode. Each respawn registered fresh process.on(SIGINT|TERM|HUP) listeners. After 10 reloads Node warned. Fix: register process-level signal handlers exactly once and have them target the current child via a module-level ref.
    • process.kill(-pid, …) doesn't work on Windows. Replaced everywhere with tree-kill, which uses taskkill /F /T on Windows and process-group kill on Unix. Dropped detached: true on spawn — no longer needed for cleanup and was what made the CLI miss SIGHUP when the terminal closed.
    • Package-manager shims (pnpm.cmd, npm.cmd, yarn.cmd) didn't spawn on Windows. Node's spawn doesn't resolve .cmd without a shell. Now uses shell: true on Windows (the shim chain is killed correctly thanks to tree-kill).
    • Parent-death watchdog. Both the CLI's run command and the playground orchestrator poll their original ppid with process.kill(ppid, 0) every 2s. If the parent disappears (terminal force-quit, parent SIGKILL'd, Cursor crashed, …), the child tears down its own subtree instead of running orphaned forever and spamming setRawMode EIO into whatever terminal it ended up attached to.
    • Suspiciously-fast exit warning. If a spawned child exits cleanly in <250ms (probably script-resolution went wrong), the CLI now prints a warning pointing at --debug and shelve run -- <pm> <script> to bypass script resolution. Script-resolution errors are debug-logged instead of swallowed.

    Smoke-tested all variants — SIGINT, terminal SIGHUP, parent kill -9, watch+restart, failing exit codes — on macOS. No orphans, ports always released, exit codes always propagated.

@shelve/cli@5.0.3

Choose a tag to compare

@github-actions github-actions released this 30 May 16:20
2d855b8

Patch Changes

  • #747 11b0a93 Thanks @HugoRCD! - Fix shelve run dev script resolution, add --debug / SHELVE_DEBUG, and clean up CLI error output so spinner failures no longer overlap with error messages.

@shelve/cli@5.0.2

Choose a tag to compare

@github-actions github-actions released this 30 May 16:03
c383b3c

Patch Changes

  • #745 8e6b0ee Thanks @HugoRCD! - Fix shelve -v reporting the cwd project version instead of the CLI version. Fix shelve login storing credentials in the legacy ~/.shelve path while API calls read from XDG/keyring storage.

v2.3.3

Choose a tag to compare

@HugoRCD HugoRCD released this 20 Jun 22:06
27c4b0e

What's Changed

Breaking Changes 💥

  • breaking(app): remove support for docker by @HugoRCD in #602

Features 🚀

Refactoring 🛠

Full Changelog: v2.3.2...v2.3.3