| Crates.io | novalyn |
| lib.rs | novalyn |
| version | 0.1.1 |
| created_at | 2025-10-19 16:53:21.798169+00 |
| updated_at | 2025-10-21 03:40:15.725577+00 |
| description | Beautiful Changelogs using Conventional Commits |
| homepage | https://github.com/nanodelabs/novalyn |
| repository | https://github.com/nanodelabs/novalyn |
| max_upload_size | |
| id | 1890616 |
| size | 128,230 |
💅 Beautiful Changelogs using Conventional Commits - Rust port of @unjs/changelogen
✨ MVP Complete - Core features implemented with parity to the JavaScript version.
Parity Achieved: This Rust implementation aims for output parity with @unjs/changelogen. Commit classification, version inference, and markdown output should match the JavaScript version exactly. See PARITY_SPEC.md for detailed requirements.
Distribution: Currently available via Cargo. npm package distribution via NAPI-RS is planned for a future release.
See tasks.md for detailed roadmap and implementation status.
Novalyn leverages Rust's concurrency primitives for exceptional performance:
See CONCURRENCY.md for detailed performance characteristics and tuning options.
# Install from source (cargo publish pending)
git clone https://github.com/nanodelabs/novalyn
cd novalyn
cargo install --path .
# Basic usage
novalyn show # Show next version
novalyn generate # Generate changelog block
novalyn generate --write # Update CHANGELOG.md
novalyn release # Full release pipeline (tag + changelog)
novalyn --help # See all options
Create novalyn.toml in your project root:
# Customize commit types
[types.feat]
title = "✨ Features"
semver = "minor"
[types.fix]
title = "🐛 Bug Fixes"
semver = "patch"
# Scope mapping
[scopeMap]
"ui" = "frontend"
"api" = "backend"
# GitHub token for release syncing
[tokens]
github = "${GITHUB_TOKEN}"
Or use [package.metadata.novalyn] in Cargo.toml.
| Feature | JavaScript Version | Rust Version | Notes |
|---|---|---|---|
| Configuration | JSON/JS files | TOML files | Rust ecosystem standard |
| Config location | package.json or .changelogrc |
novalyn.toml or Cargo.toml |
Cargo integration |
| Parallel processing | Single-threaded | Optional multi-threaded (rayon) | Performance optimization for large repos |
| Package distribution | npm | Cargo (npm via NAPI-RS planned) | Native Rust tooling |
| Binary size | Node.js required (~50MB+) | Static binary (~5MB) | No runtime dependency |
These behaviors match the JavaScript version exactly:
chore(deps) handlingSee PARITY_SPEC.md for comprehensive parity documentation and verification strategy.
See CONTRIBUTING.md for detailed contribution guidelines.
# Using just (recommended)
just check # Run all checks (format, lint, test)
just test # Run tests
just lint # Run clippy
just fmt # Format code
just coverage # Generate coverage report (text summary)
just coverage-html # Generate HTML coverage report and open in browser
just coverage-lcov # Generate lcov.info for Codecov
# Manual commands
cargo build
cargo test
cargo clippy -- -D warnings
cargo fmt --all
# Coverage with cargo-llvm-cov
cargo install cargo-llvm-cov
cargo llvm-cov --all-features --workspace
cargo llvm-cov --all-features --workspace --html --open
# Run benchmarks
cargo bench
NOVALYN_PARALLEL_THRESHOLD=50 # Parallel processing threshold (default: 50)
RUST_LOG=debug # Enable debug logging
GITHUB_TOKEN=xxx # GitHub API token for release sync
MIT - See LICENSE for details
This project is a Rust port of @unjs/changelogen by the UnJS team.