Releases: couimet/rangeLink
Releases · couimet/rangeLink
Release list
VS Code Extension v2.0.0
Added
- RangeLink Menu (R-M) - Press
Cmd+R Cmd+M(Mac) /Ctrl+R Ctrl+M(Win/Linux) or click the🔗 RangeLinkstatus bar item to access ⚡ quick actions- Jump to Bound Destination (shows quick pick of available destinations when unbound)
- Unbind Destination (when bound)
- Go to Link
- Show Version Info
- Bind to Destination (R-D) - Direct keybinding to open the destination picker and bind (#330)
- Keyboard shortcut:
Cmd+R Cmd+D(Mac) /Ctrl+R Ctrl+D(Win/Linux) - Shows all available destinations (terminals, text editors, AI assistants) in a single picker
- Smart bind handles the already-bound case with a confirmation dialog
- Also available via Command Palette as "RangeLink: Bind to Destination"
- Keyboard shortcut:
- Terminal Picker - Choose which terminal to bind to instead of auto-binding the active one (#255)
- Command Palette "Bind to Terminal" shows a QuickPick list of eligible terminals
- Active terminal marked with "active" badge, bound terminal marked with "bound" badge (dual badge "bound · active" when same terminal)
- Terminals sorted: bound first, active second, rest in natural order — bound terminal never hidden behind "More terminals..."
- Hidden IDE terminals (e.g., Cursor's background terminal) are automatically filtered out
- Extension-managed pty terminals (Jest test runners, task runners, debug consoles, etc.) are filtered out across every entry point — picker, context-menu "Bind Here", and the "Bind to Terminal" command — so you can only target shell terminals that actually accept input (#592)
- Configurable inline threshold:
rangelink.terminalPicker.maxInline(default:5) - When more terminals than the threshold exist, extras collapse into "More terminals..." which opens a secondary picker
- Escaping the secondary picker returns to the destination picker
- Terminal picker also appears inline in the RangeLink Menu (
R-M) and destination picker when unbound
- File Picker - Choose a specific open file as text editor destination (#355, #356)
- Open files appear as individual items inline in the destination picker; active file (frontmost tab) per tab group shown first
- Bound file marked with "bound" badge and sorted to the top
- Files with duplicate names show path disambiguation
- When more open files exist beyond the inline list, extras collapse into "More files..." which opens a secondary picker
- Secondary picker organizes all open files into "Active Files" section + per-"Tab Group N" sections
- Escaping the secondary picker returns to the destination picker
- Gemini Code Assist Integration - Paste destination for Google's Gemini Code Assist (#529)
- Automatically inserts links and selected text directly into Gemini Code Assist
- Requires Gemini Code Assist extension (
Google.geminicodeassist) - Configurable cold-start timing:
rangelink.destinations.gemini.coldStartDelayMs(default:2500) andrangelink.destinations.gemini.coldRefocusIntervalMs(default:300) — tune for your machine's speed; increase the delay on slower hardware if the initial paste after binding silently fails to reach the Gemini panel
- Custom AI Assistants - Connect RangeLink to any AI tool with a VS Code extension (#500)
- New setting
rangelink.customAiAssistants: three-tier command schema —insertCommands(direct text delivery),focusAndPasteCommands(focus + auto-paste),focusCommands(focus + manual paste toast) - Custom assistants appear in the destination picker (R-D) alongside built-in destinations
- Lazy tier resolution: RangeLink checks which commands are registered on first use and caches the winning tier — no per-operation overhead
- Override built-in assistants (Cursor, Claude Code, Copilot) via config with automatic fallback to hardcoded commands
${content}template interpolation for insert commands with non-standard argument formats
- New setting
- Claude Code Cold-Start Timing - Configurable cold-start settings for the Claude Code Extension destination
rangelink.destinations.claudeCode.coldStartDelayMs(default:2500) andrangelink.destinations.claudeCode.coldRefocusIntervalMs(default:300) — tune for your machine's speed; increase the delay on slower hardware if the initial paste after binding silently fails to reach the Claude Code panel
- Release Notifier - Once-per-upgrade notification so new versions don't go unnoticed (#525)
- On upgrade, shows "RangeLink updated to vX.Y.Z. See what changed!" with "What's New" and "Skip for this version" buttons
- "What's New" opens the GitHub releases page; "Skip for this version" silences without opening the browser
- Dismissing (X) is temporary — the notification reappears on the next activation until you act
- Clipboard Preservation - RangeLink no longer silently overwrites your clipboard (#353)
- New setting
rangelink.clipboard.preserve("always"|"never", default:"always") - Under
"always", your prior clipboard content is saved before each transport operation (R-L, R-V, R-F, AI assistant paste, terminal paste) and restored afterward — your clipboard is only permanently overwritten when you explicitly ask for it (R-C) - Under
"never", your clipboard always contains the last RangeLink output (previous behavior)
- New setting
- Send File Path Commands - Send file paths directly to bound destinations (#243)
- Context menu commands - See "Context Menu Integrations" section below for full details
- Command palette commands - For the currently active editor
- "Send Current File Path" - Sends workspace-relative path (default)
- "Send Current File Path (Absolute)" - Sends absolute path
- Keyboard shortcuts -
Cmd+R Cmd+Ffor relative,Cmd+R Cmd+Shift+Ffor absolute - Shell-safe quoting - Paths with special characters (spaces, parentheses, etc.) are automatically wrapped in single quotes when sent to any destination, matching Cursor's drag-drop behavior. Clipboard retains the unquoted path.
- Includes separate
smartPadding.pasteFilePathsetting (default:both) for controlling whitespace around pasted paths - Copies to clipboard + sends to bound destination (like other send commands)
- Shows quick pick to bind a destination when unbound
- Context Menu Integrations - Right-click access to RangeLink commands (#73, #243, #246)
- Explorer (right-click on files):
- "RangeLink: Send File Path" - Send absolute path to bound destination
- "RangeLink: Send Relative File Path" - Send relative path to bound destination
- "RangeLink: Bind Here" - Open file and bind it as text editor destination (#247)
- "RangeLink: Unbind" - Unbind current destination (when bound, files only)
- Editor Tab (right-click on tabs):
- "RangeLink: Send File Path" - Send absolute path to bound destination
- "RangeLink: Send Relative File Path" - Send relative path to bound destination
- "RangeLink: Bind Here" - Bind this editor as destination (file/untitled only)
- "RangeLink: Unbind" - Unbind current destination (when bound)
- Editor Content (right-click inside editor):
- "RangeLink: Send RangeLink" - Send relative path link to destination (has selection)
- "RangeLink: Send RangeLink (Absolute)" - Send absolute path link to destination (has selection)
- "RangeLink: Send Portable Link" - Send BYOD portable link to destination (has selection)
- "RangeLink: Send Portable Link (Absolute)" - Send BYOD portable link to destination (has selection)
- "RangeLink: Send Selected Text" - Send selected text to bound destination (has selection)
- ─── visual separator ───
- "RangeLink: Send This File's Path" - Send absolute path to bound destination
- "RangeLink: Send This File's Relative Path" - Send relative path to bound destination
- "RangeLink: Bind Here" - Bind this editor as destination (file/untitled only)
- "RangeLink: Unbind" - Unbind current destination (when bound)
- Terminal Tab (right-click on tabs):
- "RangeLink: Bind Here" - Bind this terminal as destination
- "RangeLink: Unbind" - Unbind current destination (when bound)
- Terminal Content (right-click inside terminal):
- "RangeLink: Send Selected Text" - Send the selected terminal text to the bound destination (hidden when the terminal IS the bound destination; opens the destination picker if nothing is bound)
- "RangeLink: Bind Here" - Bind this terminal as destination
- "RangeLink: Unbind" - Unbind current destination (when bound)
- Explorer (right-click on files):
- Navigation clamping feedback - Navigation now warns when a link points beyond file boundaries instead of silently landing at the nearest valid position
- Navigation toast settings - Control which toasts appear after clicking a RangeLink (#54)
rangelink.navigation.showNavigatedToast(default:true) — suppress the "Navigated to …" info toast for a quieter workflowrangelink.navigation.showClampingWarning(default:true) — suppress the clamping warning when navigation is adjusted to file boundaries- Navigation itself is unaffected — only the feedback toasts are controlled
- Dirty Buffer Warning - Warning when generating a link from a file with unsaved changes (#298)
- Shows a dialog with options: "Save & Generate", "Generate Anyway", or dismiss to abort
- Controlled by
rangelink.warnOnDirtyBuffersetting (default:true) - Helps avoid creating links that may point to incorrect positions after the file is saved
- Also applies to Send File Path (R-F) commands — warns when the file has unsaved changes that may cause the AI tool to read stale content from disk (#513)
- Send Terminal Selection (R-V) - Send terminal text to your bound destination (#331)
- Keyboard shortcut:
Cmd+R Cmd+V(Mac) / ...
- Keyboard shortcut:
VS Code Extension v1.0.0
Added
- Fully automatic paste for Claude Code and Cursor AI - Zero-friction workflow completes the v0.3.0 vision
- v0.3.0 required manual
Cmd+Vpaste after link was copied — that friction is gone - Now uses clipboard + programmatic paste technique for seamless auto-insertion
- All AI chat destinations now provide identical UX: select code → link appears → keep typing
- "One Keybinding to Rule Them All" — now it truly does
- Switch AI assistants without relearning shortcuts — same R-keybindings, any AI
- v0.3.0 required manual
- GitHub Copilot Chat Integration - Paste destination for GitHub Copilot Chat
- Automatically inserts links and selected text directly into GitHub Copilot Chat
- Command: "Bind RangeLink to GitHub Copilot Chat Destination"
- Requires GitHub Copilot Chat extension
- Consistent with RangeLink's unified paste destination workflow (auto-focus, cursor positioning)
- Smart bind with confirmation - Quick switching between paste destinations
- Run any "Bind to..." command when already bound to automatically replace with confirmation
- QuickPick dialog shows current and new destination before replacing
- No need to manually unbind first - flow handles unbind → bind seamlessly
- Prevents accidental binding to same destination (shows info message instead)
- Toast notifications show replacement info: "Unbound X, now bound to Y"
- Integrated with all bind commands (Claude Code, Cursor AI, GitHub Copilot Chat, Terminal, Text Editor)
- Paste Selected Text to Destination (R-V) 🚐 - Send selected text directly to bound destinations, not just links
- New command: "Paste Selected Text to Bound Destination" (
Cmd+R Cmd+V/Ctrl+R Ctrl+V) - Works with all destination types: Claude Code Extension, Cursor AI, GitHub Copilot Chat, Terminal, Text Editor
- Supports single and multi-selection (concatenates with newlines)
- Clipboard fallback when no destination bound
- Perfect for quickly sharing code snippets with AI assistants
- Consistent with existing paste destination workflow (auto-focus, cursor positioning)
- Why 🚐 (RV emoji)? Keybinding preserves
Rprefix (like RangeLink'sR+L), andVmirrors the standard paste gesture (Cmd+V). The RV/camper emoji is a playful reminder of this mnemonic.
- New command: "Paste Selected Text to Bound Destination" (
- Jump to Bound Destination (R-J) - Quickly focus your currently bound destination
- New command: "Jump to Bound Destination" (
Cmd+R Cmd+J/Ctrl+R Ctrl+J) - Instantly brings focus to terminal, text editor, or AI chat destination
- No more hunting for bound destinations buried under tabs or panes
- New command: "Jump to Bound Destination" (
- RangeLink Clipboard-Only Mode (R-C) - Generate RangeLinks directly to clipboard, bypassing paste destinations
- New commands: "Copy Range Link (Clipboard Only)" (
Cmd+R Cmd+C/Ctrl+R Ctrl+C) - Generates formatted RangeLinks (e.g.,
src/auth.ts#L42C10-L58C25) with relative or absolute paths - Useful for sharing absolute-path links across projects or IDE instances without requiring to unbind a destination first.
- Gives explicit control over when links paste to bound destinations vs clipboard only
- New commands: "Copy Range Link (Clipboard Only)" (
- i18n foundation - Message code system for future localization support. English only currently.
Changed
- Less intrusive auto-unbind notifications - When a bound text editor document closes, the auto-unbind notification now appears in the status bar (2 seconds) instead of as a popup dialog. This makes the background cleanup less disruptive to your workflow.
Fixed
- Single-position navigation - Fixed regression introduced in v0.3.0 where navigating to single-position links (e.g.,
file.ts#L32C1) showed invisible cursors instead of visible 1-character selections.
VS Code Extension v0.3.0
Added
- Paste Destinations System - Universal paste destination framework for auto-sending links
- Unified architecture supports AI chat integrations, terminal and text editor
- One destination active at a time (Claude Code OR Cursor AI OR terminal OR text editor)
- Seamless workflow: select code → link appears where you need it
- Claude Code Extension Integration - Streamlined clipboard workflow for Anthropic's official Claude extension
- Automatically copies link and opens Claude Code chat panel
- Works in both VSCode and Cursor IDE
- One-paste workflow: user pastes with Cmd/Ctrl+V (workaround for API limitation)
- Command: "Bind RangeLink to Claude Code Destination"
- Cursor AI Integration - Streamlined clipboard workflow for Cursor IDE
- Automatically copies link and opens Cursor chat panel
- One-paste workflow: user pastes with Cmd/Ctrl+V (workaround for API limitation)
- Command always discoverable in Command Palette for both VSCode and Cursor
- Shows helpful message in VSCode directing users to Cursor IDE
- Command: "Bind RangeLink to Cursor AI"
- Text Editor Destination - Paste generated links directly into any text-based editor
- Works with untitled/scratch files, markdown, code files, any text document
- Perfect for drafting AI prompts before sending to AI assistants
- Bind any text editor as paste destination (Command Palette → "Bind RangeLink to Text Editor Destination")
- Requires split editor (2+ tab groups) and bound file must be topmost tab for auto-paste
- Auto-paste links at cursor position with smart padding
- Auto-focuses bound editor after paste (RangeLink's unified UX pattern across all destinations)
- Clipboard fallback with reminder when bound file hidden behind other tabs
- Blocks binary files (images, PDFs, archives) - only text-like files
- Auto-unbinds when editor closes with notification
- See README for full workflow details
- Editor Link Navigation - Click RangeLinks in any editor file to navigate
- Primary use case: Validate links in scratchpad files before sending to claude-code
- Works in all file types: markdown, text, code, untitled files
- Hover tooltips show full navigation details
- Supports all link formats: single-line, ranges, columns, rectangular mode
- Reuses terminal navigation logic for consistency
Changed
- Unified Paste Destination Management - Single manager replaces separate terminal/chat systems
- Command renamed:
rangelink.unbindTerminal→rangelink.unbindDestination - Simplified bind/unbind commands work consistently across all destination types
- Improved error handling and user feedback
- Command renamed:
- Terminology Updates - Harmonized vocabulary across extension
- "Terminal Binding" → "Terminal Paste Destination"
- Consistent "Paste Destinations" terminology in UI and docs
VS Code Extension v0.2.1
Fixed
- Critical packaging bug - Fixed "Cannot find module" errors in v0.2.0
- Separated
dist/(production bundle) fromout/(development output) - Follows official VSCode extension conventions
- Prevents TypeScript compiler from overwriting esbuild's production bundle
- Eliminates root cause of runtime module loading failures
- Separated
VS Code Extension v0.2.0
Added
- Terminal Link Navigation - The killer feature for AI-assisted workflows
- Click RangeLinks in your terminal to jump directly to code
- Cmd+Click (Mac) or Ctrl+Click (Windows/Linux) to navigate
- Instant file opening with precise cursor positioning
- Works with single-line, and multi-line ranges
- Smart path resolution for workspace-relative and absolute paths
- Helpful tooltips showing the exact location that will be opened
- Parse validation prevents navigation on invalid links
- Terminal Binding - Auto-send generated links to integrated terminal
- Zero copy/paste friction for AI-assisted development
- Links appear instantly where claude-code and other tools can see them
- Link validation with informative tooltips displaying full range context
Changed
- Broader VSCode compatibility - Minimum version lowered from 1.80.0 to 1.49.0
- Now supports 31 additional VSCode versions (3 years of releases)
- Benefits users on stable corporate environments and older machines
- Based on
registerTerminalLinkProviderAPI availability (introduced in v1.49.0)
- Centralized asset management with build-time sync from monorepo
/assets/directory READMEsignificantly streamlined: combined redundant sections, added compelling opening quote, removed overpromising claims- Tool mentions now lead with claude-code (origin story) before other editors
- Refactored internal architecture with
RangeLinkServicefor better maintainability
Fixed
- Extension
READMEnow uses GitHub raw URL for logo (displays correctly in installed extensions, marketplace, and GitHub) - Fixed ESLint configuration for better monorepo build reliability
- Fixed marketplace version badge URL in
README(was using wrong publisher/extension name) - Build process now explicitly deletes target files to prevent stale artifacts
CHANGELOGnow focuses only on extension changes (removed monorepo/internal documentation items)
VS Code Extension v0.1.0
Initial release of RangeLink VS Code Extension 🎉
Features
- Link Generation - Create shareable links to code ranges with relative or absolute paths
- GitHub-Style Notation - Familiar
#L10-L25format developers already know - Rectangular Selection - Column selection support with
##notation - BYOD (Portable Links) - Links that work across different delimiter configurations
- Custom Delimiters - Configure notation to match your preferences
- Validation - Comprehensive error handling and recovery with fallback to defaults
- Commands & Keybindings - Quick access via
Cmd+R Cmd+L/Ctrl+R Ctrl+L - Context Menu - Right-click integration for easy access
- Status Bar Feedback - Visual confirmation when links are created
Installation
Install from the VS Code Marketplace
Or search for "RangeLink" in the Extensions view (Ctrl+Shift+X / Cmd+Shift+X)
What's Next
See ROADMAP.md for upcoming features including:
- Link navigation (click to jump to code)
- Enhanced BYOD support
- Multi-range links
- And more!