Skip to content

scriveno 3.6.0: multi-book identity, slug naming, series store

Choose a tag to compare

@hannsxpeter hannsxpeter released this 27 Jun 02:23
· 8 commits to main since this release

Multi-book identity, slug-based naming, and a first-class series store.

What changed

  • Your books now have a real identity. Each project records its title, author, and a stable slug in config.json, so export, cover, and series tooling stop guessing. Existing projects keep working; the identity is filled in for new and imported works.
  • Deliverables that never collide. Exports and covers still write their familiar default filenames, and now also write a self-describing {slug}-... copy when your book has an identity. Collect three books' files in one upload folder and they no longer overwrite each other. Per-platform EPUB builds (ebook-{platform}.epub) are now named per platform, matching the print builds.
  • Series are first-class. The series bible lives in a safely named per-series store (~/.scriveno/series/{series_slug}/) with a real books.json index and a legacy-path migration shim. A series can now carry a shared voice profile, art direction, and glossary that each book inherits and can override, which is what keeps Book 5 sounding, and looking, like Book 1.
  • Honest project switching. /scr:manager --switch now tells you the exact cd to run instead of implying a persistent switch it never had.
  • Translation and reissue covers. Translated and alternate editions get their own cover slots (build/{lang}/..., build/editions/{edition}/...), falling back to your primary cover when none is set.

Under the hood

  • New canonical contract docs/naming-conventions.md and dependency-free helper lib/slug.js (generic sanitizeSlug + buildDeliverableName).
  • New tests: slug-helper unit coverage and a series-naming contract suite. Full suite green (2151 tests), writing-policy clean.

See the CHANGELOG for the full list.