Skip to content

v1.13.0 - Apply warnings, safer archives

Choose a tag to compare

@clay-good clay-good released this 09 Sep 21:10
· 118 commits to main since this release
9d4e597

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