Skip to content

v6.1.3: Isolate release verification#5

Merged
tyl3r-ch merged 3 commits intomainfrom
new-ideas
Apr 11, 2026
Merged

v6.1.3: Isolate release verification#5
tyl3r-ch merged 3 commits intomainfrom
new-ideas

Conversation

@tyl3r-ch
Copy link
Copy Markdown
Contributor

@tyl3r-ch tyl3r-ch commented Apr 11, 2026

Summary by CodeRabbit

  • Chores

    • Version bumped to 6.1.3
  • New Features

    • Added an automated release-tagging command that supports explicit versions and dry-run previews.
    • Added a registry-install verification command that checks install behavior across installers with configurable retries.
  • Workflow

    • CI release verification simplified by delegating install checks to the new verification command.

@tyl3r-ch tyl3r-ch enabled auto-merge April 11, 2026 02:28
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 11, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ca0e6c12-491d-4644-9589-65da01aacb1f

📥 Commits

Reviewing files that changed from the base of the PR and between 642b551 and 53ec957.

📒 Files selected for processing (1)
  • scripts/tag-main-release.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • scripts/tag-main-release.sh

📝 Walkthrough

Walkthrough

Adds two release automation scripts (tag-main-release.sh, verify-registry-install.js), moves registry-install verification out of the GitHub Actions workflow into the new verifier script, and bumps the package version from 6.1.2 to 6.1.3 across package.json and source constants.

Changes

Cohort / File(s) Summary
Version Updates
package.json, src/lib/constants.ts
Bumped package version to 6.1.3; added npm scripts tag:main-release and verify:registry-install.
Release Workflow & Docs
.github/workflows/release.yml, RELEASING.md
Replaced inline npx/bunx verification in the workflow with node scripts/verify-registry-install.js; updated RELEASING.md to document using bash scripts/tag-main-release.sh with --dry-run and explicit version support.
Release Automation Scripts
scripts/tag-main-release.sh, scripts/verify-registry-install.js
Added tag-main-release.sh to create/validate/push annotated v<version> tags (supports --dry-run); added verify-registry-install.js CLI to validate npm/bun installs with retries, isolated temp dirs, and expected output checks.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant CI as CI/Runner
participant Verifier as Verify Script
participant NPM as npm exec
participant Bun as bunx
participant Registry as Package Registry
CI->>Verifier: invoke verify-registry-install.js (--package, --version, --retries)
Verifier->>NPM: run npm exec --package@<version> -- ttdash --help (isolated temp dirs)
NPM->>Registry: fetch package@
Registry-->>NPM: package tarball
NPM-->>Verifier: stdout/stderr (check for "TTDash v")
Verifier->>Bun: run bunx <package>@<version> --help (isolated env)
Bun->>Registry: fetch package@
Registry-->>Bun: package tarball
Bun-->>Verifier: stdout/stderr (check for "TTDash v")
Verifier-->>CI: exit 0 on success / exit 1 with last error on failure

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~28 minutes

Possibly related PRs

Poem

🐇 I hopped through tags and tiny files,

stamped a v and checked the miles,
npm and bunx gave cheerful signs,
retries calmed the anxious lines,
now version three point one three smiles. 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: refactoring release verification logic into isolated scripts (tag-main-release.sh and verify-registry-install.js) while bumping the version to 6.1.3.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch new-ideas

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/tag-main-release.sh`:
- Around line 30-31: PACKAGE_VERSION is read before the script fast-forwards
local main, which can cause a tag/version mismatch; after the sections that
update or fast-forward main (the blocks that modify local main referenced in the
comment and the later similar blocks around lines 54-61 and 93-96), re-read
package.json and reassign PACKAGE_VERSION (and reset VERSION if used) so the tag
uses the up-to-date version; update usages of PACKAGE_VERSION/VERSION to use the
refreshed variables before creating the tag.

In `@scripts/verify-registry-install.js`:
- Around line 86-93: The runCommand function currently calls execFileSync
without a timeout which can hang indefinitely; modify runCommand (the function
named runCommand that uses execFileSync) to pass a timeout option (e.g.,
timeout: some reasonable ms like 30_000) into the execFileSync options and
surface a clear error when the timeout elapses so the existing retry loop can
continue; ensure the new option preserves cwd, env, encoding and stdio behavior
and that any timeout-related exception is handled/propagated by the caller so
retries proceed instead of blocking forever.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f3eb0d2f-bdb5-47a9-a77c-8e55f02e76c4

📥 Commits

Reviewing files that changed from the base of the PR and between 16dd19c and d15d125.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (6)
  • .github/workflows/release.yml
  • RELEASING.md
  • package.json
  • scripts/tag-main-release.sh
  • scripts/verify-registry-install.js
  • src/lib/constants.ts

Comment thread scripts/tag-main-release.sh Outdated
Comment thread scripts/verify-registry-install.js
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
scripts/tag-main-release.sh (1)

33-50: Reject unknown flags explicitly.

Unrecognized - prefixed args are currently treated as version. Consider failing early with an “unknown option” error for clearer CLI behavior.

💡 Proposed refinement
     *)
+      if [[ "$arg" == -* ]]; then
+        echo "Unknown option: $arg"
+        usage
+        exit 1
+      fi
       if [[ -n "$VERSION" ]]; then
         echo "Only one version argument is allowed."
         usage
         exit 1
       fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/tag-main-release.sh` around lines 33 - 50, The CLI currently treats
unknown hyphen-prefixed args as a VERSION; update the argument parsing in the
for loop to explicitly reject unrecognized options by adding a case branch
(e.g., '-*') that prints an "Unknown option" error, calls usage, and exits with
non-zero status; keep the existing handlers for -h|--help and --dry-run (which
sets DRY_RUN) and the VERSION assignment logic unchanged so only valid flags are
accepted and everything else is validated as the positional VERSION.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/tag-main-release.sh`:
- Around line 64-74: The script constructs TAG_NAME="v$VERSION" before ensuring
VERSION is set, causing checks to look for tag "v" when VERSION is empty; move
or add the VERSION resolution (the logic that reads the [version] argument or
falls back to package.json) to execute before computing TAG_NAME and running the
git tag-existence checks, and then use the resolved VERSION when setting
TAG_NAME; update references to TAG_NAME in the existing checks (the if blocks
that call git rev-parse and git ls-remote) so they run only after VERSION is
resolved.

---

Nitpick comments:
In `@scripts/tag-main-release.sh`:
- Around line 33-50: The CLI currently treats unknown hyphen-prefixed args as a
VERSION; update the argument parsing in the for loop to explicitly reject
unrecognized options by adding a case branch (e.g., '-*') that prints an
"Unknown option" error, calls usage, and exits with non-zero status; keep the
existing handlers for -h|--help and --dry-run (which sets DRY_RUN) and the
VERSION assignment logic unchanged so only valid flags are accepted and
everything else is validated as the positional VERSION.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a50ab832-bd42-48f1-8c9b-9189b3d31ced

📥 Commits

Reviewing files that changed from the base of the PR and between d15d125 and 642b551.

📒 Files selected for processing (2)
  • scripts/tag-main-release.sh
  • scripts/verify-registry-install.js
🚧 Files skipped from review as they are similar to previous changes (1)
  • scripts/verify-registry-install.js

Comment thread scripts/tag-main-release.sh Outdated
@tyl3r-ch tyl3r-ch merged commit 6c2534b into main Apr 11, 2026
6 checks passed
@tyl3r-ch tyl3r-ch deleted the new-ideas branch April 13, 2026 09:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant