Skip to content

Releases: cbnventures/nova

v0.17.0

23 Apr 18:43
be7c31b

Choose a tag to compare

v0.17.0 Pre-release
Pre-release

@cbnventures/nova

UPDATED

  • ESLint dx-ignore preset now ignores Next.js .next/ build output
  • License generator errors out instead of falling back to an interactive picker when project.license is missing from nova.config.json — set the license declaratively in the config.

FIXED

  • Generated publish workflow uses per-target named artifacts (build-${targetType}-${targetId}) instead of one shared build-output; multi-target projects (like an npm package plus a docs site) previously bundled every target's output into one artifact, so Cloudflare Pages and GitHub Pages publish jobs deployed everything — npm package files AND docs — instead of just the docs. npm and github-packages download steps also gained the missing path: [WORKING_DIR]/build line needed for single-target consumers.
  • Next.js publish workflows upload from build/ instead of .next/, matching the nova build/-folder convention that Docusaurus follows by default; the Next.js scaffold's next.config.mjs now sets distDir: 'build' so new apps match the convention without manual edits.
  • dx-ignore ESLint preset now ignores next-env.d.ts — Next.js regenerates this type shim on every build, so linting it is pointless.

ADDED

  • Generators now prepend a 'do not edit manually' header to .editorconfig, .gitignore, .env, .env.sample, README.md, and all .github/*.yml outputs — .env gets a fillable variant since nova owns the keys (managed via nova.config.json) but consumers fill in the values.

@cbnventures/docusaurus-preset-nova

No changes

v0.16.2

22 Apr 03:09
f3ea1d1

Choose a tag to compare

v0.16.2 Pre-release
Pre-release

@cbnventures/nova

FIXED

  • Setup instructions from nova generate github workflows now list every required GitHub secret and variable across publish targets (NPM_TOKEN, CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_PROJECT_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AMPLIFY_APP_ID, VERCEL_TOKEN, DOCKERHUB_TOKEN, etc.) — previously only template-level variables were listed and per-target publish credentials were silently omitted
  • Cloudflare Pages and GitHub Pages docusaurus deployments failed because the generated workflows downloaded the build artifact to the workspace root instead of the working directory; download-artifact now specifies the correct path in both publish target templates so wrangler and the Pages upload action find the build output.
  • Generated README.md no longer emits broken HTML or empty sections when fields are missing from nova.config.json. Each section now renders only when its source value exists: the centered header block omits the <picture> when urls.logo is missing, drops the <a href> wrapping when urls.homepage is missing, and skips entirely when project.name.title is missing; the ## Introduction section is omitted when project.description.long is missing; the ## Documentation section is omitted when urls.documentation is missing (previously left a broken []() markdown link).

@cbnventures/docusaurus-preset-nova

FIXED

  • Code segments inside mermaid node and edge labels (written with backticks in the diagram source) now render in the site's fonts.code family; previously they used the body font
  • Mermaid node and cluster corner radius now follows the site's shape.radius preset config (sharp, rounded, pill); previously the radius was hardcoded to 8px on nodes and 12px on clusters regardless of the active preset or user overrides
  • Mermaid flowchart spacing — padding between node borders and labels, horizontal node spacing, and rank spacing — now scales with the site's shape.density preset config; previously every density rendered at the comfortable default
  • Mermaid cluster titles (subgraph headers) now render in the site's fonts.display family; previously they fell back to the body font, ignoring any display font override

ADDED

  • Mermaid diagrams now center horizontally within their container when narrower than the content column; wider diagrams still scroll horizontally as before
  • Mermaid diagrams now render with consistent vertical spacing above and below so they no longer butt up against adjacent paragraphs or headings

v0.16.1

21 Apr 16:46
fc34dd5

Choose a tag to compare

v0.16.1 Pre-release
Pre-release

@cbnventures/nova

FIXED

  • Generator's publish workflow no longer fails with npm EUSAGE when publishing scoped packages — npm targets now pass --access public alongside --provenance (required when both are used), and GitHub Packages targets omit --provenance (unsupported by the registry)

@cbnventures/docusaurus-preset-nova

No changes

v0.16.0

21 Apr 15:40
6f0088d

Choose a tag to compare

v0.16.0 Pre-release
Pre-release

@cbnventures/nova

UPDATED

  • Publish workflows only check and build the specific packages being released, not the entire monorepo — the generator auto-detects turbo.json and uses --filter, or falls back to npm workspace -w flags
  • Init TUI no longer asks about workspaces already covered by your publish targets in the scopes prompt — only optional extra workspaces appear
  • Init TUI skips re-prompting for the same secret or variable when multiple publish targets share it (for example GITHUB_TOKEN used by both GitHub Packages and ghcr)
  • Sponsor gate workflow now lets you pick which issue events to listen to (issues opened/closed, comments created/edited) from the init TUI, matching the pattern used by every other workflow template
  • One unified publish workflow builds your project once and publishes to multiple destinations (npm, GitHub Packages, Cloudflare Pages, etc.) in parallel, instead of each destination running its own full build pipeline from scratch
  • Generated workflows declare the minimum required GitHub token permissions explicitly at both workflow and job level, with contents: read as the restrictive baseline instead of inheriting repo defaults
  • Inactive issue lock workflow schedule now offers daily, weekly, and monthly presets in the init TUI instead of a single hardcoded cron expression
  • Shell scripts in generated workflows render as clean multi-line run: | blocks instead of collapsed double-quoted strings with escape sequences

FIXED

  • Scheduled workflow runs no longer show "manually" appended to the run name in the GitHub Actions UI when no manual dispatch occurred
  • Init TUI target Edit action now actually edits the target in place — prompts are prefilled with the current type, workingDir, and needs, and the entry is replaced at the same index; previously the action silently removed the target and required the user to re-add it from scratch
  • SharedNovaConfig type key order now matches serialized nova.config.json output (project, entities, emails, workflows, urls, workspaces) — previously workflows sat at the end of the type definition even though the JSON layout placed it between emails and urls

ADDED

  • nova.config.json workflow entries gained a targets array (each with type and workingDir) and a scopes array (workspace paths to check and build)
  • Publish targets gained an optional needs array (list of same-type target workingDirs) so dependent packages wait for their prerequisites — the generator emits needs: ["build", "publish--", ...] on the dependent job, serializing publishes that would otherwise race (for example, a preset that depends on a core package publishing first to the registry)
  • Init TUI prompts for target needs via a multiselect of other same-type targets when adding or editing a publish target, pre-selecting existing needs on edit
  • Published npm packages and Docker images now ship with signed build provenance attestations by default (via --provenance on npm publish and actions/attest-build-provenance@v2 for Docker images)
  • 8 publish target types: npm, GitHub Packages, Docker Hub, GitHub Container Registry, Cloudflare Pages (Docusaurus), GitHub Pages (Docusaurus), AWS Amplify (Next.js), and Vercel (Next.js) — combine any of them in a single workflow
  • Init TUI rejects selecting multiple schedule variants (like daily plus weekly) on the same workflow to prevent overlapping cron runs
  • Init TUI target menu with Add, Edit, Remove, and Done options for composing multi-destination publish workflows

REMOVED

  • Legacy per-target publish templates replaced by the unified publish template: publish-to-npm, publish-to-github-packages, publish-to-docker-hub, publish-to-cloudflare-pages-docusaurus, publish-to-github-pages-docusaurus, publish-to-aws-amplify-nextjs — existing workflow config entries using these must be rebuilt via nova util init

@cbnventures/docusaurus-preset-nova

FIXED

  • Mermaid labels containing list markers (lines starting with -, *, or +) no longer render as the literal text "Unsupported markdown: list"; upgrading mermaid from 11.0.0 to 11.14.0 adopts the upstream fallback that shows the original label text instead
  • Mermaid hover tooltips (used by diagrams with click callbacks) now render in Nova's design language with light and dark variants, and no longer add a stray invisible element to the bottom of the page that inflated scroll height
  • Clickable mermaid nodes (declared via click directives) no longer render with a hyperlink underline and primary color; they now inherit their node styling so the diagram reads consistently, with the cursor and tooltip signaling interactivity
  • Mobile table of contents now nests sub-headings under their parent headings and respects toc_min_heading_level / toc_max_heading_level front matter, matching the desktop TOC behavior shipped in 0.15.4
  • Table of contents (desktop and mobile) now renders JSX and HTML inside heading values as HTML instead of literal text, so headings with inline components show the component's inner text in the TOC instead of the raw <Component> tags
  • Details summary icon and text now render on the same row when the summary mixes an SVG with text; previously an SVG's default block display forced the text onto the next line

ADDED

  • Headings now show a # hash-link on hover or keyboard focus; clicking it copies a direct URL to the section, matching the familiar Docusaurus convention

v0.15.4

20 Apr 01:38
0a3b9c6

Choose a tag to compare

v0.15.4 Pre-release
Pre-release

@cbnventures/nova

No changes

@cbnventures/docusaurus-preset-nova

FIXED

  • Mermaid flowchart node labels were blank because the default strict security level let DOMPurify strip HTML inside foreignObject; the render config now sets securityLevel to loose, matching @docusaurus/theme-mermaid
  • Table of contents rendered every heading at the top level because the flat MDX headings were never treeified; the component now builds a heading tree and filters by minHeadingLevel / maxHeadingLevel before rendering
  • BlogPreview on the homepage was empty after a cold production build because the preset read docs and blog data from .docusaurus/ before those plugins had finished writing it; data is now sourced in allContentLoaded

v0.15.3

19 Apr 17:11
e3b5e1d

Choose a tag to compare

v0.15.3 Pre-release
Pre-release

@cbnventures/nova

UPDATED

  • Workflow templates now run check before build in all publish workflows
  • Cloudflare Pages workflow template deploys to default branch instead of detached HEAD
  • Workflow templates scope secrets to step-level env instead of top-level for least-privilege access

@cbnventures/docusaurus-preset-nova

No changes

v0.15.2

19 Apr 16:13
42e4d7b

Choose a tag to compare

v0.15.2 Pre-release
Pre-release

@cbnventures/nova

FIXED

  • GitHub Packages workflow template setting registry before npm install, causing cross-repo scoped dependencies to fail with 401

@cbnventures/docusaurus-preset-nova

FIXED

  • Preset logo assets missing from published npm package

v0.15.1

19 Apr 13:57
0a98be9

Choose a tag to compare

v0.15.1 Pre-release
Pre-release

@cbnventures/nova

UPDATED

  • Consolidate publishing workflows (Cloudflare Pages, GitHub Packages, npm) out of the generator-managed workflow configuration — these workflows are too complex for the generator to handle and are maintained manually for the nova project only

FIXED

  • Fix generators writing files before user confirms — gitignore and dotenv manage menus now buffer changes in memory and only persist to disk on Save & Exit; all generators return completed/cancelled status; scaffold post-scaffold loop stops when a generator is cancelled
  • Fix CLI bin entry point changed from build artifact to source wrapper for reliable PATH resolution in CI environments

@cbnventures/docusaurus-preset-nova

No changes

v0.15.0

19 Apr 13:36
251a398

Choose a tag to compare

v0.15.0 Pre-release
Pre-release

@cbnventures/nova

UPDATED

  • ESLint presets and config migrated from .mjs/.mts to TypeScript
  • Documentation URLs migrated to nova.cbnventures.io
  • Build process split into source transpilation, type copying, template bundling, and tsconfig preset copying
  • TSConfig fan-out with dedicated source, tests, and config tsconfigs
  • 4 ESLint rules reorganized into better-fitting categories
  • Toolkit classes renamed to PascalCase convention (ToolkitCliHeader, ToolkitLogger, ToolkitMarkdownTable)
  • ESLint runtime presets renamed from env-* to runtime-*
  • Test runner migrated from Node.js native tests to Vitest
  • Parallel script runner now streams output in real-time with color-coded prefixes and configurable buffer interval

FIXED

  • runtime-cloudflare-workers TSConfig preset lib array corrected from WebWorker to ESNext

ADDED

  • 30 new ESLint rules across conventions, formatting, jsdoc, patterns, safety, syntax, and typescript categories
  • Workflow dependency chains via depends-on for ordered publishing across packages
  • Modular trigger system for workflow generator with per-template trigger files
  • GitHub generators for FUNDING.yml, issue templates, and workflow files
  • Agent convention generator producing CLAUDE.md, AGENTS.md, PROJECT_RULES.md, VISION.md, and language-specific coding guides
  • Scaffold starter template for bootstrapping new monorepos
  • Interactive workflow setup in init TUI with template, suffix, trigger, depends-on, and variable description prompts
  • .env auto-loading from project root or config directory at CLI startup
  • Scaffold commands for Next.js, Vite, Express.js, Cloudflare Workers, and Docusaurus workspaces
  • Nova config URL fields with init TUI prompts for Docker Hub, privacy policy, and terms of use
  • Public type exports via ./types/* paths
  • .novaignore marker file to exclude directories from workspace discovery
  • Must-have generators for .env.sample, .editorconfig, .gitignore, LICENSE, and README
  • Nova config project identity fields with init TUI prompts for legal name, pronouns, platforms, starting year, and license

REMOVED

  • platform-cloudflare-workers ESLint preset (merged into runtime-cloudflare-workers)

@cbnventures/docusaurus-preset-nova

ADDED

  • Mermaid diagram rendering
  • RTL language support via rtlcss
  • Reusable components including Hero, Features, Blog Preview, Install Strip, App Market Download, Spotlight, Stats, Terminology, and Typewriter
  • Motion speed levels (none/subtle/normal/expressive) with staggered reveal animations
  • SEO-optimized sitemap and Google Tag Manager plugin integration
  • Layout variants for navbar (bridge/canopy/monolith/compass) and footer (commons/embassy/ledger/launchpad)
  • Shape radius (sharp/rounded/pill) and density (compact/comfortable/spacious) customization
  • CSS generation from design tokens
  • Depth styling for cards (flat/elevated/glass) and code blocks (flat/bordered/elevated)
  • Progress bar for page transitions
  • Client-side full-text search with lunr indexing, Web Worker processing, and CJK support
  • Internationalization support with English locale
  • Shiki syntax highlighting with theme support
  • Sandpack code playground for interactive examples
  • Theme color schemes for Envoy, Foundry, Sentinel, and Signal

v0.14.0

07 Mar 21:28
226070a

Choose a tag to compare

v0.14.0 Pre-release
Pre-release

UPDATED

  • Renamed CLI aliases from 2-letter initials to readable word fragments (e.g., pv to pkg, cl to log, tc to type-chk).
  • Renamed ESLint config files from eslint.config.ts to eslint.config.mjs.
  • Updated nova.config.json workspace schema, replacing pinVersions, syncLtsEngines, and syncProperties with a unified recipes object.
  • Reorganized ESLint rules into subcategories: formatting/, nova/, patterns/, regex/, and typescript/.
  • Updated initialize utility to configure recipes instead of legacy pinVersions, syncLtsEngines, and syncProperties flags.

FIXED

  • Renamed mismatched TSConfig preset doc filenames from dx-code-style.mdx to dx-essentials.mdx and dx-ignore.mdx to dx-strict.mdx.
  • Fixed incorrect import paths in setup and presets docs from @cbnventures/nova/eslint and @cbnventures/nova/tsconfig/ to @cbnventures/nova/presets/eslint and @cbnventures/nova/presets/tsconfig/.
  • Fixed local install command in setup docs from npm i -D to npm i since Nova's toolkit exports are used at runtime.

ADDED

  • Added no-destructuring ESLint rule to ban destructuring in callbacks, loops, functions, declarations, and assignments.
  • Added no-implicit-boolean ESLint rule to require explicit comparisons instead of truthy/falsy coercion.
  • Added no-shared-type-import ESLint rule to prevent code files from importing shared type files directly.
  • Added 9 granular package-json recipes: cleanup, normalize-artifacts, normalize-bundler, normalize-dependencies, normalize-modules, normalize-tooling, sync-environment, sync-identity, and sync-ownership.
  • Added require-padding-lines ESLint rule to enforce blank lines between specific statement patterns.
  • Added no-assign-then-return ESLint rule to flag assign-then-return patterns.
  • Added run-scripts utility command to run package.json scripts by pattern in sequential or parallel mode.
  • Added no-bracket-assignment ESLint rule to enforce Reflect.set() over bracket notation assignment.
  • Added no-inline-type-annotation ESLint rule to enforce named type aliases over inline type annotations.
  • Added transpile CLI utility to compile TypeScript projects using the TypeScript compiler API.
  • Added no-catch-unknown-annotation ESLint rule to flag redundant : unknown annotations on catch clause variables.
  • Added no-ternary-in-template-literal ESLint rule to disallow ternary expressions inside template literals.
  • Added run-recipes CLI utility to orchestrate all enabled package-json recipes in sequence.
  • Added betweenSwitchCases option to the require-padding-lines ESLint rule, enforcing blank lines between non-empty switch cases while allowing grouped empty fallthrough cases.

REMOVED

  • Removed jiti devDependency from root package.json.
  • Removed tsc-alias devDependency, replaced by built-in fix-aliases.mjs script.
  • Removed npm-run-all dependency, replaced by built-in run-scripts utility.
  • Removed pin-versions, sync-lts-engines, and sync-packages recipes. Their functionality has been split into 8 granular package-json recipes.