Skip to content

[release] Lock version v2.0.0#637

Merged
couimet merged 25 commits into
mainfrom
release/v2.0.0
Jun 12, 2026
Merged

[release] Lock version v2.0.0#637
couimet merged 25 commits into
mainfrom
release/v2.0.0

Conversation

@couimet

@couimet couimet commented Jun 12, 2026

Copy link
Copy Markdown
Owner

[release] Lock version v2.0.0

Soft-lock the deferred "Unreleased" version for QA.

Summary by CodeRabbit

Release Notes

  • New Features

    • Added terminal self-paste functionality via keybinding
    • Introduced upgrade notification modal for version updates
  • Documentation

    • Removed "Unreleased" labels and finalized feature documentation
    • Added comprehensive release notes and publishing guides
    • Updated changelog for v2.0.0
  • Bug Fixes

    • Refined context menu behavior for terminal operations
  • Tests

    • Expanded integration test coverage for new features and release workflows

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

couimet added 2 commits June 12, 2026 12:31
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.
Repository owner deleted a comment from coderabbitai Bot Jun 12, 2026
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

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
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

couimet added 2 commits June 12, 2026 13:38
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
@github-actions

This comment has been minimized.

@github-actions

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.
@couimet couimet mentioned this pull request Jun 12, 2026
35 tasks
@github-actions

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
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

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.
@couimet couimet mentioned this pull request Jun 12, 2026
35 tasks
Soft-lock the deferred "Unreleased" version for QA.

- Bumped package.json .version → 2.0.0
- Regenerated release testing instructions
- Generated QA issue tracker: #646
@github-actions

This comment has been minimized.

Repository owner deleted a comment from coderabbitai Bot Jun 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 win

Instruction/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

📥 Commits

Reviewing files that changed from the base of the PR and between 694f255 and b25f7db.

📒 Files selected for processing (8)
  • media/devto-post-vscode-extension-v2.0.0.md
  • packages/rangelink-vscode-extension/qa/qa-test-cases.yaml
  • packages/rangelink-vscode-extension/scripts/orchestrate-release-lock.sh
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/dirtyBufferWarning.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/releaseNotifier.test.ts
  • tests/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

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

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)
Repository owner deleted a comment from coderabbitai Bot Jun 12, 2026
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

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
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Repository owner deleted a comment from coderabbitai Bot Jun 12, 2026
@couimet

couimet commented Jun 12, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review -- Make sure to pay particular attention to user-facing README and CHANGELOG changes

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor
🧩 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



@couimet, I've reviewed the README and CHANGELOG changes carefully. The unreleased-feature cleanup is thorough and well-executed. Two issues worth flagging:


1. 📋 CHANGELOG — Missing release date (packages/rangelink-vscode-extension/CHANGELOG.md)

The Keep a Changelog format requires a date alongside the version header. The bumped header is currently:

## [2.0.0]

It should include the release date:

## [2.0.0] - 2026-06-12

2. 🔗 README — Broken internal anchor link (packages/rangelink-vscode-extension/README.md)

When <sup>Unreleased</sup> was removed from the heading ### Custom AI Assistant Settings <sup>Unreleased</sup>, its GitHub anchor changed from #custom-ai-assistant-settings-unreleased to #custom-ai-assistant-settings. However, the cross-reference in the body text was not updated:

**Bring Your Own AI Assistant** : Any VS Code extension that exposes a focus command or a text-insertion command can be integrated as a RangeLink destination via settings. Three delivery tiers are supported — from direct text injection to manual paste — so RangeLink adapts to each extension's capabilities. See [Custom AI Assistant Settings](`#custom-ai-assistant-settings-unreleased`) for configuration details.

The anchor #custom-ai-assistant-settings-unreleased is now dead. It should be:

See [Custom AI Assistant Settings](`#custom-ai-assistant-settings`) for configuration details.

Everything else looks clean — the removal of all <sup>Unreleased</sup> markers is consistent, the [!IMPORTANT] banner drop is appropriate for a release branch, and the CHANGELOG comparison links are correctly wired for both [2.0.0] and the new [Unreleased] range.

✅ Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@couimet, we couldn't start this review because you've reached your PR review rate limit.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 69244c24-7630-4197-bd25-39edc984cace

📥 Commits

Reviewing files that changed from the base of the PR and between a98d4c1 and c608bb5.

📒 Files selected for processing (2)
  • packages/rangelink-vscode-extension/README.md
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts

Walkthrough

Version 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).

Changes

Release v2.0.0 with QA Automation and Orchestration

