github Fission-AI/OpenSpec v1.13.0
v1.13.0 - Apply warnings, safer archives

2 hours ago

What's New in v1.13.0

Archive and the delta parser stop quietly changing or dropping what you wrote, and apply now tells you when a change has no specs.

New

  • Apply flags a change with no delta specs - openspec instructions apply used to report a change as ready whenever its tasks existed, even with no spec deltas at all, which is the state openspec validate rejects. It now warns in both text and --json, and names both ways out: write the specs, or declare skip_specs: true.

Improved

  • Explore finds your existing specs - Generated guidance never named openspec list --specs, so an agent asked to read the current specs enumerated in-flight changes instead and reported the step done against the wrong thing. Explore now lists the spec inventory beside the change list, and reads a capability with the store-aware command.
  • Init and update name the workflows your profile left out - A /opsx: command that was never installed used to read as a broken setup. Both commands now say which workflows are missing and how to add them.
  • Propose reads project context before planning - Context is loaded from the selected project or store root before any planning decision. In a directory with no OpenSpec root, propose stops without writing and offers to initialize rather than creating one silently.

Fixed

  • Archive no longer edits your fenced code - A requirement documenting a sample with two or more blank lines in a row had that sample rewritten on every archive. Blank-line tidying is now fence-aware, which matters for YAML, Python, and expected-output fixtures.
  • Removals and renames written with * or + now take effect - CommonMark allows all three bullet markers, but only - was read. A removal or rename written the other way matched nothing: validate passed, archive exited 0 reporting success, and the requirement stayed exactly as it was.
  • Every delta section applies, not just one copy - A file with two ## ADDED Requirements sections silently kept one of them, so archive applied less than was written and moved the change to the archive anyway. You do not have to repeat a header deliberately to hit this: a delta documenting OpenSpec's own syntax inside a fenced example produces the duplicate on its own.
  • Capabilities whose bullets wrap can be retired again - retire_capabilities refused any spec whose scenario bullets ran onto a second line, which is most of them in a repo that wraps prose at a column limit. Specs bulleted with + are covered too.
  • Update repairs damaged command files - openspec update decided a tool was current from its skill files alone, so a hand-edited or truncated command file left it printing "All 1 tool(s) up to date" and repairing nothing. It now compares command-file content as well.

New Contributors

Full Changelog: v1.12.0...v1.13.0

Don't miss a new OpenSpec release

NewReleases is sending notifications on new releases.