Skip to content

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 07:02
435568c

Dependencies

  • Fixed GHSA-h67p-54hq-rp68 (js-yaml quadratic-complexity DoS, dev-scope via eslint) with a js-yaml >=4.2.0 override — resolves to 4.3.0.
  • Majors: commander 14→15 (CLI verified end-to-end), eslint 9→10 (three findings from newly-default rules fixed in code), @types/node 25→26; GitHub Actions checkout v7, setup-node v6, pnpm/action-setup v6, codeql-action v4.
  • Minors: in-range pnpm update across prod + dev deps; vite pin 8.0.16→8.1.4.

Added

  • qring has <key> — script-friendly existence check (exit 0 if present, 1 if not; --quiet for exit-code-only, honors --json). Decay-aware like the MCP has_secret tool, closing the last MCP→CLI parity gap.
  • Claude Code plugin is now a real installable plugin — added claude-code-plugin/.claude-plugin/plugin.json and a repo-root .claude-plugin/marketplace.json, so it installs via /plugin marketplace add I4cTime/quantum_ring + /plugin install qring@q-ring instead of file copying. Plugin components (agents/commands/skills/hooks) moved from claude-code-plugin/.claude/ to the plugin root to match the Claude Code plugin format; hooks are wired via hooks/hooks.json (${CLAUDE_PLUGIN_ROOT}) for plugin installs and .claude/settings.json for project-scoped sync installs. sync-versions now stamps both new manifests.
  • CONTRIBUTING.md — dev environment, branch/commit conventions, and the list of files to keep in sync (parity doc, plugin manifests, dashboard client bundle).
  • Docker install instructions in the README for the MCP-server container path.
  • CI smoke tests — the built qring binary (--version, --help) and an MCP initialize handshake against dist/mcp.js now run in CI after the build.
  • --json is now honored by ~20 more commandslist, inspect, delete, import, audit, audit:verify, health, analyze, recall, check, env, validate (single/--all/--list-providers), rotate, tunnel list, hook list, approvals, scan, lint all emit { ok: true, data: … }, making the whole read surface scriptable. Previously only 4 commands supported the advertised global flag.
  • Confirmation prompts on destructive operationsdelete, forget --all, teleport unpack (overwriting existing keys), wizard (regenerating existing keys), and env:generate -o (existing file) now ask before proceeding. Pass -y/--yes to skip; non-interactive use without --yes errors instead of silently proceeding. Breaking for scripts that relied on unconfirmed qring delete/forget --all — add --yes.
  • Plugin skills are now generated from a single sourcecursor-plugin/skills/*/SKILL.md is canonical; scripts/plugin-generate-skills.mjs derives the Claude Code skills and Kiro steering files (pnpm run plugin:gen-skills). Reconciles the cosmetic drift that hand-copying had accumulated.
  • CI parity guard (pnpm run check:parity + a parity CI job) — fails when the three plugins' command/agent/skill sets diverge, doc'd MCP tool counts don't match the registered count (44), manifest versions drift from package.json, generated skills are stale, or the committed dashboard client bundle differs from a fresh build.
  • Cross-platform CI matrix (experimental, non-blocking) — macOS + Windows on Node 22, ubuntu on Node 24, and a Node 18 engines-floor leg (build + CLI smoke; vitest 4 needs Node 20+). Exercises the per-OS keyring backends for the first time.
  • qring doctor — one-shot install diagnosis: keyring-backend round-trip probe (the headless-Linux failure mode), audit-dir writability + hash-chain integrity, .q-ring.json validity, active policy, and qring-mcp on PATH. Supports --json; exits 1 on any failed check.
  • qring completion bash|zsh|fish — shell completion scripts generated from the live command tree, so they can never drift from the actual commands/flags.
  • Dashboard: entanglement graph — entangled secrets now render as an SVG node/edge graph (circular layout, up to 14 keys; falls back to the pair list beyond that), as the docs always advertised.
  • Dashboard: audit-chain badge — the Audit Log card shows hash-chain integrity live (same check as qring audit:verify), green when intact, red with the break position when tampered.
  • Tag-driven release automationpnpm run release:prepare <patch|minor|major|x.y.z> bumps the version, syncs all manifests, rolls the CHANGELOG, and runs the parity guard; pushing the v* tag then runs release.yml, which creates the GitHub Release (notes from the CHANGELOG) and chains the npm/MCP publish and Homebrew update via workflow_call. See docs/releasing.md.
  • Docsdocs/troubleshooting.md (keyring backends, MCP connection, approval gate, policy-root pinning, scripting gotchas, AGPL FAQ), per-editor quickstarts (docs/quickstart-{claude-code,cursor,kiro}.md), docs/releasing.md, and a docs index in the README.

Changed

  • CLI errors are now one-line messages instead of stack traces — a central handler catches errors thrown by any command (policy denials, keyring backend failures) and prints them in red; set QRING_DEBUG=1 for the full stack.
  • pnpm audit moved off the blocking CI path — it runs as a separate non-blocking job, so a freshly disclosed advisory in a transitive dependency no longer fails unrelated PRs.
  • npm publish now triggers on release: published (was created), so draft releases can no longer publish; mcp-publisher is pinned to v1.7.9 instead of latest; publish and Homebrew workflows gained concurrency guards.

Fixed

  • qring set <key> no longer hangs when the value is pipedpromptSecret reads stdin to EOF when it isn't a TTY (e.g. echo "$VALUE" | qring set KEY).
  • Homebrew formula test asserted the string "qring" in qring --version output, which prints only the bare version — brew test would have failed on every release. It now asserts the version string.
  • Status dashboard actually sends security headersContent-Security-Policy (default-deny, inline-only), X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer (keeps the ?token= URL out of Referer headers), and Cache-Control: no-store on every response. Previously the page was CSP-compatible but no policy was enforced. Added tests for token auth (403) and the new headers.