Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
5d7a568
fix(google): preserve permission enum in normalized errors
luvs01 Sep 20, 2026
3304532
Merge branch 'dev' into fix/google-permission-enum
Ingwannu Sep 20, 2026
1ba5c60
docs: design native JEV auto routing
Sep 21, 2026
c4cd3cc
docs: plan native JEV auto routing
Sep 21, 2026
511f59a
feat: add JEV combo decision contract
Sep 21, 2026
cd8d16e
feat: add TypeSafe JEV provider setup
Sep 21, 2026
ec8b6a2
feat: route jev-auto through combo runtime
Sep 21, 2026
9af7a9d
feat(gui): add JEV Auto setup flow
Sep 21, 2026
ab896b9
fix: harden JEV auto routing
Sep 21, 2026
52acf81
fix(cli): probe endpoint liveness in-process so the standalone resolv…
devin-ai-integration[bot] Sep 21, 2026
1e233a4
fix(desktop): ship the startup surface as one page the policy can nam…
lidge-jun Sep 21, 2026
8f94a6f
feat(desktop): open a usage popup from the tray icon (#5452)
lidge-jun Sep 21, 2026
f2ebc5a
fix(desktop): let the tray's left click reach the usage popup (#5462)
lidge-jun Sep 21, 2026
71d02e3
fix(desktop): make the startup surface unable to wait forever (#5451)
lidge-jun Sep 21, 2026
e4ceeb3
docs(devlog): land the app runtime ownership record and close the uni…
lidge-jun Sep 21, 2026
71aab27
fix: align JEV provider registry contracts
Sep 21, 2026
0a148c3
fix: address JEV review findings
Sep 21, 2026
0307590
fix: avoid redundant JEV task scan
Sep 21, 2026
2963460
chore: merge upstream dev
Sep 21, 2026
415a0ca
fix: strip protected envelopes from JEV context
Sep 21, 2026
39143fd
Merge pull request #5243 from luvs01/fix/google-permission-enum
luvs01 Sep 22, 2026
a87af4e
feat: add per-target JEV effort controls
Sep 22, 2026
7ce2af7
Merge remote-tracking branch 'upstream/dev' into feat/jev-auto-routing
Sep 22, 2026
9ee4f2c
fix: address final JEV review feedback
Sep 22, 2026
90a7666
feat: add JEV routing statistics
Sep 22, 2026
6c2f767
feat(desktop): native macOS usage panel and release regression fixes …
lidge-jun Sep 22, 2026
4d41db3
fix(claude): persist committed gateway state before old-mode cleanup …
lidge-jun Sep 22, 2026
2dec4be
ci: isolate macOS shard subprocesses in bounded fresh batches (#5520)
lidge-jun Sep 22, 2026
c65328c
chore(release): open dev at 2.62.0 before releasing 2.61.0 (#5521)
github-actions[bot] Sep 22, 2026
c37f4f5
ci(release): retain Linux bundler diagnostics on first attempt (#5522)
lidge-jun Sep 22, 2026
482a3e0
fix(release): prepare universal targets and numeric MSI versions (#5526)
lidge-jun Sep 22, 2026
d05dfaf
fix: harden JEV statistics aggregation
Sep 22, 2026
a5e8047
fix(desktop): preserve packaged CLI and assemble universal sidecar (#…
lidge-jun Sep 22, 2026
7bd9985
fix(release): place lipo input before architecture verification (#5535)
lidge-jun Sep 22, 2026
fcbe926
chore: merge upstream dev into JEV routing
kingkej Sep 22, 2026
2b8b007
fix(release): align checksum and Tauri signature verification (#5544)
lidge-jun Sep 22, 2026
41ec40f
fix(release): accept standard binary checksum markers (#5550)
lidge-jun Sep 22, 2026
a6b5429
fix(release): publish the GitHub release only after its verified asse…
lidge-jun Sep 22, 2026
ab5398b
ci: scope macOS, Rust and app-bundle jobs to the shipping boundary (#…
lidge-jun Sep 22, 2026
b1b60e8
ci: limit service and issue-quality push runs to release lines (#5568)
lidge-jun Sep 22, 2026
74490ee
fix(cursor): consolidate quarantine and replay allocation fixes (#5507)
lidge-jun Sep 22, 2026
5365429
fix(responses): consolidate native control bounds, authorization and …
lidge-jun Sep 22, 2026
c43f29c
fix(config): preserve user edits and harden restore diagnostics (#5506)
lidge-jun Sep 22, 2026
d30d120
fix(diagnostics): keep credentials and private hosts out of diagnosti…
lidge-jun Sep 22, 2026
7841946
fix(devin): bind tenant hosts to the transmitted key and sanitize Con…
lidge-jun Sep 22, 2026
798c07c
chore(ci): consolidate development hooks and hosted reliability fixes…
lidge-jun Sep 22, 2026
b7351dd
fix(web-search): bound search replay ownership, reset replacement ans…
lidge-jun Sep 22, 2026
11ea345
feat: add Claude Opus 5.5 pricing, 1M context and provider rows (#5577)
lidge-jun Sep 22, 2026
9d74788
feat(providers): add Claude Opus 5.5 ahead of Kiro, opencode-zen and …
lidge-jun Sep 22, 2026
965a6e5
fix(gui): fold the model catalog delivery card into one line (#5578)
lidge-jun Sep 22, 2026
53fa324
fix(codex): re-pin the upstream model snapshot to openai/codex 6cfe29…
lidge-jun Sep 22, 2026
c2233b6
feat(codex): list GPT-6 Sol and Luna, gate GPT-6 Astra Minor (#5580)
lidge-jun Sep 22, 2026
5dc4a40
feat(providers): add GPT-6 Sol and Luna ahead of every GPT-5.6 Sol pr…
lidge-jun Sep 22, 2026
746c738
test(providers): include GPT-6 Sol/Luna in the OpenAI API and Digital…
lidge-jun Sep 22, 2026
60c5f57
test(providers): include GPT-6 Sol/Luna in the OpenAI API key roster …
lidge-jun Sep 22, 2026
7687584
fix(release): keep the desktop version sources in step with package.j…
lidge-jun Sep 22, 2026
a4bdc03
test: repair Windows-only and roster regressions surfaced by full-pla…
lidge-jun Sep 22, 2026
a077087
test(cli): exercise the Windows installed-root isolation control with…
lidge-jun Sep 22, 2026
6d5d501
chore(release): open dev at 2.63.0 before releasing 2.62.0 (#5601)
github-actions[bot] Sep 22, 2026
d7f8fad
chore(release): open dev at 2.64.0 before releasing 2.63.0 (#5613)
github-actions[bot] Sep 22, 2026
c7a723d
chore: merge upstream dev into JEV routing
kingkej Sep 22, 2026
5154ccf
chore: merge upstream dev into JEV routing
Sep 22, 2026
891ff60
ci: bundle review-gate hardening, release-gates lane and sandbox tear…
lidge-jun Sep 23, 2026
f7b06bd
fix: carry luvs01 small fixes (Qoder offsets, malformed UTF-8 cyber s…
lidge-jun Sep 23, 2026
b0ca829
feat(providers): grok-4.7 parity with grok-4.6 across xAI, Devin, Ope…
lidge-jun Sep 23, 2026
b197bc9
fix(codex): bundle luvs01 client, catalog, prompt and account-pool fi…
lidge-jun Sep 23, 2026
36a886c
fix(usage): draw one timeline series per model across pool accounts (…
lidge-jun Sep 23, 2026
19e124b
fix: carry six small luvs01 fixes (crash guard, Kiro estimate, loopba…
lidge-jun Sep 23, 2026
9579bbe
fix(responses,usage): bundle L5 continuation, retry and usage boundar…
lidge-jun Sep 23, 2026
a6dae0e
docs: fix stale docs links, check them at build time, and bring the d…
lidge-jun Sep 23, 2026
03c9e14
fix(security): carry luvs01 service and security hardening stacks (#5…
lidge-jun Sep 23, 2026
119ed2b
chore(repo): retire docs/ and host PR screenshots on the pr-assets br…
lidge-jun Sep 23, 2026
1731fe3
fix(command-code): stop MiMo tool calls leaking as text, route Claude…
lidge-jun Sep 23, 2026
e461562
feat(anthropic): native Claude fast mode wire with standard-speed dow…
lidge-jun Sep 23, 2026
206fbc6
feat(anthropic): Claude usage-reset ticket badge and spend dialog on …
lidge-jun Sep 23, 2026
bd3049e
docs(structure): split oversize docs and describe every source area (…
lidge-jun Sep 23, 2026
e964387
L7: carry luvs01 desktop takeover, reasoning, provider and management…
lidge-jun Sep 23, 2026
0f9254b
fix(command-code): read MiMo freeform markup the gateway closes witho…
lidge-jun Sep 23, 2026
23af263
fix(logs): stop recording the client selector echo as the served mode…
lidge-jun Sep 23, 2026
5e8ff89
chore: merge upstream dev into JEV routing
Sep 23, 2026
d5742f2
feat(codex): load native GPT models from providers.openai.models (#5645)
lidge-jun Sep 23, 2026
fca86eb
fix(responses): recover Azure OpenAI opaque reasoning rejections (#5639)
lidge-jun Sep 23, 2026
5c5b1b3
test: fix the Windows-only failures from full-platform dev CI (#5634)
lidge-jun Sep 23, 2026
25a42c8
docs: put desktop downloads first in the README and on the landing pa…
lidge-jun Sep 23, 2026
a7a6908
fix(mimo): carry MiMo V2.6 across presets and metadata, fix MiMo Free…
lidge-jun Sep 23, 2026
41ba802
fix: keep fenced proxies restartable and failed Windows updates recov…
lidge-jun Sep 23, 2026
e635288
Provider state continuity: keep compatibility settings across saves; …
lidge-jun Sep 23, 2026
8adda59
feat(subagents): default roster to the GPT-6 trio (#5640)
lidge-jun Sep 23, 2026
ac78d95
fix(codex): let a request-owned main bearer take part in pool orderin…
lidge-jun Sep 23, 2026
3abde54
fix(ci): run Bun test batches without GNU timeout (#5456)
lee3Q Sep 23, 2026
5769237
docs(devlog): plan P5 CI and release scope gaps (#5652)
lidge-jun Sep 23, 2026
b509b01
feat(gui): autosave featured subagent roster edits (#5644)
lidge-jun Sep 23, 2026
91adb29
fix(ci): run privacy:scan on the diffs it exists for (#5469)
abhisheksharma2411 Sep 23, 2026
2b60f1c
feat(pr-gate): word the latest-dev box as the condition the gate enfo…
abhisheksharma2411 Sep 23, 2026
37adbd3
fix(codex): keep a request-owned main selection out of the shared act…
lidge-jun Sep 23, 2026
0144cba
ci: release preflight, separate release outcomes, duration-balanced s…
lidge-jun Sep 23, 2026
3fb532b
fix: rank request-owned main without reading its plan; pass the remot…
lidge-jun Sep 23, 2026
dddd16c
fix(log-guard): verify full-width reclaim file identity (#5656)
lidge-jun Sep 23, 2026
fa81e5a
test(codex): stub the async icacls runner in the policy startup child…
lidge-jun Sep 23, 2026
80cb53d
Merge remote-tracking branch 'upstream/dev' into feat/jev-auto-routing
Sep 23, 2026
da662a3
fix(ci): make the privacy gate the exact complement of gates on pull …
lidge-jun Sep 23, 2026
f2e8045
fix(codex): keep a request-owned main out of shared active state (#5663)
lidge-jun Sep 23, 2026
a1131f5
build(deps): bump tauri-plugin-shell in /desktop/src-tauri (#5661)
lidge-jun Sep 23, 2026
685321e
chore(release): open dev at 2.65.0 before releasing 2.64.0 (#5666)
github-actions[bot] Sep 23, 2026
7dd1db2
fix(tests): bundle lane A — test hygiene, desktop restart guard and R…
lidge-jun Sep 23, 2026
8ffd323
fix(providers): bundle lane F1 — Cursor fast continuation, Meta Muse …
lidge-jun Sep 23, 2026
a1dba2c
fix(openai-chat): Pi developer role and duplicated serialized tool ca…
lidge-jun Sep 23, 2026
052e1d7
devlog: record the 2.64 release round (#5677)
lidge-jun Sep 23, 2026
aed3bb8
fix(responses): bundle lane E — combo resend safety, WebSocket replac…
lidge-jun Sep 23, 2026
c1905d4
fix(xai): bundle lane B — reasoning-model stop/penalty drops, policy …
lidge-jun Sep 23, 2026
7f8d538
fix(desktop,cli): bundle lane G — sidecar signing, restart warning, p…
lidge-jun Sep 23, 2026
9d1fa87
fix(claude): bundle lane C — routed windows with compact, picker desc…
lidge-jun Sep 23, 2026
aa2406b
fix(codex): bundle lane D — Codex home and WSL runtime discovery, int…
lidge-jun Sep 23, 2026
782bfb8
test(update): spell expected mise owner paths the way the detector re…
lidge-jun Sep 23, 2026
129406f
feat(claude): first-party Desktop Code tab model bindings (#5681)
lidge-jun Sep 24, 2026
bb003b7
docs(readme): put npm first and fold desktop downloads into small chi…
lidge-jun Sep 24, 2026
37f93da
docs(readme): show desktop chips openly and fold the full desktop sec…
lidge-jun Sep 24, 2026
0996ecb
fix: close four regressions from the 260923 bundle round (#5720)
lidge-jun Sep 24, 2026
560db33
fix(codex): keep the WSL home state list out of the module's dead zon…
lidge-jun Sep 24, 2026
6b7a91f
fix(cursor): route flat effort wire ids for opus 5.5 (#5723)
terrytan95 Sep 24, 2026
764dc13
fix(anthropic): handle Opus 5.5 forced tool choice (#5729)
lidge-jun Sep 24, 2026
3a301dc
fix(usage): price Cursor Claude Fast variants (#5730)
lidge-jun Sep 24, 2026
66d4cf9
feat(claude): gateway by default, first-party risk warning, and Deskt…
lidge-jun Sep 24, 2026
74cd423
feat(anthropic): keep Claude fast mode off until the provider opts in…
lidge-jun Sep 24, 2026
8b562bf
test(codex): share one Bun transpiler cache across write-lock childre…
lidge-jun Sep 24, 2026
359616e
test(claude): skip POSIX mode checks for picker files on Windows (#5734)
lidge-jun Sep 24, 2026
8cb20f7
fix(claude-intercept): picker CA trust that Desktop accepts, with IP …
lidge-jun Sep 24, 2026
be0b529
fix(openai-chat): read MiMo tool-call echoes without </function> or w…
lidge-jun Sep 24, 2026
742ee16
fix(desktop): make Cmd/Ctrl +/-/0 zoom the app window on every platfo…
lidge-jun Sep 24, 2026
df61bce
fix(responses): bundle L2 — Responses and streaming fixes (#5706, #56…
lidge-jun Sep 24, 2026
893c81c
fix(combos): bundle L1 — combo/failover safety (#5741)
lidge-jun Sep 24, 2026
e535c65
fix(ci): bundle L6 — re-attestation timestamps, event-driven sideband…
lidge-jun Sep 24, 2026
a8d526f
fix(providers): bundle L3 — MiMo, DeepSeek, Google, Command Code and …
lidge-jun Sep 24, 2026
dd7cb69
fix(desktop,gui): bundle L5 — macOS reopen, hidden-window polling, He…
lidge-jun Sep 24, 2026
6c171aa
fix(codex): bundle L4 — service uninstall key, startup rollout budget…
lidge-jun Sep 24, 2026
000abfc
test(server): stop the sideband ceiling proxy before afterEach remove…
lidge-jun Sep 24, 2026
1c4bd7d
fix(codex): keep native-main admission open across startup convergenc…
lidge-jun Sep 24, 2026
e1927bd
feat(desktop): spinner startup surface and first-launch GitHub star o…
devin-ai-integration[bot] Sep 24, 2026
608ed54
fix(subagents): preserve qualified roster ids (#5751)
luvs01 Sep 24, 2026
6104de0
feat(update): reliable update signal and a blue update dot on the tra…
lidge-jun Sep 24, 2026
9b21558
fix(responses): strip max_output_tokens only where the backend reject…
vadymhimself Sep 24, 2026
698435a
fix(usage): split the attempt row on account rotation, for every pool…
vadymhimself Sep 24, 2026
290ff76
fix(chat-completions): avoid injecting native main credential in pool…
rrmlima Sep 24, 2026
24b483b
fix(providers): fallback to transport destination for registry model …
leonclab Sep 24, 2026
13ecbdd
feat(provider): add a Claude Code CLI subscription provider (#5712)
robin-bially Sep 24, 2026
9cf3a06
fix(desktop): clone the tray app handle only where the update dot use…
lidge-jun Sep 24, 2026
45d3447
fix(ci): repair dev after the 2.65.0 round merges (#5768)
lidge-jun Sep 24, 2026
16ea244
Revert #5697 for the 2.65.0 release (#5770)
lidge-jun Sep 24, 2026
8755077
fix(tray): let Windows tray probes run when CODEX_HOME does not exist…
devin-ai-integration[bot] Sep 24, 2026
5cdd97e
test(windows): keep the badge tick budget off the offline health requ…
lidge-jun Sep 24, 2026
ed181a0
chore(release): open dev at 2.66.0 before releasing 2.65.0 (#5785)
github-actions[bot] Sep 24, 2026
242cbeb
fix(lab): rewrite raw POSIX path regex without ambiguous alternation …
luvs01 Sep 25, 2026
3f124f4
fix(lab): keep manual Lab runs and late scheduler starts inside the s…
luvs01 Sep 25, 2026
8f2f988
fix(gui): hide unavailable key rotation controls (#5793)
luvs01 Sep 25, 2026
66241a1
fix(desktop): keep admin tokens off proxy transports with scoped capa…
luvs01 Sep 25, 2026
076ce7d
fix(service): pin launchd to package-local Bun/CLI to avoid PATH-laun…
luvs01 Sep 25, 2026
9185e21
fix(update): stop deleting stale staging paths (#5764)
luvs01 Sep 25, 2026
4556f25
fix(service): pin elevated scheduler staging paths (#5777)
luvs01 Sep 25, 2026
198410f
fix(claude): clear legacy _CLAUDE_CODE_ASSUME_FIRST_PARTY_BASE_URL du…
luvs01 Sep 25, 2026
1846fe6
fix(release): fail closed when draft state lookup fails (#5763)
luvs01 Sep 25, 2026
4ebb4fb
fix(release): isolate dev checkout from write-capable bump credential…
luvs01 Sep 25, 2026
b438ca5
fix(ci): scan markdown fences in linear time (#5779)
luvs01 Sep 25, 2026
e1a8036
fix(hooks): stop executing pulled code after merges (#5771)
luvs01 Sep 25, 2026
6549056
fix(openai-chat): suppress raw freeform MiMo call echoes (#5804)
Vadevious Sep 25, 2026
9d471d9
fix(exec): rewrite empty-output wrapper regex without repartitionable…
luvs01 Sep 25, 2026
0c3af41
fix(providers): compare rename-migration endpoints with URL normaliza…
luvs01 Sep 25, 2026
9bd531a
fix(ollama): bound pending native tool calls (#5781)
luvs01 Sep 25, 2026
6980f48
fix(responses): resolve a closed wrapper from the scan's member table…
luvs01 Sep 25, 2026
7359bcc
fix(anthropic): bound retained image position keys (#5794)
luvs01 Sep 25, 2026
e12919e
feat(link): add pure SSH link building blocks (#5788)
lidge-jun Sep 25, 2026
89aa880
feat(link): add the key-authenticated hub-link listener (#5798)
lidge-jun Sep 25, 2026
20c8922
feat(link): connect a client to its hub through an SSH tunnel (#5801)
lidge-jun Sep 25, 2026
2f641cc
feat(link): add /api/link routes, the tunnel supervisor and ocx link …
lidge-jun Sep 25, 2026
2858ac3
feat(link): add the #remote Remote Link page (#5807)
lidge-jun Sep 25, 2026
e222094
fix(chat): relay translated heartbeats (#5805) (#5806)
Ingwannu Sep 25, 2026
88b9da8
feat(link): join a Home from a standalone Child dashboard (#5818)
lidge-jun Sep 25, 2026
c0599d0
fix(catalog): stop routed rows inheriting the template's comp_hash (#…
FredAmartey Sep 25, 2026
fb20f0c
fix(openai-chat): bring openai-chat.ts back under its file-size cap (…
lidge-jun Sep 25, 2026
04ba23d
fix(omp): allow quoted `#` in OMP-managed YAML (treat `#` as comment …
luvs01 Sep 25, 2026
6fbab23
docs(contributing): point stale postmerge step at build:gui (#5821)
lidge-jun Sep 25, 2026
0f4c8d4
feat(protocols): protocol paths as a first-class concern — PF-01..PF-…
lidge-jun Sep 25, 2026
47065fd
fix(test): keep a developer's live OpenCodex credentials out of the t…
lidge-jun Sep 25, 2026
02fb559
Merge remote-tracking branch 'origin/dev' into feat/jev-auto-routing
lidge-jun Sep 25, 2026
aabd6a7
docs(jev): record TypeSafe retention terms and sync preset counts
lidge-jun Sep 25, 2026
d540cff
test(gui): expect dev's imageInput default in the JEV PUT body
lidge-jun Sep 25, 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 .github/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ change requires explicit security review under `MAINTAINERS.md`.

- Inspect the complete workflow diff, including event triggers, permissions, conditions, interpolation, and shell behavior.
- Run the local commands represented by changed workflow steps where possible.
- Run `bun run prepush` for CI, release, dependency, packaging, or cross-platform workflow changes.
- Follow the root validation policy: run the suite by default; if a full run is too costly, run at least focused regression tests and document the reason and remaining coverage. Required CI checks still apply before merge.
- Do not claim the workflow itself passed until GitHub Actions reports success for the exact commit.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
/bunfig.toml @lidge-jun @Ingwannu
/scripts/release.ts @lidge-jun @Ingwannu
/scripts/release-notes.ts @lidge-jun @Ingwannu
/scripts/release-version-sources.ts @lidge-jun @Ingwannu
/scripts/prepare-package.ts @lidge-jun @Ingwannu
/package.json @lidge-jun @Ingwannu
/bun.lock @lidge-jun @Ingwannu
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ body:
attributes:
label: Documentation location
description: Public documentation URL or repository path.
placeholder: "https://opencodex.me/providers/ or docs/providers.md"
placeholder: "https://opencodex.me/guides/providers/ or docs-site/src/content/docs/guides/providers.md"
validations:
required: true

Expand Down
Binary file removed .github/pr-assets/260901-cap-slot-ko-1280.png
Binary file not shown.
Binary file removed .github/pr-assets/260921-lane-d-consent-surface.png
Binary file not shown.
Binary file removed .github/pr-assets/364-prompt-layer-unmapped.png
Binary file not shown.
Binary file removed .github/pr-assets/3863-storage-skip-referenced.png
Binary file not shown.
Binary file removed .github/pr-assets/4823-opper-provider-catalog.png
Binary file not shown.
Binary file removed .github/pr-assets/4823-opper-provider-note.png
Binary file not shown.
Binary file removed .github/pr-assets/508-grok-coupon-unknown.png
Binary file not shown.
Binary file removed .github/pr-assets/5088-integrations-failed-cold.png
Binary file not shown.
Binary file not shown.
Binary file removed .github/pr-assets/5197-apply-desktop.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-apply-narrow.png
Binary file not shown.
180 changes: 0 additions & 180 deletions .github/pr-assets/5197-capture-receipt.json

This file was deleted.

Binary file removed .github/pr-assets/5197-keyboard-focus.png
Binary file not shown.
Binary file not shown.
Binary file removed .github/pr-assets/5197-ko-restore-drift-390.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-ko-stale-reconfirm-390.png
Binary file not shown.
Binary file not shown.
Binary file removed .github/pr-assets/5197-overwrite-foreign-narrow.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-restore-drift-desktop.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-restore-drift-narrow.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-stale-reconfirm-desktop.png
Binary file not shown.
Binary file removed .github/pr-assets/5197-stale-reconfirm-narrow.png
Binary file not shown.
48 changes: 0 additions & 48 deletions .github/pr-assets/codex-quota-evidence.md

This file was deleted.

Binary file removed .github/pr-assets/codex-quota-pending.png
Binary file not shown.
Binary file removed .github/pr-assets/codex-quota-recovered.png
Binary file not shown.
Binary file removed .github/pr-assets/fast-rows-setting-toggle.png
Binary file not shown.
Binary file not shown.
Binary file removed .github/pr-assets/opencodex-cache-usage.png
Diff not rendered.
Binary file removed .github/pr-assets/quota-activation-advanced.png
Diff not rendered.
Binary file removed .github/pr-assets/quota-window-auto-refresh.png
Diff not rendered.
Binary file removed .github/pr-assets/xai-responses-optin-switch.png
Diff not rendered.
7 changes: 6 additions & 1 deletion .github/scripts/enforce-pr-target.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,12 @@ describe("enforce-pr-target workflow", () => {
assert.match(workflow, /stackedBase/);
assert.match(workflow, /github\.rest\.pulls\.list/);
assert.match(workflow, /treating as stacked/);
assert.match(workflow, /other\.base\?\.repo\?\.owner/);
assert.match(workflow, /other\.head\?\.repo\?\.owner/);
assert.doesNotMatch(
workflow,
/other\.head\?\.repo\?\.(?:owner\?\.login|name)\s*\?\?/,
"stacked-base detection must fail closed when an open PR head repo is unavailable",
);
const qualityCall = workflow.match(
/collectPrQualityFailures\(\{([\s\S]*?)\}\);/,
);
Expand Down
9 changes: 7 additions & 2 deletions .github/scripts/issue-translation.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -810,9 +810,14 @@ function sanitizeTranslationBody(raw, maxChars = 60000) {
// read as mention boundaries. Requiring a dotted domain keeps
// "end!@octocat"-style mentions defused. \u0001 cannot appear in the
// input (control chars were stripped above), so it is a safe sentinel.
// The lookbehind anchors on the @ itself rather than greedily matching
// the local part first: the previous local-part-first pattern rescanned
// long non-email tokens once per start position, which is quadratic on
// model-generated bodies with tens of thousands of consecutive
// local-part characters and no @ at all.
.replace(
/[A-Za-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+/g,
(email) => email.replace("@", "\u0001"),
/(?<=[A-Za-z0-9.!#$%&'*+\/=?^_`{|}~-])@[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+/g,
(emailTail) => emailTail.replace("@", "\u0001"),
)
// Defuse pings at Markdown/punctuation boundaries — a colon is a boundary
// too — but not emails, npm: scopes, or other mid-token at-signs.
Expand Down
8 changes: 8 additions & 0 deletions .github/scripts/issue-translation.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -1195,6 +1195,14 @@ describe("bot-owned control state", () => {
assert.match(out, /path\/@\u200bhandle/);
});

it("handles long non-email tokens in bounded time", () => {
const input = "a".repeat(60_000);
const startedAt = process.hrtime.bigint();
assert.equal(sanitizeTranslationBody(input), input);
const elapsedMs = Number(process.hrtime.bigint() - startedAt) / 1_000_000;
assert.ok(elapsedMs < 1_000, `sanitization took ${elapsedMs.toFixed(1)}ms`);
});

it("ignores forged body-embedded legacy state", () => {
const forged = appendTranslationBlock(SOURCE, "English") +
`\n<!-- opencodex-issue-inline-translator-state:${JSON.stringify({
Expand Down
Loading
Loading