Layer / File(s) Summary
Version bump and release artifacts
packages/rangelink-vscode-extension/package.json, packages/rangelink-vscode-extension/qa/release-testing-instructions-v2.0.0.md, media/devto-post-vscode-extension-v2.0.0.md
Package version incremented to 2.0.0; release-testing instructions markdown and development article created/updated with v2.0.0 references.
Release documentation: README, CHANGELOG, publishing guide
packages/rangelink-vscode-extension/README.md, packages/rangelink-vscode-extension/CHANGELOG.md, packages/rangelink-vscode-extension/publishing-instructions/publish-vscode-extension-v2.0.0.md
README removes all <sup>Unreleased</sup> markers and warning banner; CHANGELOG transitions from "Unreleased" to v2.0.0 with updated reference links; comprehensive publishing guide generated for v2.0.0 covering marketplace and Open-VSX steps.
Release finalization workflow
packages/rangelink-vscode-extension/scripts/finalize-release.sh, tests/shell/finalize-release.bats
CHANGELOG "Unreleased" heading replaced with version link, reference links rewritten by extracting prior version and creating new compare ranges; README banner and markers removed; tests updated to expect new reference-link patterns.
QA label filtering
packages/rangelink-vscode-extension/scripts/resolve-qa-labels.js, tests/shell/resolve-qa-labels.bats
Automated-only groups (zero assisted/manual counts) now filtered from output; tests adjusted to expect filtered JSON and modified cursor-extraction behavior for automated cases.
QA checklist generation with validation
packages/rangelink-vscode-extension/scripts/generate-qa-issue.sh, tests/shell/generate-qa-issue.bats
Script now accumulates assisted/manual counts per group, appends --assisted to all pnpm commands, validates cursor/ubuntu totals match YAML, and exits on mismatch; new test harness and three tests verify assisted-flag behavior and automated-case filtering.
Release orchestration with remote-branch detection and QA gating
packages/rangelink-vscode-extension/scripts/orchestrate-release-lock.sh, tests/shell/orchestrate-release-lock.bats
Detects origin/RELEASE_BRANCH existence to apply force-with-lease when appropriate; runs QA coverage validation as a hard gate; generates conditional workflow comments for existing vs. new PRs; tests extended with stubs for remote-branch and PR checks, QA-validation control.
Terminal self-paste and notifier modal tests
packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts, packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts, packages/rangelink-vscode-extension/src/__integration-tests__/suite/builtInAiAssistants.test.ts, packages/rangelink-vscode-extension/src/__integration-tests__/suite/releaseNotifier.test.ts, packages/rangelink-vscode-extension/qa/qa-test-cases.yaml
New assisted test for terminal self-paste via R-V keybinding; context-menu test setup and prompts simplified/clarified; quick-pick assertion updated to remove displayName; release-notifier tests assert upgrade modal before human interaction; QA test case updated to describe R-V keybinding behavior.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • couimet/rangeLink#553: Updates to QA checklist generation in generate-qa-issue.sh and automated-group filtering in resolve-qa-labels.js directly overlap with this PR's QA enhancements.
  • couimet/rangeLink#606: Both PRs modify release finalization in finalize-release.sh and how CHANGELOG/README transition from "Unreleased" to versioned release state.
  • couimet/rangeLink#608: Both PRs update release automation tooling, especially orchestrate-release-lock.sh and QA issue generation, sharing code-level changes to the lock workflow.

Poem

🐰 A version hops forth with the number two,
Test cases now filter what's automated, it's true,
QA gates stand tall, and branches they know,
Release docs bloom bright as the v2 versions grow!
Self-paste keybindings dance without fuss,
While orchestration guards keep us safe—no more fuss! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 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 (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[release] Lock version v2.0.0' clearly and concisely summarizes the primary change: setting the extension version to 2.0.0 for the release branch, which is accurately reflected in the changeset (package.json version bump, release documentation, and QA testing setup).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v2.0.0

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.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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 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

📥 Commits

Reviewing files that changed from the base of the PR and between 927d825 and a98d4c1.

📒 Files selected for processing (20)
  • media/devto-post-vscode-extension-v2.0.0.md
  • packages/rangelink-vscode-extension/CHANGELOG.md
  • packages/rangelink-vscode-extension/README.md
  • packages/rangelink-vscode-extension/package.json
  • packages/rangelink-vscode-extension/publishing-instructions/publish-vscode-extension-v2.0.0.md
  • packages/rangelink-vscode-extension/qa/qa-test-cases.yaml
  • packages/rangelink-vscode-extension/qa/release-testing-instructions-v2.0.0.md
  • packages/rangelink-vscode-extension/scripts/finalize-release.sh
  • packages/rangelink-vscode-extension/scripts/generate-qa-issue.sh
  • packages/rangelink-vscode-extension/scripts/orchestrate-release-lock.sh
  • packages/rangelink-vscode-extension/scripts/resolve-qa-labels.js
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/builtInAiAssistants.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/contextMenuTerminal.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/dirtyBufferWarning.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/releaseNotifier.test.ts
  • tests/shell/finalize-release.bats
  • tests/shell/generate-qa-issue.bats
  • tests/shell/orchestrate-release-lock.bats
  • tests/shell/resolve-qa-labels.bats

Comment thread packages/rangelink-vscode-extension/README.md Outdated
Comment on lines +69 to +70
sed -i.bak "s/^## \[Unreleased\]$/## [${VERSION}]/" "$CHANGELOG" && rm -f "${CHANGELOG}.bak"
echo -e "${GREEN}Step 1: Finalized CHANGELOG — [Unreleased] → [${VERSION}]${NC}"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 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.

Suggested change
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)
@github-actions

Copy link
Copy Markdown

✅ CI / Integration Tests (with overrides) — run summary

Duration: 0m 58s

QA TC IDs: 2 exercised across 0 features

Report: View run & artifacts

Reproduce locally: ./scripts/run-integration-tests.sh --label needs-override --exclude-label cursor --exclude-assisted

Feature breakdown
Feature TCs IDs

@github-actions

Copy link
Copy Markdown

✅ CI / Integration Tests (automated) — run summary

Duration: 11m 4s

QA TC IDs: 161 exercised across 0 features

Report: View run & artifacts

Reproduce locally: ./scripts/run-integration-tests.sh --exclude-label requires-extensions --exclude-label cursor --automated

Feature breakdown
Feature TCs IDs

@github-actions

Copy link
Copy Markdown

✅ CI / Integration Tests (with extensions) — run summary

Duration: 12m 55s

Unit tests: Ran in separate Test & Validate job

QA TC IDs: 193 exercised across 0 features

Report: View run & artifacts

Reproduce locally: ./scripts/run-integration-tests.sh --exclude-label cursor --exclude-label needs-override --exclude-assisted

Feature breakdown
Feature TCs IDs

@couimet couimet merged commit 6a5e4a6 into main Jun 12, 2026
7 checks passed
@couimet couimet deleted the release/v2.0.0 branch June 12, 2026 23:12
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