Skip to content

Releases: dkattan/Copilot-Breakpoint-Debugger

0.0.63

Choose a tag to compare

@github-actions github-actions released this 03 Feb 23:26

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

⚠️ API Restructuring

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 action parameter
  • breakpointConfig is now required (previously optional)
  • breakpointConfig.breakpointTrigger must be provided

Legacy Format Removal:

  • No longer accepts nested union format (e.g., { httpRequest: { url: "..." } })
  • Actions without a type discriminator 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, and shellCommand fields
  • Port is extracted from the first capture group in serverReady.pattern
  • Example: url: "http://localhost:%PORT%/swagger" with pattern listening 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.code with 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

Choose a tag to compare

@github-actions github-actions released this 01 Feb 15:34

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 a214cc6 to c8329db to incorporate upstream improvements and maintenance updates.

Breaking Changes

None.


0.0.61

Choose a tag to compare

@github-actions github-actions released this 01 Feb 15:09

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/github from ^7.0.0 to ^8.0.1 to address security vulnerabilities
  • Added override for mocha@11.7.5 to use diff@8.0.3, fixing npm audit warnings
  • Removed unused ts-node dependency in favor of tsx

Debug Configuration Enhancements

  • Added support for passing vscode.DebugConfiguration objects directly to startDebuggingAndWaitForStop and triggerBreakpointAndWaitForStop functions
  • The nameOrConfiguration parameter now accepts either a string (configuration name) or a full DebugConfiguration object
  • Added new configuration parameter to triggerBreakpointAndWaitForStop for 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 via COPILOT_DEBUGGER_TEST_PORT environment 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.ts
    • serverReady.test.ts
    • serverReadyVscodeCommand.test.ts
    • dotnetWatchAutoStart.test.ts
    • existingSessionBehavior.test.ts

Breaking Changes

None.

0.0.60

Choose a tag to compare

@github-actions github-actions released this 01 Feb 14:13

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: triggerBreakpoint can 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 configurationName parameter, with automatic fallback to workspace defaults or sole configuration
  • Workspace folder targeting: Target specific workspace folders when starting new debug sessions via workspaceFolder parameter

Multiple Debug Session Support

  • New configuration setting: copilot-debugger.supportsMultipleDebugSessions controls whether workspaces allow concurrent debug sessions (default: false)
  • Flexible session policies: New copilot-debugger.existingSessionBehavior setting 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 (requires supportsMultipleDebugSessions: true)
  • Per-call overrides: Override global session behavior on individual tool calls via existingSessionBehavior parameter

Enhanced Debug Session Listing

  • Session status tracking: Debug session list now includes current execution state ("paused", "running", or "terminated")
  • Protocol guidance: Each session includes protocol information 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 watcherTaskLabel parameter (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 serverReadyTrigger support 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:

  • sessionId parameter changed from required to optional
  • Existing code passing sessionId continues to work unchanged
  • New optional parameters only activate when sessionId is omitted

listDebugSessionsForTool() output format:

  • Returns both sessions (tree structure) and flatSessions (flat array) instead of just sessions array
  • Consumers expecting flat array should use flatSessions field
  • 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 policies
  • src/test/listDebugSessionsStatus.test.ts: Tests for enhanced session listing
  • src/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:

  1. Tool consumers: If parsing listDebugSessions output, use the new flatSessions field for flat array format
  2. Configuration: Review new session behavior settings to optimize for your workflow
  3. Multi-session workspaces: Set supportsMultipleDebugSessions: true if you regularly debug multiple processes

0.0.59

Choose a tag to compare

@github-actions github-actions released this 27 Jan 23:19

Credit balance is too low

0.0.58

Choose a tag to compare

@github-actions github-actions released this 27 Jan 22:58

Credit balance is too low

0.0.57

Choose a tag to compare

@github-actions github-actions released this 27 Jan 22:42

Credit balance is too low

0.0.56

Choose a tag to compare

@github-actions github-actions released this 26 Jan 16:30

Credit balance is too low

0.0.55

Choose a tag to compare

@github-actions github-actions released this 26 Jan 14:52

Credit balance is too low

0.0.54

Choose a tag to compare

@github-actions github-actions released this 24 Jan 11:56

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 variable field (previously variableFilter was 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 to captureMaxVariables locals)
  • This change affects both startDebugSessionWithBreakpoints and resumeDebugSession tools

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 autoStepOver is not explicitly set
  • Can be disabled by setting autoStepOver: false
  • Enhanced with explicit autoStepOver: true for before/after variable snapshots

Improvements

  • Updated all documentation, examples, and test fixtures to reflect the new variable field 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 new variable field
  • src/session.ts: Implemented default step-over logic for capture actions
  • src/extension.ts: Updated VS Code command prompts for new schema
  • src/stopInfoMarkdown.ts: Updated variable display logic
  • src/resumeDebugSessionTool.ts: Applied new schema to resume operations
  • All test files updated to use new variable field instead of variableFilter