Skip to content

v1.13.1 - Hardened CLI, safer archives

Latest

Choose a tag to compare

@openspec-release-bot openspec-release-bot released this 17 Sep 01:11
634c557

What's New in v1.13.1

This release makes OpenSpec safer to run in repositories you have not reviewed yet, and makes archive, validation, and the agent workflows more predictable.

Improved

  • Security hardening - OpenSpec is safer in a freshly cloned repository. A config.yaml value can no longer inject directives into agent instructions, crafted files can no longer hang openspec update or openspec archive, and a repository's .npmrc can no longer redirect the update check.
  • Next step in openspec status - Status now ends with a Next: line naming the exact command that moves the change forward, so resuming a change no longer means knowing the workflow by heart.
  • Profile-aware skills - Generated skills and commands name only the workflows your profile installs, and they match natural phrasing such as "openspec propose" or "do an openspec apply".
  • Project check - Workflows confirm the project has run openspec init before writing anything, and never create an openspec/ folder as a side effect.
  • Explore and update workflows - Explore names /opsx:propose and /opsx:apply at every handoff and treats your explicit request to capture a change as confirmation. /opsx:update drafts its revisions first and writes only after you confirm.
  • Artifact templates - Generated proposal, spec, design, and tasks files open with a top-level heading, so markdownlint no longer flags every artifact.
  • Tool picker - The vendor-neutral target is listed as "Other / Universal" and can be found by searching for terms like universal, generic, or custom.
  • Nix - The flake package now ships bash, zsh, and fish completions.

Fixed

  • Archive - Archive refuses a requirement name that differs from an existing one only in case, a RENAMED section whose FROM: and TO: lines do not pair up, and a delta file it would never read. Bulk archive checks every target before writing any spec, and agent-driven archive and sync create the main spec for a new capability.
  • Validation - openspec validate reports requirements written outside a delta section, rejects a scenario with no body, warns when tracked tasks have no checkboxes, and checks a schema's apply.requires against its artifacts.
  • Task progress - Tasks under +, 1., and 1) list markers now count, and an unrecognized marker such as [~] counts as unfinished, so ✓ Complete no longer hides open work.
  • Spec parsing - Requirement headings with a closing ### sequence resolve correctly, and openspec show --json --deltas-only reports exactly the deltas archive applies.
  • Changes and lists - A change nested inside a namespace folder is reported instead of silently misread, and one dangling symlink no longer breaks openspec list.
  • Stores - openspec store remove no longer deletes a store nested inside the one being removed, a store named specs or changes no longer becomes the planning root, and store setup --no-init-git works inside an existing Git repository.
  • Configuration - A global config file with a syntax error is left untouched instead of being overwritten, openspec config edit supports an EDITOR with arguments such as code --wait, and DO_NOT_TRACK=true now disables telemetry.
  • Setup and completions - Legacy cleanup keeps your own files in old command folders, and uninstalling bash completions restores .bashrc byte for byte.

New Contributors

Full Changelog: v1.13.0...v1.13.1