[release] Lock version v2.0.0#637
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Soft-lock the deferred "Unreleased" version for QA. - Bumped package.json .version → 2.0.0 - Regenerated release testing instructions - Generated QA issue tracker: #642
…branch exists Re-running release:lock after a previous push fails because origin/release/vX.Y.Z already exists and the local branch has diverged. Detect the remote branch via git ls-remote and switch to --force-with-lease on the push command when it exists. - orchestrate-release-lock.sh: add remote branch detection block between branch creation and Step 1. Set PUSH_FLAGS to -u --force-with-lease when origin/release/vX.Y.Z exists, -u otherwise. Use $PUSH_FLAGS in both the workflow comment and terminal output. - tests/shell/orchestrate-release-lock.bats: add ls-remote to the git stub, add a test verifying --force-with-lease appears in the workflow comment when the remote branch exists.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Benefits: - QA coverage validation runs inline during release:lock and aborts on failure, catching TC mismatches before the user pushes
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Of 46 groups, 24 had only `automated: true` TCs that CI already covers. These produced empty `()` checkbox labels in the issue, adding noise without value. The generator now skips groups where `assisted === 0 && manual === 0`, reducing the issue from 46 to 22 actionable checkboxes. A post-build validation step compares the sum of checkbox-level counts against the YAML `total_assisted`/`total_manual` values and exits non-zero on mismatch, so grouping or filtering bugs can't silently drop tests.
Soft-lock the deferred "Unreleased" version for QA. - Bumped package.json .version → 2.0.0 - Regenerated release testing instructions - Generated QA issue tracker: #644
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
On re-run, `release:lock` unconditionally told the user to create a PR, which fails when a PR already exists for the branch. The script now checks `gh pr list --head` and shows the existing PR URL instead of "Create PR" instructions in both the QA issue comment and the console summary. The push step is kept because re-runs can produce new local commits.
This comment has been minimized.
This comment has been minimized.
Soft-lock the deferred "Unreleased" version for QA. - Bumped package.json .version → 2.0.0 - Regenerated release testing instructions - Generated QA issue tracker: #645
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The generated commands now skip `automated: true` tests that CI already covers, so the tester only runs the assisted tests they need to verify.
Soft-lock the deferred "Unreleased" version for QA. - Bumped package.json .version → 2.0.0 - Regenerated release testing instructions - Generated QA issue tracker: #646
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts (1)
407-420: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winInstruction/setup mismatch in assisted no-selection test.
Line 420 says the terminal “has output text,” but after Line 407 no output is seeded anymore. This can confuse manual execution; either restore a marker write or update the step text to avoid requiring output presence.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts` around lines 407 - 420, The test's human-verification prompt claims the terminal "has output text" but the setup no longer writes any content; fix by seeding visible output before the wait: after ss.createTerminal(terminalName) and before ss.settle(TERMINAL_READY_MS) call ss.writeToTerminal (or the existing helper used elsewhere) to write a short marker line into the created terminal so the prompt matches reality, and keep the waitForHumanVerdict call and message text as-is; alternatively, if you prefer not to write output, update the waitForHumanVerdict message to remove the phrase "has output text" so the instruction doesn't require terminal content. Use the symbols ss.createTerminal, ss.writeToTerminal (or the actual write helper), ss.settle, waitForHumanVerdict, and terminalName to locate/patch the code.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts`:
- Around line 349-368: The test captures logs via getLogCapture() but never
asserts emitted log entries; after the self-paste actions and before the final
ss.log call (or immediately after it) add an assertion using the log capture to
validate the expected log was emitted (e.g., assert that logCapture contains a
message/entry matching the self-paste text like "Self-paste via R-V" or the
exact string used in ss.log). Locate getLogCapture(),
logCapture.mark('before-sts-010'), capturing.getCapturedText(),
waitForHuman(...) and ss.log('✓ Self-paste via R-V: ...') and add a single log
assertion (using the project’s logCapture assertion helper) that checks the
logger emitted the expected message/fields for this behavior.
---
Outside diff comments:
In
`@packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts`:
- Around line 407-420: The test's human-verification prompt claims the terminal
"has output text" but the setup no longer writes any content; fix by seeding
visible output before the wait: after ss.createTerminal(terminalName) and before
ss.settle(TERMINAL_READY_MS) call ss.writeToTerminal (or the existing helper
used elsewhere) to write a short marker line into the created terminal so the
prompt matches reality, and keep the waitForHumanVerdict call and message text
as-is; alternatively, if you prefer not to write output, update the
waitForHumanVerdict message to remove the phrase "has output text" so the
instruction doesn't require terminal content. Use the symbols ss.createTerminal,
ss.writeToTerminal (or the actual write helper), ss.settle, waitForHumanVerdict,
and terminalName to locate/patch the code.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: e74c93c9-572a-48c4-8974-ed1363c3cadf
📒 Files selected for processing (8)
media/devto-post-vscode-extension-v2.0.0.mdpackages/rangelink-vscode-extension/qa/qa-test-cases.yamlpackages/rangelink-vscode-extension/scripts/orchestrate-release-lock.shpackages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/dirtyBufferWarning.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/releaseNotifier.test.tstests/shell/orchestrate-release-lock.bats
✅ Files skipped from review due to trivial changes (2)
- media/devto-post-vscode-extension-v2.0.0.md
- packages/rangelink-vscode-extension/src/integration-tests/suite/dirtyBufferWarning.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/rangelink-vscode-extension/scripts/orchestrate-release-lock.sh
- tests/shell/orchestrate-release-lock.bats
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The `waitForHumanVerdict` instruction said the terminal "has output text" but the setup no longer seeds output — the tester would look for a marker that doesn't exist. Changed to "No text is selected in the terminal" which accurately describes the test precondition without implying seeded content.
Ignored Feedback:
- `coreSendCommands.test.ts` logCapture usage flagged as dead code: `logCapture.mark('before-sts-010')` follows the same pattern as TC-001 and other assisted tests in the file. `capturing.clearCaptured()` is essential for assertion precision (clears the setup `sendText` so the `assertTerminalBufferContains` assertion only sees the R-V paste). No change needed.
Ref: #637 (review)
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The "Once all checkboxes are checked" section and "Release Ready" checkbox have been superseded by the workflow comment that `orchestrate-release-lock.sh` posts on the QA issue. That comment now includes the branch preamble explaining what `release:prepare` does and what follows. The issue body should focus on the test checkboxes; the post-QA steps belong in the comment. Benefits: - Single source of truth for post-QA steps (the workflow comment) - Issue body is purely the QA checklist - No risk of the issue body and workflow comment diverging on what release:prepare does
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@coderabbitai full review -- Make sure to pay particular attention to user-facing README and CHANGELOG changes |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Find all README and CHANGELOG files
fd -i '(readme|changelog)' --type f
echo "---"
# Check git diff for README and CHANGELOG changes in the PR
git diff origin/main...HEAD -- '**/README*' '**/CHANGELOG*' 'README*' 'CHANGELOG*'Length of output: 23440
1. 📋 CHANGELOG — Missing release date (
|
|
Warning Review limit reached
More reviews will be available in 36 minutes and 43 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
WalkthroughVersion 2.0.0 release of the RangeLink VS Code extension with documentation cleanup, QA automation enhancements (automated-only group filtering and assisted-flag generation), and orchestration improvements (remote-branch detection and QA validation gating). ChangesRelease v2.0.0 with QA Automation and Orchestration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/rangelink-vscode-extension/README.md`:
- Line 150: Update the internal anchor in the README link text to the current
section anchor: change the href target string
"`#custom-ai-assistant-settings-unreleased`" to "`#custom-ai-assistant-settings`" so
the "Custom AI Assistant Settings" link resolves correctly; locate the sentence
containing "Bring Your Own AI Assistant" and update the anchor target
accordingly.
In `@packages/rangelink-vscode-extension/scripts/finalize-release.sh`:
- Around line 69-70: The sed replacement currently strips the release date by
replacing the "## [Unreleased]" header with "## [${VERSION}]" — update the
replacement to include the release date (e.g. "${VERSION} - $(date +%Y-%m-%d)")
so the finalized heading retains date metadata; specifically change the sed
invocation that references "sed -i.bak \"s/^## \\[Unreleased\\]$/##
[${VERSION}]/\" \"$CHANGELOG\"" to insert the formatted date (use the shell date
command or an existing release date variable) while still creating the .bak and
removing it afterwards, and keep using the VERSION and CHANGELOG variables.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 6326c5c7-56c9-43e7-bcbb-c18c09ba58ff
📒 Files selected for processing (20)
media/devto-post-vscode-extension-v2.0.0.mdpackages/rangelink-vscode-extension/CHANGELOG.mdpackages/rangelink-vscode-extension/README.mdpackages/rangelink-vscode-extension/package.jsonpackages/rangelink-vscode-extension/publishing-instructions/publish-vscode-extension-v2.0.0.mdpackages/rangelink-vscode-extension/qa/qa-test-cases.yamlpackages/rangelink-vscode-extension/qa/release-testing-instructions-v2.0.0.mdpackages/rangelink-vscode-extension/scripts/finalize-release.shpackages/rangelink-vscode-extension/scripts/generate-qa-issue.shpackages/rangelink-vscode-extension/scripts/orchestrate-release-lock.shpackages/rangelink-vscode-extension/scripts/resolve-qa-labels.jspackages/rangelink-vscode-extension/src/__integration-tests__/suite/builtInAiAssistants.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/dirtyBufferWarning.test.tspackages/rangelink-vscode-extension/src/__integration-tests__/suite/releaseNotifier.test.tstests/shell/finalize-release.batstests/shell/generate-qa-issue.batstests/shell/orchestrate-release-lock.batstests/shell/resolve-qa-labels.bats
| sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}]/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak" | ||
| echo -e "${GREEN}Step 1: Finalized CHANGELOG — [Unreleased] → [${VERSION}]${NC}" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Preserve release date in finalized CHANGELOG heading.
Step 1 currently removes date metadata (## [X.Y.Z]), while this script’s own contract describes a dated heading format.
Suggested fix
+# Keep changelog release headers dated for historical clarity.
+RELEASE_DATE="$(date -u +%Y-%m-%d)"
-sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}]/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak"
+sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}] - ${RELEASE_DATE}/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak"
echo -e "${GREEN}Step 1: Finalized CHANGELOG — [Unreleased] → [${VERSION}]${NC}"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}]/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak" | |
| echo -e "${GREEN}Step 1: Finalized CHANGELOG — [Unreleased] → [${VERSION}]${NC}" | |
| # Keep changelog release headers dated for historical clarity. | |
| RELEASE_DATE="$(date -u +%Y-%m-%d)" | |
| sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}] - ${RELEASE_DATE}/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak" | |
| echo -e "${GREEN}Step 1: Finalized CHANGELOG — [Unreleased] → [${VERSION}]${NC}" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/rangelink-vscode-extension/scripts/finalize-release.sh` around lines
69 - 70, The sed replacement currently strips the release date by replacing the
"## [Unreleased]" header with "## [${VERSION}]" — update the replacement to
include the release date (e.g. "${VERSION} - $(date +%Y-%m-%d)") so the
finalized heading retains date metadata; specifically change the sed invocation
that references "sed -i.bak \"s/^## \\[Unreleased\\]$/## [${VERSION}]/\"
\"$CHANGELOG\"" to insert the formatted date (use the shell date command or an
existing release date variable) while still creating the .bak and removing it
afterwards, and keep using the VERSION and CHANGELOG variables.
The `<sup>Unreleased</sup>` marker was stripped from the "Custom AI Assistant Settings" heading during release prep but the link target on line 150 still pointed to `#custom-ai-assistant-settings-unreleased`, breaking the anchor. Updated to `#custom-ai-assistant-settings` to match the current heading. The `send-terminal-selection-010` self-paste test captured logs but never asserted on them, violating T007. Added an assertion that the `TerminalInsertFactory.insert` log is present after the self-paste action. Ignored Feedback: - Preserve release date in CHANGELOG heading: Intentional design decision. The project deliberately omits dates from CHANGELOG version headers. Ref: #637 (review)
✅ CI / Integration Tests (with overrides) — run summaryDuration: 0m 58s QA TC IDs: 2 exercised across 0 features Report: View run & artifacts Reproduce locally: Feature breakdown
|
✅ CI / Integration Tests (automated) — run summaryDuration: 11m 4s QA TC IDs: 161 exercised across 0 features Report: View run & artifacts Reproduce locally: Feature breakdown
|
✅ CI / Integration Tests (with extensions) — run summaryDuration: 12m 55s Unit tests: Ran in separate Test & Validate job QA TC IDs: 193 exercised across 0 features Report: View run & artifacts Reproduce locally: Feature breakdown
|
[release] Lock version v2.0.0
Soft-lock the deferred "Unreleased" version for QA.
Summary by CodeRabbit
Release Notes
New Features
Documentation
Bug Fixes
Tests