Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: l-git/vscode-java-debug
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: microsoft/vscode-java-debug
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 7 commits
  • 12 files changed
  • 4 contributors

Commits on Apr 27, 2026

  1. Update telemetry wrapper to 0.15.1 (microsoft#1631)

    * Update telemetry wrapper to 0.15.1
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Update telemetry wrapper to 0.15.2
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    wenytang-ms and Copilot authored Apr 27, 2026
    Configuration menu
    Copy the full SHA
    a14400b View commit details
    Browse the repository at this point in the history

Commits on Apr 28, 2026

  1. Remove uuid dependency, use built-in crypto.randomUUID() (microsoft#1632

    )
    
    Replace the uuid package with Node.js built-in crypto.randomUUID(). This removes the uuid dependency entirely, addressing the Dependabot alert for uuid v8 and avoiding compatibility issues with uuid v14+.
    chagong authored Apr 28, 2026
    Configuration menu
    Copy the full SHA
    0db5f15 View commit details
    Browse the repository at this point in the history

Commits on May 8, 2026

  1. fix: always prepend separator when appending noConfigScripts to PATH (m…

    …icrosoft#1637) (microsoft#1641)
    
    * fix: always prepend separator when appending noConfigScripts to PATH
    
    EnvironmentVariableCollection.append() performs a literal string concatenation
    and does not insert a path separator. The previous heuristic checked
    process.env.PATH on the extension host and skipped the separator when that PATH
    already ended with one. However, the PATH used by the integrated terminal can
    differ from the extension host's PATH, so this check could incorrectly drop the
    separator and glue the noConfigScripts directory onto the last entry of the
    user's PATH (e.g. C:\Program Files\jreleaser\c:\Users\...\noConfigScripts).
    
    Always prepend the separator. A trailing empty PATH entry (if the user's PATH
    already ended with one) is harmless on both Windows and POSIX shells.
    
    Fixes microsoft#1637
    
    * test: add unit tests for noConfigScripts PATH append helper
    
    Extract the PATH append-value computation into a vscode-free
    src/pathUtil.ts module so it can be unit-tested in plain Node mocha.
    
    Add test/pathUtil.test.ts covering:
    - Correct separator on Windows (;), Linux (:), and macOS (:).
    - The appended value always starts with a path separator (regression
      guard for microsoft#1637).
    - The scripts directory remains a standalone PATH entry when the user's
      PATH last entry has no trailing separator (the exact scenario reported
      in microsoft#1637, e.g. C:\Program Files\jreleaser\\).
    - A trailing separator on the user's PATH only produces a harmless empty
      entry, never glues another entry onto our scripts dir.
    - The scripts directory is preserved verbatim at the end of the value.
    
    All 9 tests pass under plain mocha; the file is also picked up by the
    existing Electron-based test runner via the **/**.test.js glob.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * style: trim verbose comments in pathUtil and tests
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    wenytang-ms and Copilot authored May 8, 2026
    Configuration menu
    Copy the full SHA
    3df9d97 View commit details
    Browse the repository at this point in the history

Commits on May 9, 2026

  1. Bump fast-uri from 3.1.0 to 3.1.2 (microsoft#1642)

    Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
    - [Release notes](https://github.com/fastify/fast-uri/releases)
    - [Commits](fastify/fast-uri@v3.1.0...v3.1.2)
    
    ---
    updated-dependencies:
    - dependency-name: fast-uri
      dependency-version: 3.1.2
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 9, 2026
    Configuration menu
    Copy the full SHA
    da84f11 View commit details
    Browse the repository at this point in the history

Commits on May 20, 2026

  1. feat(copilot): add chat skills, instructions and when-gates for langu…

    …age model tools (microsoft#1643)
    
    - Gate all 10 language model tools with `when` clauses so they only register
      when the Java Language Server is ready, and (for active-debug-session-only
      tools) when an active `java` debug session is in progress. This avoids
      loading failures and reduces the noise Copilot sees from this extension's
      tool catalog when the tools cannot actually run.
    
    - Contribute a `chatInstructions` file (`javaDebugContext.instructions.md`)
      with a keyword-rich, on-demand description (no `applyTo`, to avoid burning
      context on every Java edit) that tells Copilot to activate the deferred
      Java debug tools via `tool_search_tool_regex` and routes the user request
      to one of the two skills below.
    
    - Contribute two `chatSkills`, split by user-habit telemetry (launch/stop is
      ~52% of tool usage; inspection/step is ~28%):
      - `java-launch-troubleshooting` — start/stop a Java program and diagnose
        launch failures (mainClass missing, classpath, build errors, project
        not detected). Gated by `javaLSReady` so it is discoverable any time
        in a Java workspace.
      - `java-debug-inspection` — inspect variables, walk the stack, list
        threads, evaluate expressions, step in/over/out, continue, and manage
        breakpoints in an active Java debug session. Gated by
        `javaLSReady && inDebugMode && debugType == 'java'` so it only appears
        once a Java debug session is alive — keeping it reactive, not proactive.
    wenytang-ms authored May 20, 2026
    Configuration menu
    Copy the full SHA
    1bf69fe View commit details
    Browse the repository at this point in the history

Commits on May 21, 2026

  1. Harden Language Model Tool telemetry against PII leaks (microsoft#1644)

    * Harden Language Model Tool telemetry against PII leaks
    
    Centralise all LMT telemetry through src/lmToolTelemetry.ts so user-supplied strings (target, expression, sessionName, file paths, class names, JVM stack traces, etc.) can no longer reach the telemetry pipeline. The new module exposes a typed sanitizedSend choke point that only accepts enums, booleans, numbers and opaque session IDs.
    
    Telemetry changes:
    
    - Drop sendError(error) on debug_java_application failure (stack trace leaked user class / method names).
    
    - Strip PII fields from every existing event: target, sessionName, currentFile, currentLine, simpleClassName, detectedClassName, error: String(error), input.reason.
    
    - Replace bare String(error) propagation with classifyError() -> ErrorCategory enum (mainClassMissing, classpathUnresolved, buildFailure, projectNotDetected, sessionAlreadyRunning, timeout, lsNotReady, noActiveSession, noSuspendedThread, noStackFrame, cancelled, other).
    
    - Add per-invoke recording for all 10 tools with outcome, errorCategory, durationMs, and a tool-specific enum (targetType / breakpointKind / stepKind / scopeType / evalContext / removeScope). The previous build only emitted telemetry on the launch tool and the session-info tool.
    
    - Add chatActivationSnapshot one-shot at registration time so we can measure adoption of the chat surfaces without per-turn cost (counts only).
    
    - evaluate_debug_expression: the expression text is NEVER logged. Only the evalContext enum and outcome are emitted.
    
    Policy:
    
    - src/lmToolTelemetry.ts is now the only file in the LMT code path allowed to call sendInfo. The top-of-file policy comment is the single source of truth for what may be logged.
    
    - The recorder is typed against ToolInvocationRecord so excess raw strings are rejected at compile time.
    
    Validated with: npm run tslint, npm run compile.
    
    * Address Copilot review on PR microsoft#1644
    
    - classifyStep: unknown step operations now report 'unknown' instead of being silently mislabeled as 'over'. Also adds a runtime guard in debug_step_operation so an unknown operation no longer reaches commandMap[op]/executeCommand(undefined) or session.customRequest with an arbitrary string.
    
    - recordToolInvocation: introduces a private normalizeToolInvocationRecord that keeps 'outcome' and 'errorCategory' in lock-step for the six shared terminal values (cancelled / timeout / lsNotReady / noActiveSession / noSuspendedThread / noStackFrame). Fixes the case where debug_java_application returns {success:false,message:'Operation cancelled by user'} but outcome was 'failure' while errorCategory was 'cancelled'.
    
    - get_debug_stack_trace: empty-stack-frame early return now sets errorCategory='noStackFrame' alongside outcome (was only setting outcome).
    
    - recordLaunchInternal: signature is now a discriminated union (LaunchInternalEvent) instead of (operationName: string, properties: Record<string, SafeValue>). Unknown event names and unexpected property keys are now rejected at compile time. Updated all 8 call sites.
    
    - elapsedTime (string from .toFixed) split from elapsedMs (number) so the telemetry value is numeric and aggregable.
    wenytang-ms authored May 21, 2026
    Configuration menu
    Copy the full SHA
    dcbb93f View commit details
    Browse the repository at this point in the history

Commits on May 22, 2026

  1. Bump @nevware21/ts-utils from 0.13.0 to 0.14.0

    Bumps [@nevware21/ts-utils](https://github.com/nevware21/ts-utils) from 0.13.0 to 0.14.0.
    - [Release notes](https://github.com/nevware21/ts-utils/releases)
    - [Changelog](https://github.com/nevware21/ts-utils/blob/main/CHANGELOG.md)
    - [Commits](nevware21/ts-utils@0.13.0...0.14.0)
    
    ---
    updated-dependencies:
    - dependency-name: "@nevware21/ts-utils"
      dependency-version: 0.14.0
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 22, 2026
    Configuration menu
    Copy the full SHA
    9758e1d View commit details
    Browse the repository at this point in the history
Loading