Skip to content

v0.7.0

Choose a tag to compare

@lyriks-dev lyriks-dev released this 07 Jul 00:04

Adopt what you already built, and wear the brand: code-to-spec becomes a first-class, evidence-gated flow that yields the model, its provenance, and implementation coverage in one pass; the dashboard now defaults to the Lyriks look with the Unspaghettit lockup in every theme.

Added

  • Codebase adoption: code to spec is now a first-class, evidence-gated flow. Source files attach as kind:'code' sources (named by their repo-relative path), every extracted element is traced to the exact code span it came from, and a finalize gate keeps the extraction honest. The new seed_index_from_analysis MCP tool bridges the two mapping systems: every recorded span becomes a .unspa.json behavioral-index entry, so one analysis pass yields the model, its provenance (browsable in the Source Viewer), AND non-zero implementation coverage with drift detection armed from day one. Entry points: unspa adopt prints the paste-ready agent prompt, and the bundled unspa-adopt skill (installed by unspa init) encodes the whole recipe.
  • Adoption token costs roughly halved. attach_source_path takes a repo-relative path and the MCP server reads the file from disk itself, so file content is never re-emitted through the conversation; record_element_spans stamps many elements in one call with per-item failure reporting. All the guidance now steers agents to the cheap forms.
  • Project source store + paste-to-analyze. Analyzed documents live as immutable, content-hash deduplicated files in the project's sources/ folder. A new Sources tab on the project page lets you paste a document straight into the dashboard; agents pull it through list_sources / get_source, and remove_source / reset_analysis finally give both stores a way out. One document can feed several features, an analysis can link several documents, and the provenance viewer grew a document picker.

Changed

  • The Lyriks skin is now the default theme. A fresh install boots with the Lyriks.io violet/fuchsia brand. The original teal look is one switch away as the classic theme (unspa theme set classic or the header palette button), and unspa theme set default / unspa theme reset remain an explicit revert to the default.
  • The header brand is the same across every theme: the Unspaghettit logo and wordmark plus a "Powered by Lyriks.io" badge (the Lyriks three-bar mark) linking out to lyriks.io. The per-theme logo swap is gone.
  • Provenance sidecar format v2. Sidecars now store span-to-source links instead of the whole document; v1 sidecars migrate automatically at startup. Older dashboards cannot read v2, so update dashboard and MCP together.
  • Docs and agent guidance caught up with codebase adoption across the unspa://guide resource, the init context template, core concepts, getting started, and the CLI README.

Fixed

  • MCP live sync reaches the dev dashboard again. The reload notifier now probes 127.0.0.1:3000 plus both IPv6 and IPv4 literals on :8173 (the Vite dev port), drops the WSL2-squatted :5173 candidates, and allows 1 s per attempt. UNSPA_SYNC_URL still pins a custom port.
  • History entries name their author instead of unknown for writes arriving through the dashboard's own REST API, and MCP-driven entries no longer render as "AI · Anonymous".
  • sync_from_index no longer flags documented key forms as orphans (entity:<id>, feature-level invariant:<id>, surface-declared transition:<id>, declared event:<name>), matching drift detection.
  • The graph page fits the viewport exactly (no more permanent 1 px overflow scrollbar).
  • Code snippets stay black under the Lyriks theme. The violet emphasis remap no longer catches pre/code/textarea surfaces such as the implementation panel's snippet blocks and the MCP page's expanded JSON.

Full details in CHANGELOG.md.