Files
Diego Rodrigues de Sa e Souza 3432dfd280
Build Electron Desktop App / Validate version (push) Failing after 35s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
Release v3.6.9 (#1404)
* test: resolve typescript strictness complaints in unit tests

* Update Claude Code obfuscation to version 2.1.114 (#1403)

* fix(cloud-code): scope thinking stripping to executor boundaries (#1401)

* fix(cloud-code): scope thinking stripping to executors

* fix(cloud-code): guard antigravity normalized body

* Update Claude Code obfuscation to version 2.1.114

- Update Claude Code version from 2.1.87 to 2.1.114
- Update X-Stainless-Package-Version from 0.80.0 to 0.81.0
- Add new beta flags: redact-thinking-2026-02-12, advisor-tool-2026-03-01, advanced-tool-use-2025-11-20
- Add missing headers: anthropic-version, anthropic-dangerous-direct-browser-access, x-app, X-Stainless-Timeout
- Add all X-Stainless-* headers (Arch, Lang, OS, Runtime, Runtime-Version, Retry-Count)
- Fix accept-encoding header: identity -> gzip, deflate, br, zstd
- Add connection: keep-alive header
- Update tool name mapping: add lsp, apply_patch, websearch

These changes ensure that requests from OpenCode through Omniroute are indistinguishable from genuine Claude Code 2.1.114 requests, allowing proper authentication with Anthropic's API without triggering extra credits errors.

* fix: resolve CodeQL password hash alert and TruffleHog CI failure

---------

Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Diego Rodrigues de Sa e Souza <8016841+diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>

* fix(claude-code): scope obfuscation to cli clients and fix tests

* docs(workflows): enforce PR merge instead of manual close

* docs(changelog): update 3.6.9 notes with missing PR 1403 and fixes

* docs(workflows): update generate-release to use full changelog for PR body

* fix(tsc): silence baseUrl deprecation warnings for TS 5.5+

* fix(chatcore): apply proactive compression before provider translation (#1406)

Integrated into release/v3.6.9

* docs(changelog): add PR 1406

* Makes text visible in dark-mode (#1409)

Integrated into release/v3.6.9

* docs(changelog): add PR 1409

* chore: save local work

* chore(release): sync version references to 3.6.9

* fix(codex): prevent proactive token refresh consumption and strip background parameter

* ci: shard long-running suites and relax timeouts

* ci: allow manual CI dispatch for release branches

* feat(skills): provider-aware marketplace UX, scored AUTO injection, and memory pipeline hardening (#1411)

* fix/400 for GeminiCLI(add "ref" in GEMINI_UNSUPPORTED_SCHEMA_KEYS)

* feat(cc-compatible): align request shape with Claude CLI

* fix(cc-compatible): add Claude CLI system skeleton for OpenAI input

* preserve reasoning when translating chat to responses (#1414)

Integrated into release/v3.6.9

* fix(skills): optimize AUTO scoring and include Responses input context (#1418)

Integrated into release/v3.6.9

* chore: fix TS errors and update review-prs workflow

* fix(api): stop sending unsupported Gemini and Codex parameters

Prevent Gemini request translation from injecting default
thoughtSignature values that the upstream API strictly validates and
rejects. Only preserve real signatures resolved from prior upstream
responses, and strip additionalProperties from Gemini function schemas
to avoid 400 "Unknown name" errors.

Also remove fallback-injected session_id and conversation_id fields
before sending Codex requests, and restore compatibility with the
legacy OUTBOUND_SSRF_GUARD_ENABLED flag when determining whether
private provider URLs are allowed.

Updates the Gemini translator and regression tests for issue #1410
and related 400 error cases.

* fix(core): stabilization fixes for token refresh, usage translation, and testing

- Update Codex token refresh detection logic
- Mark provider connections invalid on unrecoverable refresh error
- Fix Claude usage translation under-reporting cached tokens
- Update test expectations
- Update CHANGELOG.md for v3.6.9

* fix(auth): reload fresh token state and unify expiry persistence

Refresh checks now re-read the latest stored provider connection before
attempting rotation so they do not use stale refresh tokens captured by
an earlier sweep.

Token updates also persist both expiresAt and tokenExpiresAt across the
health check, usage-limit refresh path, and SSE refresh flow. This keeps
known token expiry metadata in sync and avoids interval-based refreshes
for connections whose tokens are still valid well into the future.

* fix: resolve SSRF environment static evaluation bug (#1427)

Fix import aliases and strict TS typings for tests and ACP agents.

* test: resolve remaining strict type errors in test files

* test: fix provider service assertion for anthropic-compatible header

* fix(codex): respect openaiStoreEnabled setting during native passthrough (#1432)

* fix(codex): fix token refresh unrecoverable detection for expired tokens

* fix(ci): restore release v3.6.9 build and flaky tests

* fix(cc-compatible): trim default OpenAI system skeleton (#1433)

Integrated into release/v3.6.9

* fix: prevent masked API keys from being written to CLI tool configs (#1435)

* feat: mark Qwen provider as deprecated and add deprecation warning to CLI tool (#1437)

* docs(changelog): comprehensive v3.6.9 update with all 59 commits since v3.6.8

* test(ci): align qwen guide settings assertions

* fix(security): resolve CodeQL alert 163 for incomplete URL sanitization in Qwen CLI settings

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <74762779+nikolay-popov-ideogram@users.noreply.github.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Tim Massey <tim-massey@users.noreply.github.com>
Co-authored-by: Paijo <oyi77@users.noreply.github.com>
Co-authored-by: dail45 <dail45@yandex.ru>
Co-authored-by: R.D. <rogerproself@gmail.com>
2026-04-19 19:50:30 -03:00

8.9 KiB
Raw Permalink Blame History

description
description
Fetch all open GitHub issues, analyze bugs, resolve what's possible, triage the rest, wait for user validation, then commit and release

/resolve-issues — Automated Issue Resolution Workflow

Overview

This workflow fetches all open issues from the project's GitHub repository, classifies them, analyzes bugs, proposes a resolution plan, waits for user validation, and ONLY THEN implements the fixes, commits, and closes the issues on the current release branch (release/vX.Y.Z). It does NOT merge or release automatically — the release branch is later merged via PR to main.

BRANCH RULE: All work MUST happen on the current release/vX.Y.Z branch. Never create separate fix/ branches. If no release branch exists yet, create one first using /generate-release Phase 1 steps 15.

Steps

1. Identify the GitHub Repository

// turbo

  • Run: git -C <project_root> remote get-url origin to extract the owner/repo
  • Parse the owner and repo name from the URL

2. Ensure Release Branch Exists

// turbo

Before doing any work, ensure you are on the current release branch:

# Check current branch
git branch --show-current

# If on main, determine next version and create the release branch
VERSION=$(node -p "require('./package.json').version")
NEXT=$(node -p "const [a,b,c]=('$VERSION').split('.').map(Number); c>=9?a+'.'+(b+1)+'.0':a+'.'+b+'.'+(c+1)")
git checkout -b release/v$NEXT
npm version patch --no-git-tag-version
npm install

If already on a release/vX.Y.Z branch, continue working there.

3. Fetch All Open Issues

// turbo-all

⚠️ CRITICAL: The JSON output of gh issue list can be truncated by the tool, silently hiding issues. You MUST use the two-step approach below to guarantee all issues are fetched.

Step 3a — Get Issue numbers only (small output, never truncated):

  • Run: gh issue list --repo <owner>/<repo> --state open --limit 500 --json number --jq '.[].number'
  • This outputs one issue number per line. Count them and confirm total.

Step 3b — Fetch full metadata for each Issue (one call per issue):

  • For each issue number from step 3a, run: gh issue view <NUMBER> --repo <owner>/<repo> --json number,title,labels,body,comments,createdAt,author
  • You may batch these into parallel calls (up to 4 at a time).
  • Sort by oldest first (FIFO).

4. Classify Each Issue

For each issue, determine its type:

  • Bug — Has bug label, or body contains error messages, stack traces, "doesn't work", "broken", "crash", "error"
  • Feature Request — Has enhancement/feature label, or body describes new functionality
  • Question — Has question label, or is asking "how to" something
  • Other — Anything else

Focus ONLY on Bugs for resolution. Feature requests and questions should be skipped with a note in the final report.

5. Deep-Read Each Bug Issue (One-by-One Analysis)

IMPORTANT: Read each bug issue thoroughly, one at a time, before moving to the next. This is NOT a batch process — each issue needs focused attention.

5a. Understand the Problem

For each bug issue, perform the full analysis:

  1. Read the entire body — including Description, Steps to Reproduce, Expected/Actual Behavior, Error Logs, and Screenshots
  2. Read ALL comments — including bot triage comments (Kilo, etc.) and owner/community responses. Pay attention to:
    • Whether someone already responded with a fix
    • Whether a community member confirmed the issue is resolved
    • Whether the issue was marked as duplicate by a bot
  3. Identify the claimed error — extract the exact error message, status code, and provider/model involved

5b. Check Information Sufficiency

Verify the issue contains enough to act on:

  • Clear description of the problem
  • Steps to reproduce OR error logs
  • Provider/model/version information
  • Expected vs actual behavior

5c. Determine Issue Disposition

For each bug, classify into one of 5 actions:

Disposition When to Apply Action
CLOSE — Already Fixed Owner responded with fix + no user follow-up, OR community confirmed fix Close with comment citing which version fixed it
CLOSE — Duplicate Bot flagged >85% similarity + user provides no new info Close referencing the original issue
CLOSE — Stale We requested logs/info > 7 days ago with no reply Close thanking the user, invite to reopen if needed
📝 RESPOND — Needs Info Issue is real but missing critical reproduction details Comment asking for specifics per /issue-triage
📝 RESPOND — User Config Error is caused by unsupported env (Node version, wrong model path, missing API enablement) Comment explaining the user-side fix
🔧 FIX — Code Change Root cause is confirmed in the codebase Research, propose solution in report, wait for approval

5d. For "FIX — Code Change" Issues

Before coding, perform deep source analysis to formulate a plan:

  1. Search the codebasegrep_search for error strings, relevant function names, affected files
  2. Search the web — for upstream API changes, SDK updates, or breaking changes that explain the bug
  3. Read the full source file — don't rely on grep snippets; understand the surrounding logic
  4. Verify the root cause — confirm the bug is reproducible based on the code, not just a user misconfiguration
  5. Formulate a proposed solution — detail the exact files and lines you will change and how you will solve it.
  6. DO NOT modify the codebase yet — wait for user approval on your report first.

5e. For "RESPOND" Issues

Post a substantive comment that:

  • Acknowledges the specific error they reported
  • Explains the likely root cause
  • Provides concrete steps to resolve (version upgrade, env var fix, model path correction)
  • Asks for follow-up info if needed

Do NOT post generic template responses. Every comment should reference the user's specific error messages and environment.

6. Generate Report & Wait for Validation

Present a summary report to the user detailing your proposed actions. For any bugs that need fixing, explicitly explain your proposed solution (files to change and logic) and point out that it will be implemented on the release branch (release/vX.Y.Z) after approval.

Issue Title Status Proposed Action / Version
#N Title Close Already fixed / duplicate (explain why)
#N Title 🔧 Propose Explanation of the code fix to be applied
#N Title 📝 Respond Guidance comment to be posted
#N Title Needs Info Triage comment to be posted
#N Title ⏭️ Skip Feature request / not a bug

⚠️ IMPORTANT: Do NOT implement code changes, commit, push, or close issues at this step. Wait for the user to review the proposed fixes and respond with OK before proceeding.

  • If the user says OK or approves → Proceed to step 7
  • If the user requests changes → Adjust the proposed solution and present the report again
  • If the user rejects → Revert any accidental changes and stop

7. Implement Fixes, Run Tests & Commit (only after user approval)

After the user validates and gives the OK:

  1. Implement the fixes — modify the codebase according to the approved plan.
  2. Run testsnpm run test:all (or the specific test file) to ensure 100% pass.
  3. Update CHANGELOG.md with all new bug fix entries.
  4. Commit each fix individually on the release branch with message format: fix: <description> (#<issue_number>).
  5. Push the release branch: git push origin release/vX.Y.Z.
  6. Close resolved issues immediately. For each issue that was marked as Fixed, run: gh issue close <NUMBER> --repo <owner>/<repo> --comment "Thank you for reporting! This issue has been fixed and will be included in the next release (vX.Y.Z)."
  7. Likewise, close Duplicate issues referencing the original, close Needs Info if stale, and post the required comments.
  8. If the project runs automatic releases or needs a PR, proceed to run /generate-release workflow Phase 1 steps 710 (tests → commit → push → open PR to main → wait for user).

If NO fixes were committed, skip closing and source control steps and just conclude the workflow.