Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
a0c5c7d
fix: stabilize settings writes and enable fork PR scans (#2290)
jatmn Oct 21, 2026
5a1fbe0
fix(tests): isolate skills homes and stabilize reload assertions (#2307)
jatmn Oct 21, 2026
9254846
test(mcp): remove always-skipped CHICAGO_MCP toggle test (#2309)
jatmn Oct 21, 2026
76b4402
ci: drop duplicate provider test steps from PR checks (#2308)
jatmn Oct 21, 2026
e81a917
test: include context efficiency feature tests in full check (#2311)
jatmn Oct 21, 2026
ae9b319
ci: isolate launcher checks from the full suite (#2312)
jatmn Oct 21, 2026
c5f5319
ci: cache package downloads in PR checks (#2313)
jatmn Oct 21, 2026
0b8daae
ci: run unit test shards in parallel (#2314)
jatmn Oct 21, 2026
1f6f747
ci: skip unaffected pull request checks (#2315)
jatmn Oct 21, 2026
cb9f9ee
test: stabilize timing-sensitive tests (#2316)
jatmn Oct 21, 2026
a13ed45
feat(gateway): add Merge Gateway provider (#2317)
jatmn Oct 21, 2026
87e6ae6
test: stabilize watchdog and settings timing (#2319)
jatmn Oct 21, 2026
a4ed687
fix(agent): await per-agent output before completion (ORC-1337) (#2318)
jatmn Oct 21, 2026
ae83f6e
ci: use shallow checkout for smoke-and-tests (#2320)
jatmn Oct 22, 2026
1c42a10
fix(shell): honor an abort that lands before the listener is attached…
jatmn Oct 22, 2026
75c73ea
docs: add CONTRIBUTING notes for CI caching and subprocess test timeo…
jatmn Oct 22, 2026
7844534
test: stabilize QueryGuard keepalive interruption test (#2323)
jatmn Oct 22, 2026
6baae01
test: consolidate vendor catalog tests into per-vendor contract table…
jatmn Oct 22, 2026
19bb39c
test: consolidate gateway catalog tests into per-gateway contract tab…
jatmn Oct 22, 2026
a8b9fa9
test: consolidate Z.AI GLM-5.3 registry catalog tests into a golden t…
jatmn Oct 22, 2026
3a29928
test(aimlapi): consolidate malformed lease-receipt tests into one tab…
jatmn Oct 22, 2026
227fa02
test: consolidate stub walls in compact and extractMemories.abort tes…
jatmn Oct 22, 2026
dea4d39
test: restore leaked provider mocks and Concentrate env in single-pro…
jatmn Oct 22, 2026
3a646df
test(gateways): assert OpenGateway route default model and credential…
jatmn Oct 22, 2026
92d71e6
test: restore leaked settings, config and path state across test file…
jatmn Oct 22, 2026
0d85ac1
test: restore leaked provider, betas, sessionTitle and discovery modu…
jatmn Oct 22, 2026
c84411b
test: run attribution suites in a child when auth, beta or routing ex…
jatmn Oct 22, 2026
c823efe
test: add snapshotEnv helper and restore leaked env and auth state (T…
jatmn Oct 22, 2026
5c9b3c9
test: stub stdin ref/unref in cli premature-exit regression test (#2337)
jatmn Oct 22, 2026
4eae36a
test: restore Shell and GrowthBook module mocks after BashTool sandbo…
jatmn Oct 22, 2026
a63ad4a
test: restore real secureStorage exports after githubModelsCredential…
jatmn Oct 22, 2026
90b34cb
test: restore leaked settings, sleep and fast-mode mocks and bound lo…
jatmn Oct 22, 2026
56da2c4
test: restore real ColorPicker and CustomSelect exports after wizard …
jatmn Oct 22, 2026
0724ca8
test: restore leaked module mocks behind the remaining non-isolated s…
jatmn Oct 22, 2026
0f8b4cb
test: restore leaked mock.module registrations behind randomized-orde…
jatmn Oct 23, 2026
357b8da
test: restore module exports after mocks (TA-001 round 2) (#2343)
jatmn Oct 23, 2026
11c6afe
test: isolate env, process and global state leaks across randomized s…
jatmn Oct 23, 2026
ada7f0f
test: clean up remaining randomized-order leaks (TA-001 round 2) (#2345)
jatmn Oct 23, 2026
4772c39
test: run the unit suite without --isolate (TA-001 round 2) (#2346)
jatmn Oct 23, 2026
804e331
test: keep gitSettings tests independent of the temp dir location (#2…
jatmn Oct 23, 2026
36b7ffd
build: prepare tsconfig and relay types for TypeScript 6 (#2348)
jatmn Oct 23, 2026
2e415e7
test: clear remembered provider routing after CLI tests (#2349)
jatmn Oct 23, 2026
51226f0
test: reset teammate interruption trace state (#2350)
jatmn Oct 23, 2026
7141ba2
test: restore registry after custom gateway tests (#2352)
jatmn Oct 23, 2026
40297b4
chore: upgrade Bun to 1.4.4 (#2351)
jatmn Oct 23, 2026
0876fb2
chore: upgrade TypeScript to 6.0.3 (#2353)
jatmn Oct 23, 2026
03652ca
test: make background termination race deterministic (#2355)
jatmn Oct 23, 2026
5840d73
test: restore diagnostic mocks and reset trace state (#2354)
jatmn Oct 23, 2026
8cfdb43
ci: add bun check fast typecheck alongside tsc (#2356)
jatmn Oct 23, 2026
a838b67
test: extend attribution isolation detector timeout (#2358)
jatmn Oct 23, 2026
e365805
test: make concurrent natural finalizers deterministic (#2357)
jatmn Oct 23, 2026
3e81882
test: clear provider model cache after request tests (#2359)
jatmn Oct 23, 2026
6c19581
ci: use bun check as the CI typecheck (#2363)
jatmn Oct 23, 2026
1bccad9
test: restore thinking exports after attachment tests (#2361)
jatmn Oct 23, 2026
81ef40e
test: isolate diagnostic logger spy history (#2362)
jatmn Oct 23, 2026
0b39dfe
chore: require Node 24.22.1+ and default to Node 26 (#2365)
jatmn Oct 23, 2026
9c41a4f
chore(deps): apply patch updates and fix grpc and fflate advisories (…
jatmn Oct 24, 2026
c699c41
chore(deps): update utility minors and HTTP security fixes (#2367)
jatmn Oct 24, 2026
a0d0a96
ci: update checkout, setup-node and codeql-action pins (#2368)
jatmn Oct 24, 2026
714533a
ci: disable persisted checkout credentials in CI and release jobs (#2…
jatmn Oct 24, 2026
e7a3a17
chore(deps): update AWS SDK and Smithy group (#2370)
jatmn Oct 24, 2026
9086822
chore(deps): update typescript-eslint, knip and MCP SDK (#2371)
jatmn Oct 24, 2026
67549c6
ci: bump Docker actions to current majors (#2373)
jatmn Oct 24, 2026
402478c
chore(deps): update small ESM utility majors (#2372)
jatmn Oct 24, 2026
a5a6867
deps: pin @types/node to 24.19.2 (M-1) (#2375)
jatmn Oct 24, 2026
17cd64c
deps: upgrade diff to 9.0.0 (M-3) (#2377)
jatmn Oct 24, 2026
fea268b
test: synchronize process outcome checks (#2378)
jatmn Oct 24, 2026
38ac018
test: control paginated discovery deadlines (#2379)
jatmn Oct 24, 2026
f5d5c69
test: synchronize retention policy phases (#2380)
jatmn Oct 24, 2026
9160012
test: run provider recommendation credential checks in process (#2376)
jatmn Oct 24, 2026
95e96e9
test: restore credential refresh module mocks (#2381)
jatmn Oct 24, 2026
d62eb70
chore(deps): update marked to 18.1.1 (#2382)
jatmn Oct 24, 2026
2976dbc
test: reset cached model strings in claude lifecycle tests (#2384)
jatmn Oct 24, 2026
196c598
chore(deps): update execa to 10.x and chalk to 6.x (#2385)
jatmn Oct 24, 2026
58d8a9d
chore(deps): update https-proxy-agent to 9.1.0 (#2383)
jatmn Oct 24, 2026
df184fb
fix(proxy): pass runtime CA and mTLS options to the target TLS connec…
jatmn Oct 24, 2026
94e22e1
build(deps): bump google-auth-library to 11.3.1 (#2387)
jatmn Oct 24, 2026
d97567b
test(proxy): generate TLS test fixtures at runtime (#2389)
jatmn Oct 24, 2026
0dbfe06
chore(deps): finish D-3/D-4 exact pins and raise ip-address override …
jatmn Oct 24, 2026
9ccd6ae
build(deps): bump @anthropic-ai/sdk to 0.110.0 and bedrock-sdk to 0.3…
jatmn Oct 24, 2026
8fd997c
chore(deps): update sharp to 0.35.5 (#2390)
jatmn Oct 24, 2026
cd536b2
test(skills): isolate staged install temp directory assertions (#2394)
jatmn Oct 24, 2026
1a79295
build(deps): bump Anthropic SDK family to 0.137.0 (#2395)
jatmn Oct 24, 2026
cd35052
test(aimlapi): drive polling retries with fake timers (#2393)
jatmn Oct 24, 2026
de1bafc
build(deps): bump @anthropic-ai/sandbox-runtime to 0.0.81 (#2397)
jatmn Oct 24, 2026
ff13baf
chore(deps): replace cli-highlight with a highlight.js ANSI renderer …
jatmn Oct 24, 2026
7a776d7
chore(deps): upgrade chokidar to 6.0.0 (M-13) (#2399)
jatmn Oct 24, 2026
26c7f04
chore(deps): upgrade commander and extra-typings to 15.0.0 (M-11) (#2…
jatmn Oct 24, 2026
b9ea599
chore(deps): upgrade eslint to 10.13.0 (M-15) (#2403)
jatmn Oct 24, 2026
57a8978
chore(web): upgrade to Astro 7.4.2 (#2404)
jatmn Oct 24, 2026
1d6337d
chore(deps): upgrade undici to 8.12.3 (M-12) (#2401)
jatmn Oct 24, 2026
ef78478
chore(deps): upgrade @sentry/node to 11.9.0 (M-14) (#2402)
jatmn Oct 24, 2026
be3a717
chore(deps): upgrade zod to 4.6.7 (#2405)
jatmn Oct 24, 2026
6712d5a
fix(proxy): restore direct fetch routing when clearing proxies (#2406)
jatmn Oct 24, 2026
d7340b1
refactor(scripts): use Bun subprocess APIs for development commands (…
jatmn Oct 24, 2026
6c8d22a
fix(git): honor discovery ceilings in worktree fixtures (#2408)
jatmn Oct 24, 2026
d9371e8
fix(types): avoid recursive schema comparisons (#2410)
jatmn Oct 24, 2026
3dd93c8
test: clear lifecycle interruption traces after each case (#2409)
jatmn Oct 24, 2026
2a6d75e
test: preserve subprocess exports in clipboard mock (#2411)
jatmn Oct 25, 2026
11a1caa
test(cli): isolate startup regression from shared builds (#2413)
jatmn Oct 25, 2026
5f91412
chore: remove obsolete Node 22 compatibility code (#2412)
jatmn Oct 25, 2026
fd59621
perf(types): keep default-heap Node 24 typecheck under the heap limit…
jatmn Oct 25, 2026
c884a88
fix(ollama): send think=false by default so hybrid-reasoning models a…
II-II-II-II Aug 8, 2026
3e68b6d
fix(ollama): honor explicit thinking without changing defaults
jatmn Oct 25, 2026
9bf1040
fix(lsp): synchronize document versions across restarts (#2106)
chioarub Oct 25, 2026
d6e0e86
fix(vscode): preserve Windows launcher argument boundaries
jatmn Oct 25, 2026
8cab4d1
fix(api): retry explicitly throttled OpenAI-compatible 403s (#2416)
jatmn Oct 25, 2026
da7e663
fix(vscode): align session discovery and resume with CLI storage (#2415)
jatmn Oct 25, 2026
cdd6af6
fix(provider): match MiniMax and Venice base URLs by hostname, not su…
0xfandom Oct 25, 2026
cdb28e0
feat(i18n): add Traditional Chinese (zh-HK) locale support (#2193)
Louis1125 Oct 25, 2026
e3c9a87
fix(utils): model Node's NODE_OPTIONS grammar in hasNodeOption (#2188)
Ayush7614 Oct 25, 2026
8be7274
feat(minimax): default to M3.1 Flash and refresh text suggestions (#2…
octo-patch Oct 25, 2026
c56c68f
feat(gemini-vertex): native env routing and tool-id safety (2/3) (#1614)
gitdevine Oct 26, 2026
23115eb
feat(attachments): make TODO reminders configurable (#2214)
devNull-bootloader Oct 26, 2026
c860143
fix(opencode): promote bare Codex alias launches to Codex backend (#2…
adityachaudhary99 Oct 26, 2026
0e441ba
fix(launcher): tolerate missing bin helpers on distro installs (#2255…
Gravirei Oct 26, 2026
5ef7183
fix(sdk): wire options.hooks callbacks into the in-process hook execu…
52flutter Oct 26, 2026
cb4a72b
fix(hooks): reject unsupported command hook args (#2398)
Bensonluo Oct 26, 2026
f0e0671
feat(aimlapi): attribute MCP requests to mcp.aimlapi.com
Lookoff-AIMLAPI Oct 19, 2026
cf6291e
feat(aimlapi): opt-in built-in plugin for the AI/ML API MCP server
Lookoff-AIMLAPI Oct 19, 2026
cbe0c09
test(aimlapi): pin settings in the MCP plugin test
hugoaimlapi Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .bun-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.13
1.4.4
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,10 @@ ANTHROPIC_API_KEY=sk-ant-your-key-here
# Useful for users who want full transparency over what the model sees
# OPENCLAUDE_DISABLE_TOOL_REMINDERS=1

# Configure todo/task reminder thresholds (default: 10 turns each)
# OPENCLAUDE_TODO_REMINDER_TURNS_SINCE_WRITE=15
# OPENCLAUDE_TODO_REMINDER_TURNS_BETWEEN_REMINDERS=20

# Log structured per-request token usage (including cache metrics) to stderr.
# Useful for auditing cache hit rate / debugging cost spikes outside the REPL.
# Any truthy value enables it ("verbose", "1", "true").
Expand Down
102 changes: 102 additions & 0 deletions .github/codeql/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# CodeQL analysis and merge protection

The [CodeQL workflow](../workflows/codeql.yml) scans pull requests to `main`,
including forks, pushes to `main`, and a weekly schedule. It also supports manual
runs once the workflow exists on the default branch. JavaScript/TypeScript uses
the default security queries plus `code-quality`; GitHub Actions retains its
default security queries. Results are uploaded to **code scanning**.

GitHub's CodeQL default setup [excludes fork pull requests](https://docs.github.com/en/code-security/concepts/code-scanning/setup-types#about-default-setup).
The separate managed Code Quality workflow has also failed to run on fork PRs in
this repository. Requiring its results leaves those PRs pending indefinitely.
Custom workflows cannot provide a supported replacement for the managed Code
Quality result: the [CodeQL action](https://github.com/github/codeql-action/blob/6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee/src/analyses.ts)
directs custom workflows to run quality queries through code scanning instead.

## Permissions and activation

Write access permits contributing this workflow. Changing CodeQL default setup
requires repository administration or the relevant security-management access;
editing the ruleset requires administration or a custom role with permission to
edit repository rules. Merging this file does not change either setting.

An administrator must complete this rollout for `Twigpine/openclaude`:

1. In **Settings → Advanced Security → CodeQL analysis**, disable default setup
and use advanced setup with this workflow. Default setup otherwise rejects
uploads from custom CodeQL workflows. The equivalent API change is:

```sh
gh api --method PATCH repos/Twigpine/openclaude/code-scanning/default-setup \
-f state=not-configured
```

2. Rerun the new **CodeQL** workflow on the introducing PR after changing the
setup. Verify that both `CodeQL (javascript-typescript)` and `CodeQL (actions)`
complete successfully, including their uploads. A successful analysis with
a failed upload is not sufficient. The `pull_request` trigger supports fork
uploads with the restricted token; no PAT, fork secret, `pull_request_target`,
or privileged artifact-upload workflow is needed.

3. In **Settings → Rules → Rulesets → main branch protection** (ruleset
`14659193`), remove **Require code quality results** and add both CodeQL job
names as required status checks, selecting **GitHub Actions** as their source.
Keep every other rule, branch target, enforcement setting, bypass actor, and
existing required check. This temporary stage lets the introducing PR merge
with completed scans while the new configuration acquires a `main` baseline.
Continue the normal PR approval and CI process before merging.

4. After merge, verify the new workflow's push run on `main` uploaded both
language analyses. Then enable **Require code scanning results**, select
**CodeQL**, and set **Alerts: Errors** and **Security alerts: None**. Retain the
two required status checks. The security threshold preserves the previous
ruleset's policy: it required quality errors but had no security-severity
merge threshold. Security findings remain visible for review.

5. Verify a fork PR has both successful jobs and a completed CodeQL code-scanning
evaluation. Older PRs need a new push or a rerun that includes this workflow;
rerunning a historical workflow definition that lacks it cannot start it.

The separate managed Code Quality feature may remain enabled for its dashboard.
Its **Require code quality results** rule must stay removed for this migration.
Do not disable the entire branch ruleset.

## Prepared rule additions

These are rule fragments for the existing ruleset, not a complete replacement
payload. Remove its `code_quality` rule, add the following `code_scanning` rule
after the baseline upload, and merge these checks into any existing
`required_status_checks` rule. Preserve all unrelated fields and rules from a
fresh administrator-readable export before saving an API update.

```json
[
{
"type": "code_scanning",
"parameters": {
"code_scanning_tools": [
{
"tool": "CodeQL",
"alerts_threshold": "errors",
"security_alerts_threshold": "none"
}
]
}
},
{
"type": "required_status_checks",
"parameters": {
"strict_required_status_checks_policy": false,
"required_status_checks": [
{ "context": "CodeQL (javascript-typescript)", "integration_id": 15368 },
{ "context": "CodeQL (actions)", "integration_id": 15368 }
]
}
}
]
```

GitHub's [rules API](https://docs.github.com/en/rest/repos/rules#update-a-repository-ruleset)
documents these fields. Code-scanning merge protection needs results for both the
PR and its target branch, which is why activation is staged around the initial
`main` upload.
54 changes: 54 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: CodeQL

on:
pull_request:
branches: [main]
push:
branches: [main]
workflow_dispatch:
schedule:
- cron: "23 6 * * 2"

permissions:
contents: read

concurrency:
group: codeql-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true

jobs:
analyze:
name: CodeQL (${{ matrix.language }})
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
include:
- language: javascript-typescript
queries: +code-quality
- language: actions
queries: ""

steps:
# Keep the default PR merge checkout and pull_request event: code scanning
# supports uploads from fork PRs without a privileged fork-code workflow.
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
with:
languages: ${{ matrix.language }}
build-mode: none
queries: ${{ matrix.queries }}

- name: Analyze and upload results
uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
with:
category: /language:${{ matrix.language }}
21 changes: 18 additions & 3 deletions .github/workflows/install-hygiene.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,25 @@
name: Install hygiene

on:
pull_request:
paths:
- 'package.json'
- 'bun.lock'
- 'src/utils/imageResizer.native.test.ts'
- '.github/workflows/install-hygiene.yml'
schedule:
- cron: '17 6 * * *' # daily, off the top-of-hour rush
workflow_dispatch:

permissions:
contents: read

# Supersede stale runs for the same pull request. Scheduled and manual runs
# get a per-run group and are never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
verify-published-install:
name: ${{ matrix.os }} / Node ${{ matrix.node-version }}
Expand All @@ -28,15 +40,15 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: [22, 24]
node-version: ["24.22.1", "26"]
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: ${{ matrix.node-version }}

Expand All @@ -48,5 +60,8 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Verify native image processing
run: bun test src/utils/imageResizer.native.test.ts

- name: Verify published package installs clean
run: bun run scripts/verify-clean-install.ts --published
Loading
Loading