Add a workflow that fails and comments on any PR targeting main unless
it is a maintainer release PR from a feature/* branch, plus a PR
template reminding contributors to target the active development
branch. The check is enforced as a required status check on main.
Keep persistent Claude sessions consistent when runtime acquisition,
permission changes and background task results overlap. Correct relay quota
isolation, gate Codex auto review on verified SDK support, and restore native
Windows terminal execution with regression coverage on both operating systems.
Claude runtime and permissions:
- Serialize runtime acquisition for the same session or anonymous signature
so concurrent requests share one runtime.
- Queue permission transitions, record the mode acknowledged by the SDK and
prevent superseded callers or disposed runtimes from reverting newer state.
- Rebuild anonymous runtimes after bypass-mode changes within the same epoch.
- Use SDK task-notification provenance to ignore background results while
accepting valid result-only user turns immediately; remove the obsolete
idle backstop, timer hooks and output-presence heuristic.
- Preserve explicit abort errors during reader quiescence and allowlist
read-only MCP tools by their complete names instead of action prefixes.
Relay usage:
- Replace the single-entry cache with a bounded, synchronized cache that
copies payloads at its boundaries and handles expiry and clock rollback.
- Isolate quotas by vendor, canonical endpoint and credential digest, with
model-specific keys for MiniMax; avoid retaining raw tokens in cache keys.
- Correct IPv6 loopback origins, vendor host matching, reset timestamps and
empty capacity responses, with cache and parser regression tests.
Codex and webview:
- Require an affirmative SDK capability result before enabling native auto
review, including the final send path for text and attachment requests.
- Normalize environment blocklist keys and legacy permission aliases without
case-sensitive gaps.
- Constrain the model menu to the available viewport while keeping its action
rows visible, and cover narrow and short layouts in browser tests.
- Repair stale test fixtures, TypeScript errors and missing hook inputs.
Windows execution and portable tests:
- Spawn Windows executables with intact argv and reuse the existing .cmd/.bat
launcher; execute command strings through cmd with native flags instead of
passing POSIX scripts or login-shell flags to cmd.exe.
- Preserve the Windows environment needed by native tools and verify literal
arguments, actual failure exit codes and CLI paths containing spaces.
- Replace platform-specific path expectations and the Java /bin/sh fixture
with portable assertions and temporary test files.
- Reuse isolated Claude login fixtures so unit tests do not read a developer's
credentials, and run both .test.js and .test.mjs in Linux/Windows CI jobs.
Validation:
- ai-bridge on Linux (WSL Ubuntu, Node 22.12.0): 661 passed, no failures/skips.
- ai-bridge on Windows: 659 passed, 2 existing platform-only skips, no failures.
- Webview: 172 test files and 1,495 tests passed; app/test typechecks passed.
- Menu browser regressions: 20 tests passed across four viewports.
- Java: 1,288 passed and 5 skipped (1,293 total); checkstyleMain passed.
A local Gradle init script selected freshly compiled test classes and
bypassed instrumentTestCode because its asm-all download failed over TLS.
- CI YAML parsing and git diff --check passed. Generated reports, temporary
runtimes and local configuration are excluded from this commit.
Merge wsl-integration-tests.yml into a single tests.yml that runs
ai-bridge, webview, java (Linux), and WSL (Windows) jobs in parallel.
All jobs are independent of build.yml so test failures never block the
Build Plugin job.
Upgrade Vampire/setup-wsl from v3 to v7 to run on Node.js 24, resolving
the Node.js 20 deprecation warning ahead of the June 16, 2026 forced
migration.
All other actions already use their latest major versions (checkout@v6,
setup-java@v5, setup-node@v6, setup-gradle@v5).
- Replaced `NodeDetector` utilities with `WslPathUtil` for consistent WSL path handling.
- Simplified path transformations, validation, and directory resolution across the codebase.
- Refactored redundant utility methods and deprecated manually implemented logic.
- Added support for thread-safe initialization and improved test coverage for edge cases.