rlsbl 0.67.0 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +15 -9
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -60,6 +60,7 @@ All commands auto-detect targets (versioning) from project files (`package.json`
60
60
  | `release edit` | Sync the GitHub Release notes for a given version with the corresponding CHANGELOG.md entry. Defaults to the current version if none is specified. Use --dry-run to preview changes without updating GitHub. |
61
61
  | `release undo` | Revert the most recent release by deleting the GitHub Release, removing the git tag from local and remote, and reverting the version bump commit. Requires a manual git push afterward to finalize. |
62
62
  | `release yank` | Mark a past release as deprecated (soft yank) or delete it (hard yank). Soft yank marks the GitHub Release as pre-release and prepends a deprecation notice. Hard yank deletes the release entirely while preserving the git tag. |
63
+ | `release scrub` | Scrub sensitive content from git history and update release metadata (JSONL hashes, tags, GitHub Releases). Wraps safegit scrub with automatic post-rewrite cleanup. |
63
64
  | **changelog** | Structured changelog management using JSONL entries. Add and generate CHANGELOG.md from per-commit changelog entries stored in unreleased.jsonl for precise, auditable release notes. |
64
65
  | `changelog add` | Append a structured changelog entry to the project's unreleased.jsonl file. Each entry includes a human-readable description, an entry type (feature, fix, or breaking), and optional commit hashes linking it to specific changes. The file is auto-committed unless --no-commit is passed. Use --no-user-facing to mark internal changes that should not appear in the published changelog. |
65
66
  | `changelog generate` | Compile all validated JSONL changelog entries into a formatted CHANGELOG.md file. Groups entries by type (features, fixes, breaking changes) under the appropriate version heading, preserving existing changelog content for previous releases. Use --dry-run to preview the generated Markdown output without writing to disk, which is useful for reviewing before committing. |
@@ -75,7 +76,7 @@ All commands auto-detect targets (versioning) from project files (`package.json`
75
76
  | `monorepo release-order` | Compute and display the topological release order for all projects in the monorepo workspace based on their declared depends-on relationships. Projects with no dependencies are listed first, followed by projects that depend on them, ensuring each project is released only after its dependencies. Detects and reports circular dependency errors. |
76
77
  | `monorepo outdated` | Scan all projects in the monorepo workspace for intra-workspace dependencies that reference older versions than what is currently available in the workspace. Lists each outdated dependency with the referenced version and the latest available version, helping identify which downstream projects need a version bump after upstream releases. |
77
78
  | `monorepo snapshot` | Generate a committed JSON artifact at .rlsbl-monorepo/snapshot.json summarizing all packages, versions, dependencies, and graph structure. Use --check to verify the snapshot is up-to-date without regenerating it (exits 1 if stale). |
78
- | `monorepo mirror` | Initialize a subtree mirror repository for a monorepo project. Splits the project's subtree, pushes it to the configured subtree_remote, clones the mirror, scaffolds rlsbl CI, and pushes the result. |
79
+ | `monorepo mirror` | Initialize a subtree mirror repository for a monorepo project by performing a full git subtree split of the project's history, pushing the extracted tree to the configured subtree_remote URL, cloning the resulting standalone mirror repository, running rlsbl scaffold to generate CI workflows for independent publishing, and pushing the scaffolded mirror to its remote. |
79
80
  | `monorepo graph` | Export the monorepo dependency graph in JSON, DOT (Graphviz), or indented text tree format. Supports filtering by a root package (transitive deps) or reverse package (transitive rdeps), with optional depth limiting. Use --output to write to a file instead of stdout. |
80
81
  | `monorepo impact` | Analyze the impact of changes to a package, file, or git diff range on the monorepo dependency graph. Shows direct and transitive dependents, test scope, and release candidates. Supports package names, file paths, and --since for git-based change detection. |
81
82
  | `monorepo release` | Execute a batch release of multiple monorepo packages in topological order. Reads package configurations from .rlsbl-monorepo/releases/unreleased.toml. Each package is released sequentially using the single-package release flow, with leaves (no dependencies) released first. Supports --dry-run, --yes, --allow-dirty flags. |
@@ -139,7 +140,7 @@ Created files are committed automatically by default.
139
140
  | `.rlsbl/hooks/pre-checks.sh` | User-customizable pre-checks validation |
140
141
  | `.rlsbl/hooks/pre-release.sh` | User-customizable pre-release validation |
141
142
  | `.rlsbl/hooks/post-release.sh` | User-customizable post-release actions |
142
- | `.git/hooks/pre-push` | One-liner: `exec rlsbl pre-push-check "$@"` |
143
+ | `.git/hooks/pre-push` | Captures push refs, runs `rlsbl check --tag prepush` |
143
144
  | `.rlsbl/bases/` | Three-way merge bases for scaffold |
144
145
 
145
146
  **Three-way merge:** Bases are stored at scaffold time. On re-run, user customizations and template updates merge via `git merge-file`. Conflicts get git-style conflict markers.
@@ -169,7 +170,7 @@ rlsbl includes 50 checks across 6 tags.
169
170
  | (untagged) | 4 | Additional validation checks |
170
171
 
171
172
  ```
172
- rlsbl check --all # run all 49 checks
173
+ rlsbl check --all # run all 50 checks
173
174
  rlsbl check --tag changelog # run checks by tag
174
175
  rlsbl check --name lock # run a single check
175
176
  ```
@@ -211,17 +212,22 @@ On partial failure, prints a structured summary table with remediation commands
211
212
 
212
213
  ## Pre-push hook
213
214
 
214
- The `.git/hooks/pre-push` hook calls `rlsbl pre-push-check`, which:
215
+ The `.git/hooks/pre-push` hook captures push refs from git and runs `rlsbl check --tag prepush`, which enforces:
215
216
 
216
- 1. Detects project type (`package.json`, `pyproject.toml`, or `VERSION`)
217
- 2. Extracts the current version
218
- 3. Checks that `CHANGELOG.md` contains a `## <version>` heading
219
- 4. Blocks the push if the entry is missing
217
+ 1. **Changelog coverage** -- every pushed commit must have a JSONL entry
218
+ 2. **Gitignore guard** -- rlsbl-managed files must not be gitignored
219
+ 3. **Manual push warning** -- warns when pushing to a release branch outside `rlsbl release`
220
+ 4. **Test suite** -- runs project tests (single-project) or affected project tests (monorepo)
221
+
222
+ Old hooks that call `rlsbl pre-push-check` still work but show a deprecation warning. Run `rlsbl scaffold` to update to the current hook format.
220
223
 
221
224
  To reinstall manually:
222
225
 
223
226
  ```
224
- echo '#!/bin/sh' > .git/hooks/pre-push && echo 'exec rlsbl pre-push-check "$@"' >> .git/hooks/pre-push && chmod +x .git/hooks/pre-push
227
+ echo '#!/usr/bin/env bash' > .git/hooks/pre-push
228
+ echo 'export RLSBL_PUSH_STDIN="$(cat)"' >> .git/hooks/pre-push
229
+ echo 'exec rlsbl check --tag prepush' >> .git/hooks/pre-push
230
+ chmod +x .git/hooks/pre-push
225
231
  ```
226
232
 
227
233
  ## Ecosystem tagging
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rlsbl",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Release orchestration and project scaffolding for npm, PyPI, and Go",
5
5
  "license": "MIT",
6
6
  "bin": {