Repository navigation
Releases: dkattan/Copilot-Breakpoint-Debugger
Release list
0.0.63
Release Notes - Version 0.0.63
Summary
This release includes a major refactoring that modernizes the breakpoint triggering API. The legacy serverReady.action structure has been removed in favor of a cleaner, more maintainable design that separates server readiness detection from breakpoint triggering actions. This change improves clarity, enables new features like dynamic port substitution, and establishes a more robust foundation for future development.
Breaking Changes
The API shape for triggering actions on server readiness has changed significantly:
- Moved:
serverReady.action→breakpointConfig.breakpointTrigger - Moved:
serverReady.trigger.path→serverReady.path - Moved:
serverReady.trigger.pattern→serverReady.pattern - Changed:
serverReady.trigger.line(number) →serverReady.code(string snippet)
Migration Example:
{
- serverReady: {
- trigger: {
- path: "src/server.ts",
- line: 27,
- pattern: "listening on .*:(\\d+)"
- },
- action: {
- type: "httpRequest",
- url: "http://localhost:3000/health"
- }
- }
+ serverReady: {
+ path: "src/server.ts",
+ code: "console.log('listening')",
+ pattern: "listening on .*:(\\d+)"
+ },
+ breakpointConfig: {
+ breakpoints: [...],
+ breakpointTrigger: {
+ type: "httpRequest",
+ url: "http://localhost:%PORT%/health"
+ }
+ }
}triggerBreakpoint Tool Changes:
- Removed standalone
actionparameter breakpointConfigis now required (previously optional)breakpointConfig.breakpointTriggermust be provided
Legacy Format Removal:
- No longer accepts nested union format (e.g.,
{ httpRequest: { url: "..." } }) - Actions without a
typediscriminator field will now error - Validation warnings have been converted to errors that will halt execution
New Features
🎯 Dynamic Port Token Substitution
Actions can now use the %PORT% token, which will be replaced with the port number captured from the serverReady.pattern regex. This enables dynamic configuration based on runtime port allocation.
- Works in:
url,headers,body, andshellCommandfields - Port is extracted from the first capture group in
serverReady.pattern - Example:
url: "http://localhost:%PORT%/swagger"with patternlistening on .*:(\\d+)
🔍 Code-based Line Resolution
Line numbers for server readiness breakpoints are now resolved by searching for a code snippet rather than requiring hardcoded line numbers.
- Use
serverReady.codewith a substring from the target line - More resilient to code changes
- Consistent with how other breakpoints work in the system
- Example:
code: "console.log('listening')"finds the line containing that text
Improvements
✨ Cleaner Architecture
- Clear separation between server readiness detection (
serverReady) and breakpoint triggering (breakpointConfig.breakpointTrigger) - Single discriminated union format (no legacy compatibility layer)
- Reduced code complexity (~200 lines of legacy handling removed)
📝 Better Error Messages
- Specific, actionable error messages for each validation failure
- Errors include expected format and what was provided
- Invalid configurations now fail fast with clear guidance
📚 Enhanced Documentation
- README updated with new API structure and examples
- Added
%PORT%token documentation - Clarified serverReady modes (breakpoint, pattern, immediate attach)
- All examples updated to reflect current best practices
Bug Fixes
🐛 Minor Fixes
- Fixed logging typo:
$${line}→:${line}in session.ts:2462 - Improved pattern matching to properly capture groups using
.exec()instead of.test()
Full Changelog: https://github.com/anthropics/copilot-breakpoint-debugger/compare/0.0.62...0.0.63
0.0.62
Based on my analysis of the changes between version 0.0.61 and 0.0.62, this release contains only a single commit that updates the toolkit submodule dependency. Since the only change is a submodule pointer update and I cannot access the detailed changes within the external toolkit repository in this environment, I'll generate release notes based on the available information.
Release 0.0.62
Summary
This release updates the internal toolkit dependency to incorporate the latest improvements and fixes.
Changes
Dependencies
- Updated toolkit submodule - Updated the internal toolkit dependency from commit
a214cc6toc8329dbto incorporate upstream improvements and maintenance updates.
Breaking Changes
None.
0.0.61
Version 0.0.61
Summary
This maintenance release focuses on dependency security updates and test infrastructure improvements. The release addresses npm audit findings and implements dynamic port allocation to eliminate test flakiness caused by fixed port conflicts.
Improvements
Dependency Updates
- Updated
@actions/githubfrom^7.0.0to^8.0.1to address security vulnerabilities - Added override for
mocha@11.7.5to usediff@8.0.3, fixing npm audit warnings - Removed unused
ts-nodedependency in favor oftsx
Debug Configuration Enhancements
- Added support for passing
vscode.DebugConfigurationobjects directly tostartDebuggingAndWaitForStopandtriggerBreakpointAndWaitForStopfunctions - The
nameOrConfigurationparameter now accepts either a string (configuration name) or a fullDebugConfigurationobject - Added new
configurationparameter totriggerBreakpointAndWaitForStopfor direct configuration passing (primarily for test usage) - Improved configuration resolution logic with better error handling and validation
Test Stability Improvements
- Implemented dynamic port allocation using
getFreePort()utility to prevent port conflicts in parallel test execution - Updated test server (
test-workspace/node/server.js) to accept dynamic ports viaCOPILOT_DEBUGGER_TEST_PORTenvironment variable - Added
createNodeServerDebugConfig()helper function to generate consistent Node.js debug configurations for tests - Updated all test suites to use dynamic ports instead of hardcoded port 31337:
triggerBreakpoint.test.tsserverReady.test.tsserverReadyVscodeCommand.test.tsdotnetWatchAutoStart.test.tsexistingSessionBehavior.test.ts
Breaking Changes
None.
0.0.60
Release Notes - Version 0.0.60
Summary
This release introduces major improvements to debug session management and autonomous debugger control. The extension can now automatically start debug sessions, intelligently handle multiple concurrent sessions, and provide richer status information about active debugging contexts. These enhancements significantly improve the experience for AI-assisted debugging workflows.
New Features
Autonomous Debug Session Management
- Auto-start capability:
triggerBreakpointcan now create and launch debug sessions automatically without requiring manual pre-configuration - Smart session selection: When no session ID is provided, the tool can intelligently select an existing session or create a new one based on workspace settings
- Launch configuration support: Specify which launch configuration to use via
configurationNameparameter, with automatic fallback to workspace defaults or sole configuration - Workspace folder targeting: Target specific workspace folders when starting new debug sessions via
workspaceFolderparameter
Multiple Debug Session Support
- New configuration setting:
copilot-debugger.supportsMultipleDebugSessionscontrols whether workspaces allow concurrent debug sessions (default:false) - Flexible session policies: New
copilot-debugger.existingSessionBehaviorsetting with three strategies:"useExisting"(default): Use existing session if available, error if multiple exist without explicit session ID"stopExisting": Automatically terminate existing sessions before starting a new one"ignoreAndCreateNew": Create new session alongside existing ones (requiressupportsMultipleDebugSessions: true)
- Per-call overrides: Override global session behavior on individual tool calls via
existingSessionBehaviorparameter
Enhanced Debug Session Listing
- Session status tracking: Debug session list now includes current execution state (
"paused","running", or"terminated") - Protocol guidance: Each session includes
protocolinformation showing allowed next actions based on current state - Hierarchical session view: Parent-child session relationships are now tracked and displayed in tree structure
- Dual output formats: Returns both hierarchical tree view (
sessions) and flat array (flatSessions) for flexibility
Build and Startup Integration
- Task auto-start: Launch watcher tasks before debugging via
watcherTaskLabelparameter (e.g.,"dotnet watch run") - Startup readiness gates: Set breakpoints that must be hit before proceeding with main debugging workflow via
startupBreakpointConfig - Server ready triggers: Enhanced
serverReadyTriggersupport for waiting until applications are fully initialized
Improvements
- Smarter configuration resolution: Automatic single launch configuration detection eliminates need for explicit specification
- Better error messages: More specific guidance when configurations aren't found or workspace folders aren't open
- Workspace validation: Validates that workspace folders are absolute paths and actually open in VS Code
- Enhanced protocol-driven navigation: Session listings include context-aware suggestions for next steps based on debugger state
- Comprehensive test coverage: Added three new test suites covering session behavior, status listing, and breakpoint triggering
Breaking Changes
API Changes (Backward Compatible)
triggerBreakpoint tool signature:
sessionIdparameter changed from required to optional- Existing code passing
sessionIdcontinues to work unchanged - New optional parameters only activate when
sessionIdis omitted
listDebugSessionsForTool() output format:
- Returns both
sessions(tree structure) andflatSessions(flat array) instead of justsessionsarray - Consumers expecting flat array should use
flatSessionsfield - Tree structure provides hierarchical parent-child relationships
Configuration
Two new workspace settings:
| Setting | Description | Default |
|---|---|---|
copilot-debugger.supportsMultipleDebugSessions |
Whether this workspace supports running multiple simultaneous debug sessions | false |
copilot-debugger.existingSessionBehavior |
Behavior when starting a session while others exist: "useExisting", "stopExisting", or "ignoreAndCreateNew" |
"useExisting" |
Technical Details
Files Changed:
src/session.ts: +374 lines (core session management)src/triggerBreakpointTool.ts: +39 lines (tool integration)src/common.ts: +34 lines (shared types and state)src/events.ts: +39 lines (session state tracking)src/config.ts: +8 lines (configuration settings)package.json: +120 lines (tool schema updates)README.md: Updated configuration documentation
New Test Files:
src/test/existingSessionBehavior.test.ts: Tests for session behavior policiessrc/test/listDebugSessionsStatus.test.ts: Tests for enhanced session listingsrc/test/triggerBreakpoint.test.ts: Tests for autonomous session startup
Migration Guide
For most users, this release is fully backward compatible. If you have existing integrations:
- Tool consumers: If parsing
listDebugSessionsoutput, use the newflatSessionsfield for flat array format - Configuration: Review new session behavior settings to optimize for your workflow
- Multi-session workspaces: Set
supportsMultipleDebugSessions: trueif you regularly debug multiple processes
0.0.59
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
Version 0.0.54
Summary
This release introduces stricter breakpoint requirements and implements automatic step-over behavior for capture actions to improve the reliability of variable inspection during debugging.
Breaking Changes
Mandatory variable field for all breakpoints
- All breakpoints now require a
variablefield (previouslyvariableFilterwas optional) - Use
variable: "variableName"to focus on a single exact variable name (case-sensitive) - Use
variable: "*"to opt into capture-all mode (auto-captures up tocaptureMaxVariableslocals) - This change affects both
startDebugSessionWithBreakpointsandresumeDebugSessiontools
Schema changes:
variableFilter(array) →variable(string)- Matching is now simple string equality instead of list membership
- No regex evaluation
New Features
Automatic step-over for capture actions
Capture actions (captureAndContinue and captureAndStopDebugging) now automatically perform a single step-over (F10 / DAP next) before capturing variables. This solves the common problem where breakpoints placed on assignment lines would capture pre-assignment values instead of the expected post-assignment values.
- Applied when
autoStepOveris not explicitly set - Can be disabled by setting
autoStepOver: false - Enhanced with explicit
autoStepOver: truefor before/after variable snapshots
Improvements
- Updated all documentation, examples, and test fixtures to reflect the new
variablefield requirement - Improved error messages to guide users toward the correct schema
- Enhanced configuration descriptions to clarify capture-all mode (
variable: "*") - Updated VS Code quick-insert command to prompt for single variable name or
*
Documentation Updates
- README.md: Updated breakpoint examples and usage instructions
- agents.md: Revised variable filtering semantics documentation
- package.json: Updated tool descriptions and schema definitions for both Language Model Tools
Technical Details
Modified files include:
src/BreakpointDefinition.ts: Updated interface with newvariablefieldsrc/session.ts: Implemented default step-over logic for capture actionssrc/extension.ts: Updated VS Code command prompts for new schemasrc/stopInfoMarkdown.ts: Updated variable display logicsrc/resumeDebugSessionTool.ts: Applied new schema to resume operations- All test files updated to use new
variablefield instead ofvariableFilter