Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1161 commits
Select commit Hold shift + click to select a range
32121b4
docs(combos): align localized routing mode and null semantics
lidge-jun Sep 12, 2026
25c70d5
test(clients): retain bounded phase evidence for coordinator refusal …
lidge-jun Sep 12, 2026
c720dc5
test(clients): preserve spawn failures without captured stderr
lidge-jun Sep 12, 2026
213065e
refactor(devin): retire the ACP adapter and give the shared adapter t…
lidge-jun Sep 12, 2026
2d3c05f
fix(codex): refresh the catalog when paginated history refuses inject…
lidge-jun Sep 12, 2026
f5b2a0d
docs(devlog): close the Devin ACP removal unit (#4417)
lidge-jun Sep 12, 2026
31a96b2
docs(devlog): diff-level roadmap for the unimplemented trio stack (#4…
lidge-jun Sep 12, 2026
45628da
fix(responses): alias >64-char tool names for Meta Muse wire compatib…
lidge-jun Sep 12, 2026
82bf76a
docs(devlog): plan the Meta Muse 64-char tool-name alias unit (#4410)
lidge-jun Sep 12, 2026
6a6bcc6
fix(devin-cli): harden the imported CLI session against path, read, a…
lidge-jun Sep 12, 2026
7b3c4e9
feat(usage): show the cached subset beside every token total (#4421)
lidge-jun Sep 12, 2026
0268727
docs(devlog): fold wp1 audit findings into trio stack roadmap
lidge-jun Sep 12, 2026
2b533a5
docs(devlog): revalidate folded audit citations against source in wp1 B
lidge-jun Sep 12, 2026
4c48f64
test(responses): fix Muse 64-char tool-name alias fixtures (#4410)
lidge-jun Sep 12, 2026
1e28e62
fix(devin): read usage from ModelUsageStats and classify cloud failur…
lidge-jun Sep 12, 2026
d19f096
fix(responses): restore Muse tool names on function_call_arguments ev…
lidge-jun Sep 12, 2026
da54017
docs(devlog): fold wp2 audit FAIL findings into L1 emission design
lidge-jun Sep 12, 2026
1893eec
docs(devlog): fold wp2 re-audit residual into L1 adoption points
lidge-jun Sep 12, 2026
92e21bc
fix(devin): map Connect trailer codes onto the status core acts on (#…
lidge-jun Sep 12, 2026
2670e93
docs(structure): document Muse charset aliases and harden continuatio…
lidge-jun Sep 12, 2026
5863474
fix(responses): keep Muse alias restoration inside the tool_choice bo…
lidge-jun Sep 12, 2026
923ca3c
feat(responses): persist content-free Codex WS upstream stage records…
lidge-jun Sep 12, 2026
c19061f
docs(devlog): plan the Muse Code device-authorization login
lidge-jun Sep 12, 2026
7c9b10b
docs(devlog): fold the wp1 audit findings into the Muse device plan
lidge-jun Sep 12, 2026
5d44e2e
docs(devlog): close two consistency gaps the re-audit found
lidge-jun Sep 12, 2026
276eaab
docs(devlog): mark the stale test path inside the quoted reopen list
lidge-jun Sep 12, 2026
576741e
docs(devlog): record the wp2 stale check against HEAD
lidge-jun Sep 12, 2026
a1ac32a
docs(devlog): fold five wp2 audit findings into the device-core spec
lidge-jun Sep 12, 2026
5a98bf1
feat(oauth): add the Meta Muse Code device-authorization grant
lidge-jun Sep 12, 2026
5535cbe
feat(oauth): offer the Muse device grant from the login itself
lidge-jun Sep 12, 2026
2633c2b
feat(providers): send the Muse api version header and probe quota on …
lidge-jun Sep 12, 2026
ab8850e
fix(providers): make the Muse quota mint spacing atomic, and stop ove…
lidge-jun Sep 12, 2026
07beb73
docs(structure): record the durable Codex WS stage record ownership (…
lidge-jun Sep 12, 2026
d8277b6
Merge pull request #4428 from lidge-jun/codex/260912-meta-muse-device…
lidge-jun Sep 12, 2026
27fa557
Revert "feat(usage): show the cached subset beside every token total"…
lidge-jun Sep 12, 2026
ad50c4a
fix(devin): replay the assistant's reasoning instead of dropping it (…
lidge-jun Sep 12, 2026
01e7d74
Merge pull request #4422 from lidge-jun/codex/260912-muse-64-tool-alias
lidge-jun Sep 12, 2026
2206f96
fix(codex): compensate native restore when history migrates during wr…
luvs01 Sep 12, 2026
dcd13b4
docs(credits): record the #3988 carry whose merge dropped the trailer
lidge-jun Sep 12, 2026
49dba44
fix(responses): refresh the WS stage record with final counters at te…
lidge-jun Sep 13, 2026
77dba07
docs(devlog): fold wp3 audit residual into L2 design
lidge-jun Sep 12, 2026
2c5022c
feat(codex): native-main device reauth API for headless hubs (#3898)
lidge-jun Sep 12, 2026
647e52f
feat(cli): ocx account main reauth --device with registry, docs, and …
lidge-jun Sep 12, 2026
4eed49e
fix(codex): close the cancel/commit race and fence the reauth commit …
lidge-jun Sep 12, 2026
584dadd
test(oauth): name the composite-signal proof and bound the fetch dead…
lidge-jun Sep 12, 2026
d666aef
test(codex): allow the transient cancelled read before publication wi…
lidge-jun Sep 13, 2026
4500ea0
docs(devlog): fold wp4 audit residual into L3 design
lidge-jun Sep 13, 2026
4d56932
fix(opencode-go): publish DeepSeek V4.1 context
martinbcg Sep 13, 2026
d111f8d
feat(gui): main-card Re-login with device code on the native reauth n…
lidge-jun Sep 13, 2026
7ca00ff
feat(xai): classify Grok OAuth service tier per model and relay the t…
lidge-jun Sep 13, 2026
c28d04c
[skip ci] Merge origin/dev into 60plus-models-capabilities
lidge-jun Sep 13, 2026
8bbfde7
[skip ci] Merge capabilities+dev into 60plus-models-text-only
lidge-jun Sep 13, 2026
7ab4cd4
merge: carry current dev into L1 WS stage instrumentation [skip ci]
lidge-jun Sep 13, 2026
e8ce186
merge: carry L1 WS stage instrumentation and current dev into L2 reau…
lidge-jun Sep 13, 2026
d420a46
merge: carry L2 reauth API and current dev into L3 main-card relogin …
lidge-jun Sep 13, 2026
9858093
merge: bring origin/dev into 60plus-models-reasoning [skip ci]
codex Sep 13, 2026
e7eda98
[skip ci] merge: carry origin/dev into #4375
lidge-jun Sep 13, 2026
247dc53
merge: carry the native-main trio and current dev into the remote run…
lidge-jun Sep 13, 2026
b551b52
merge: stack 60plus-models-reasoning + dev into stream-console [skip ci]
codex Sep 13, 2026
b474013
merge: stack stream-console lane into 60plus-thinking [skip ci]
codex Sep 13, 2026
4baf438
[skip ci] merge: carry #4375 and origin/dev into #4404
lidge-jun Sep 13, 2026
cf60fcc
merge: carry the refreshed remote runtime foundation into the integra…
lidge-jun Sep 13, 2026
68c392c
merge: stack thinking lane into 60plus-thinking-hints [skip ci]
codex Sep 13, 2026
a7514f2
merge: carry the remote/hub stack into the client-scoped usage tip
lidge-jun Sep 13, 2026
23e892f
[skip ci] merge: carry #4404 and origin/dev into #4408
lidge-jun Sep 13, 2026
c6372ca
merge: stack thinking-hints lane into 60plus-thinking-spark [skip ci]
codex Sep 13, 2026
8f4cbcf
[skip ci] Merge text-only+dev into 60plus-models-review-model
lidge-jun Sep 13, 2026
b4cc99e
[skip ci] chore(stack): merge origin/dev into codex/260912-60plus-str…
lidge-jun Sep 13, 2026
8bb5625
Merge review-model stack into 60plus-models-destination
lidge-jun Sep 13, 2026
4f260b7
[skip ci] chore(stack): merge codex/260912-60plus-stream-search into …
lidge-jun Sep 13, 2026
cd32757
[skip ci] merge: carry #4408 and origin/dev into #4361
lidge-jun Sep 13, 2026
37bc1a0
[skip ci] chore(stack): merge codex/260912-60plus-stream-cursor into …
lidge-jun Sep 13, 2026
c240534
[skip ci] chore(stack): merge codex/260912-60plus-stream-sideband int…
lidge-jun Sep 13, 2026
90667e5
[skip ci] chore(stack): merge codex/260912-60plus-models-images into …
lidge-jun Sep 13, 2026
3b4dc85
merge: stack responses/core lane into 60plus-v2
codex Sep 13, 2026
00f8567
[skip ci] chore(stack): merge codex/260912-60plus-operations-pairing …
lidge-jun Sep 13, 2026
1269383
[skip ci] merge: carry #4361 and origin/dev into #4369
lidge-jun Sep 13, 2026
8acd73b
[skip ci] chore(stack): merge codex/260912-60plus-operations-transpor…
lidge-jun Sep 13, 2026
388c9d1
[skip ci] chore(stack): merge codex/260912-operations-client-probe in…
lidge-jun Sep 13, 2026
d7a3acc
chore(stack): merge codex/260912-60plus-operations-listeners into cod…
lidge-jun Sep 13, 2026
3d4e41f
[skip ci] merge: carry #4369 and origin/dev into #4401
lidge-jun Sep 13, 2026
0e454fc
merge: carry the accounts quota stack onto origin/dev for #4357
lidge-jun Sep 13, 2026
b324beb
test(gui): select the Re-login CTA by label and stop awaiting a pendi…
lidge-jun Sep 13, 2026
afe987c
feat(audio): expose standalone transcription API (#4391)
lidge-jun Sep 13, 2026
1a76f75
merge: refresh 60plus-v2 stack tip with latest origin/dev
codex Sep 13, 2026
0c8d9d3
fix(gui): give the reauth poll loop an explicit abort condition [skip…
lidge-jun Sep 13, 2026
d2b0cb1
merge: carry the repaired native-main trio into the remote runtime fo…
lidge-jun Sep 13, 2026
ae79519
merge: carry the repaired runtime foundation into the integration lay…
lidge-jun Sep 13, 2026
6df609f
merge: carry the repaired remote/hub stack into the client-scoped usa…
lidge-jun Sep 13, 2026
fee142c
[skip ci] docs(structure): keep stack notes in their own sections
lidge-jun Sep 13, 2026
81f58a4
merge: refresh the stack tip against current dev
lidge-jun Sep 13, 2026
2746727
[skip ci] Merge capabilities section placement into 60plus-models-tex…
lidge-jun Sep 13, 2026
4a49d7f
feat(audio): land streaming dictation, owned live calls and the dashb…
lidge-jun Sep 13, 2026
38c0048
[skip ci] Merge section placement into 60plus-models-review-model
lidge-jun Sep 13, 2026
9cc075f
Merge section placement into 60plus-models-destination
lidge-jun Sep 13, 2026
d7e4d29
[skip ci] Merge origin/dev audio work into 60plus-models-capabilities
lidge-jun Sep 13, 2026
3ed62aa
[skip ci] Merge capabilities into 60plus-models-text-only
lidge-jun Sep 13, 2026
489f475
[skip ci] Merge text-only into 60plus-models-review-model
lidge-jun Sep 13, 2026
1027a6b
Merge review-model into 60plus-models-destination
lidge-jun Sep 13, 2026
ed72770
[skip ci] merge: carry audio-landed origin/dev into #4375
lidge-jun Sep 13, 2026
dd48035
[skip ci] merge: carry audio-landed #4375 into #4404
lidge-jun Sep 13, 2026
659fc53
[skip ci] merge: carry audio-landed #4404 into #4408
lidge-jun Sep 13, 2026
e9c59c6
[skip ci] merge: carry audio-landed #4408 into #4361
lidge-jun Sep 13, 2026
ec29d80
merge: carry the refreshed #4357 usage-totals base into the client us…
lidge-jun Sep 13, 2026
de7c5eb
[skip ci] merge: carry audio-landed #4361 into #4369
lidge-jun Sep 13, 2026
027d697
[skip ci] merge: carry audio-landed #4369 into #4401
lidge-jun Sep 13, 2026
f146a86
merge: carry audio-landed accounts stack into #4357
lidge-jun Sep 13, 2026
f65b8eb
merge: carry current dev into L1 WS stage instrumentation [skip ci]
lidge-jun Sep 13, 2026
300ad2d
merge: carry L1 and current dev into L2 reauth API [skip ci]
lidge-jun Sep 13, 2026
d42d873
merge: carry L2 and current dev into L3 main-card relogin UI [skip ci]
lidge-jun Sep 13, 2026
0c4f962
merge: carry the native-main trio and current dev into the remote run…
lidge-jun Sep 13, 2026
19601ea
merge: carry the refreshed runtime foundation into the integration la…
lidge-jun Sep 13, 2026
c20abd0
chore(stack): merge origin/dev into codex/260912-60plus-v2-recovery
lidge-jun Sep 13, 2026
7874900
merge: carry the refreshed remote/hub stack into the client-scoped us…
lidge-jun Sep 13, 2026
45525b5
test(cli): retry fallback-port stale status when the HTTP probe times…
lidge-jun Sep 13, 2026
4a252f5
fix: keep stacked live handshake with audio sideband and unbreak cata…
lidge-jun Sep 13, 2026
b32df5f
docs: capture stacked hub pairing panel for the tip PR screenshot gate
lidge-jun Sep 13, 2026
17da84f
Merge pull request #4351 from lidge-jun/codex/260912-60plus-v2
lidge-jun Sep 13, 2026
5eb6e73
docs(devlog): capture the Remote Workspace hub dashboard for the stac…
lidge-jun Sep 13, 2026
7b9a652
docs: attach account-quota stack GUI screenshots for #4357
lidge-jun Sep 13, 2026
c4e5f20
fix: plant sidecar fixture and drop Bun HTTP_PROXY catalog control
lidge-jun Sep 13, 2026
1ec88ef
[skip ci] merge: carry origin/dev #4351 into #4375
lidge-jun Sep 13, 2026
f059251
chore(stack): merge origin/dev into codex/260912-60plus-v2-recovery
lidge-jun Sep 13, 2026
9a6156e
[skip ci] merge: carry #4375 and origin/dev #4351 into #4404
lidge-jun Sep 13, 2026
5f5a6bc
[skip ci] merge: carry #4404 and origin/dev #4351 into #4408
lidge-jun Sep 13, 2026
ad47edf
[skip ci] merge: carry #4408 and origin/dev #4351 into #4361
lidge-jun Sep 13, 2026
c19c161
[skip ci] merge: carry #4361 and origin/dev #4351 into #4369
lidge-jun Sep 13, 2026
9be04c0
[skip ci] merge: carry #4369 and origin/dev #4351 into #4401
lidge-jun Sep 13, 2026
a2f5f09
merge: carry origin/dev #4351 into the accounts quota tip
lidge-jun Sep 13, 2026
d2a7dc0
merge: refresh the stack tip against current dev
lidge-jun Sep 13, 2026
96f38cc
[skip ci] Merge origin/dev 60plus-v2 work into 60plus-models-capabili…
lidge-jun Sep 13, 2026
8c69b11
[skip ci] Merge capabilities into 60plus-models-text-only
lidge-jun Sep 13, 2026
c26daa4
[skip ci] Merge text-only into 60plus-models-review-model
lidge-jun Sep 13, 2026
780114b
Merge review-model into 60plus-models-destination
lidge-jun Sep 13, 2026
c9b73a4
merge: carry the refreshed #4357 usage-totals base into the client us…
lidge-jun Sep 13, 2026
0a96f88
Merge pull request #4440 from martinbcg/fix/opencode-go-deepseek-v41-…
lidge-jun Sep 13, 2026
2ba5a54
fix(gui): check reauth response status before reading its body
lidge-jun Sep 13, 2026
beb2e12
merge: refresh the stack tip against current dev
lidge-jun Sep 13, 2026
2c2223b
Merge pull request #4364 from lidge-jun/codex/260912-60plus-v2-recovery
lidge-jun Sep 13, 2026
6620864
Merge origin/dev into 60plus-models-destination
lidge-jun Sep 13, 2026
7d280d6
test(server): stop reading a pure delegation guard as an unresolved r…
lidge-jun Sep 13, 2026
8ccd80d
merge: refresh the stack tip against current dev
lidge-jun Sep 13, 2026
eee8fd8
fix(devin): apply explicit SWE-2 effort before model suffix (#4445)
lidge-jun Sep 13, 2026
0a89b41
docs(devlog): plan the Devin landing, TTFB deadline and prompt-cache …
lidge-jun Sep 13, 2026
909607a
Merge origin/dev into codex/260912-60plus-models-destination [skip ci]
lidge-jun Sep 13, 2026
096d843
Merge pull request #4370 from lidge-jun/codex/260912-60plus-models-de…
lidge-jun Sep 13, 2026
86cf983
[skip ci] merge: carry origin/dev #4446 into #4375
lidge-jun Sep 13, 2026
66a54d7
[skip ci] merge: carry #4375 and origin/dev into #4404
lidge-jun Sep 13, 2026
65d482c
[skip ci] merge: carry #4404 and origin/dev into #4408
lidge-jun Sep 13, 2026
df3b88d
Merge pull request #4373 from lidge-jun/codex/260912-60plus-operation…
lidge-jun Sep 13, 2026
228854b
[skip ci] merge: carry #4408 and origin/dev into #4361
lidge-jun Sep 13, 2026
7d91f9c
[skip ci] merge: carry #4361 and origin/dev into #4369
lidge-jun Sep 13, 2026
c27eeec
[skip ci] merge: carry #4369 and origin/dev into #4401
lidge-jun Sep 13, 2026
2bd8edf
feat(usage): register verified Z.AI GLM list prices as expected-cost …
lidge-jun Sep 13, 2026
411d8c2
merge: carry origin/dev into the accounts/trio tip and keep the manag…
lidge-jun Sep 13, 2026
e68a705
merge: carry the restacked accounts tun layer into the accounts/trio tip
lidge-jun Sep 13, 2026
01448b9
docs(structure): keep Responses transport SSOT inside the line budget
lidge-jun Sep 13, 2026
ee81d36
Merge remote-tracking branch 'origin/dev' into HEAD
lidge-jun Sep 13, 2026
fd90228
docs(structure): keep management SSOT under budget after expected-pri…
lidge-jun Sep 13, 2026
720ea97
test(devin-cli): anchor the empty-data-dir fallback at the host home …
lidge-jun Sep 13, 2026
6340414
docs(devlog): close out unpriced-model overlay unit after PR #4444 (#…
lidge-jun Sep 13, 2026
cf881df
Merge pull request #4357 from lidge-jun/codex/260912-60plus-operation…
lidge-jun Sep 13, 2026
dc33113
fix(devin): stop the header deadline from killing turns that are stil…
lidge-jun Sep 13, 2026
3ca4d67
merge: resolve origin/dev into the Codex Spark retirement branch
lidge-jun Sep 13, 2026
80a4278
Merge remote-tracking branch 'origin/dev' into HEAD
lidge-jun Sep 13, 2026
72601a1
Merge pull request #4334 from lidge-jun/codex/spark-retirement
lidge-jun Sep 13, 2026
261bab9
feat(devin): request prompt caching and give the session cache an ide…
lidge-jun Sep 13, 2026
cff737c
fix(devin): stop a tier suffix from earning a second effort suffix (#…
lidge-jun Sep 13, 2026
04d060e
docs(devlog): record the 36-PR lane-stack merge, its regression audit…
lidge-jun Sep 13, 2026
2df82f4
docs(devlog): close the Devin unit and record why AssignModel is not …
lidge-jun Sep 13, 2026
9cbad1b
feat(usage): register Cognition/Devin list prices for both devin surf…
lidge-jun Sep 13, 2026
4a84ca2
Make v1 the default sub-agent surface and ask before base or v2 (#4462)
lidge-jun Sep 13, 2026
d0cbfff
fix(chat): stop refusal bookkeeping from failing refusal-free turns (…
lidge-jun Sep 13, 2026
131b21e
fix(chat): preserve OCG DeepSeek timeline system instructions
Sep 12, 2026
7dc6c00
docs(claude): sync timeline cache behavior across locales
Sep 12, 2026
b4dec34
docs(devlog): close the chat refusal-scope unit (#4471)
lidge-jun Sep 13, 2026
aaed68a
fix(bridge): fail an in-flight search at a truncated terminal [skip ci]
lidge-jun Sep 13, 2026
6645ccb
fix(chat): keep non-text timeline messages out of the OCG system role…
lidge-jun Sep 13, 2026
83be41f
fix(xai): scope Fast-tier catalog copy to key-auth pricing
lidge-jun Sep 13, 2026
9d8e46c
fix(responses): execute code-mode view_image through unified exec [sk…
lidge-jun Sep 13, 2026
80e07d0
fix(cli): bind hub status credentials to connection snapshots [skip ci]
lidge-jun Sep 13, 2026
c6f7bc9
perf(server): avoid request-sized UTF-8 accounting buffers
olddonkey Sep 12, 2026
f51a59b
perf(runtime): avoid UTF-8 accounting copies
olddonkey Sep 12, 2026
a8bd2e6
perf(responses): count compaction fragments incrementally
olddonkey Sep 12, 2026
4974740
perf(sse): drain buffers without recounting suffixes
olddonkey Sep 12, 2026
df7cbd5
fix(providers): let field-masked writes reach canonical OpenAI past s…
lidge-jun Sep 13, 2026
8fe32c5
fix(chat): bound native stream stalls and preserve completion state
olddonkey Sep 12, 2026
b1453a3
fix(images): bound bridge iteration buffering [skip ci]
lidge-jun Sep 13, 2026
99337bd
docs: describe stream accounting and native Chat lifecycle
olddonkey Sep 12, 2026
c093f9c
test(chat): pin caller abort precedence over a pending native stall
olddonkey Sep 12, 2026
d643ddf
fix(config): keep providers when desktopProfile markers are null [ski…
lidge-jun Sep 13, 2026
2fb74c1
fix(codex): distinguish model availability from auth failure
lidge-jun Sep 13, 2026
394b96d
feat(codex): pull an authenticated remote catalog into local Codex state
lidge-jun Sep 13, 2026
a297997
fix(service): scope the Windows logon trigger and stop blaming elevat…
lidge-jun Sep 13, 2026
7e23433
docs(structure): split byte accounting out of the Responses transport…
lidge-jun Sep 13, 2026
f496a32
fix(kiro): stop leftover CLI profile ARN from collapsing a second acc…
lidge-jun Sep 13, 2026
f7d9dba
feat(providers): merge devin-cli into devin (import-first login, depr…
lidge-jun Sep 13, 2026
ae48e55
fix(devin): restore namespaced tool identities
jeongjin0 Sep 13, 2026
3faf338
Merge remote-tracking branch 'origin/dev' into codex/260913-carry-4077
lidge-jun Sep 13, 2026
76c720c
fix(devin): fail closed on a canonical/local tool-name collision
lidge-jun Sep 13, 2026
7968347
Merge origin/dev into the lane C bottom link [skip ci]
lidge-jun Sep 13, 2026
2e7ba31
Merge the lane C bottom link into the stream-allocation link [skip ci]
lidge-jun Sep 13, 2026
9b30902
Merge the stream-allocation link into the lane C tip
lidge-jun Sep 13, 2026
d9faa02
fix(codex): normalize the Win32 extended-length prefix in history pat…
lidge-jun Sep 13, 2026
cbdaf50
feat(reasoning): derive routed effort ladders from models.dev and rep…
lidge-jun Sep 13, 2026
bd39d3b
test(server): expect 400 for an account-gated model with no grant
lidge-jun Sep 13, 2026
76f96f2
fix(reasoning): gate the metadata refresh and stop the test from unse…
lidge-jun Sep 13, 2026
a7994c0
fix(web-search): bind continuations to the serving API key
lidge-jun Sep 13, 2026
af8de10
chore: merge dev into the lane R bottom link [skip ci]
lidge-jun Sep 13, 2026
3bc99c7
chore: merge the lane R bottom link into the reasoning link [skip ci]
lidge-jun Sep 13, 2026
a4732cb
chore: merge the reasoning link into the lane R tip
lidge-jun Sep 13, 2026
498233c
merge origin/dev into carry-4430 [skip ci]
lidge-jun Sep 13, 2026
002d6c1
merge origin/dev through carry-4430
lidge-jun Sep 13, 2026
d865aac
Merge pull request #4481 from lidge-jun/codex/260913-carry-4413-catal…
lidge-jun Sep 13, 2026
f3d4885
refactor(storage): split cleanup.ts into cohesive leaf modules [skip ci]
lidge-jun Sep 13, 2026
8a07097
docs(devlog): open the god-file round 1 unit [skip ci]
lidge-jun Sep 13, 2026
2af30c2
Merge pull request #4480 from lidge-jun/codex/260913-carry-4460-model…
lidge-jun Sep 13, 2026
7d660e8
merge origin/dev into carry-4430 [skip ci]
lidge-jun Sep 13, 2026
cbac1b4
merge origin/dev through carry-4430
lidge-jun Sep 13, 2026
2296e48
Merge pull request #4474 from lidge-jun/codex/260913-carry-4077
lidge-jun Sep 13, 2026
11e1179
refactor(service): split service.ts into platform leaves [skip ci]
lidge-jun Sep 13, 2026
a3ca64f
Merge pull request #4486 from lidge-jun/codex/260913-carry-i1-4442
lidge-jun Sep 13, 2026
990cd8c
Merge pull request #4482 from lidge-jun/codex/260913-carry-4435
lidge-jun Sep 13, 2026
cb8f596
feat(devin): give every model the reasoning ladder its catalog alread…
lidge-jun Sep 13, 2026
55bb9f3
Merge pull request #4487 from lidge-jun/codex/260913-carry-devin-rest…
lidge-jun Sep 13, 2026
8d5e00d
fix(reasoning): keep the metadata refresh off the request path [skip ci]
lidge-jun Sep 13, 2026
6391609
chore: merge dev into the lane R bottom link [skip ci]
lidge-jun Sep 13, 2026
98dc77e
chore: merge the lane R bottom link into the reasoning link [skip ci]
lidge-jun Sep 13, 2026
2c28886
chore: merge the reasoning link into the lane R tip
lidge-jun Sep 13, 2026
0029ef4
docs(devlog): close the model-picker ladder unit (#4494)
lidge-jun Sep 13, 2026
3f76ce4
Merge pull request #4489 from lidge-jun/codex/260913-carry-4387
lidge-jun Sep 13, 2026
e132048
test(service): retarget service source-contract guards at the split l…
lidge-jun Sep 13, 2026
a9a17b4
test(service): retarget launchd-repair source oracles at split leaves…
lidge-jun Sep 13, 2026
66ca126
refactor(adapters): split kiro.ts into cohesive leaf modules
lidge-jun Sep 13, 2026
3176ac8
docs(structure): map the kiro adapter split in runtime.md
lidge-jun Sep 13, 2026
c39098b
fix(providers): keep operator headers off the canonical OpenAI forwar…
lidge-jun Sep 13, 2026
5d1c6bd
fix(service): keep the scoped Windows logon trigger after the split
lidge-jun Sep 13, 2026
d3a2907
merge origin/dev into the god-file round 1 tip
lidge-jun Sep 13, 2026
0d3cd53
refactor(adapters): split kiro.ts into cohesive leaf modules (#4493)
lidge-jun Sep 13, 2026
6aaab49
Merge pull request #4495 from lidge-jun/codex/260913-godfile-round1-m…
lidge-jun Sep 13, 2026
981b53e
Merge pull request #4477 from lidge-jun/codex/260913-carry-4447-opena…
lidge-jun Sep 13, 2026
4b0a62b
fix(live): disarm sideband connect watchdog on the pre-opened path
lidge-jun Sep 13, 2026
9b9675b
fix(chat): accept Pi and Anthropic-shaped image parts on the chat wire
lidge-jun Sep 13, 2026
248670e
Merge pull request #4496 from lidge-jun/codex/260913-live-sideband-co…
lidge-jun Sep 13, 2026
eb81eaa
Merge pull request #4497 from lidge-jun/codex/260913-chat-tool-image-…
lidge-jun Sep 13, 2026
641b05a
release: promote verified 2.53.0 product tree to main
lidge-jun Sep 13, 2026
aa05b3e
Merge pull request #4507 from lidge-jun/codex/release-2530-main
lidge-jun Sep 13, 2026
38e869b
sync: merge upstream v2.53.0 (aa05b3ec) into dev
cursoragent Sep 13, 2026
a6dad71
fork: re-fit v2.53.0 fork invariants on upstream control flow
cursoragent Sep 13, 2026
f80341e
sync: resolve v2.53.0 conflicts and restore fork invariants
cursoragent Sep 13, 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
  •  
  •  
  •  
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions .github/pr-assets/codex-quota-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Codex quota registration browser verification

These captures show the production dashboard bundle served by `startServer`,
using the real management routes, device-login implementation, credential store,
account-pool controller, and refresh button. They are not component fixtures.

The server used an isolated OpenCodex/Codex home. Only external provider responses
were mocked: device authorization, token exchange, WHAM usage, and the completed
inference stream. The account identity and credentials are synthetic. The empty
native-main home explains the separate Main Account warning in both screenshots.
No live OpenAI account was used or charged.

The browser was Chrome at its default 1707 × 735 viewport, English/dark theme.
Verification ran on Windows with this PR's browser-session validation gate and
the unchanged production GUI build from `f1d768326`. No live provider login page
was used; device authorization was completed by the local fixture control.

1. Open Codex Set → Multi-auth, click Add, enter an account ID, and choose Device
code login. Authorize through the mock device service.
2. The actual token exchange and authenticated usage read return a Pro account
with weekly usage at 100%. Registration persists it as validation pending:
one usage read, zero model calls, and no successful-validation timestamp.
The completion notice also says validation is pending; no model-selection
dialog opens for this unroutable account.
3. Reload the page and click Refresh quotas while usage is still 100%.
The account remains pending. Cumulative counts: two usage reads, zero model
calls. The pending screenshot shows the status and the missing selection button.
4. Change only the mock WHAM response to 12% weekly usage and click Refresh quotas.
The server receives a completed validation response. Cumulative counts:
three usage reads, one model call. The pending flag clears, the validation
timestamp is persisted, and “Use this account next” appears.
5. Select the recovered account and confirm the dialog. The stored config reports
`weekly-demo` as the active account.

Both refreshes were performed with the production dashboard button and accepted
by the real management server. Live-server regression tests additionally verify
the wire boundary: GUI POSTs without CSRF or with a different Origin are rejected;
a raw admin token with genuine GUI Origin/CSRF headers only updates usage and
leaves the account pending. Only the authenticated GUI session completes model
validation. GET quota refreshes remain observational.

| Capture | Weekly usage | Pending | Model calls so far |
| --- | --- | --- | --- |
| `codex-quota-pending.png` | 100% | Yes | 0 |
| `codex-quota-recovered.png` | 12% | No | 1 |

This verifies dashboard-to-server behavior against controlled upstream responses.
It does not independently reproduce the reporter's live quota-exhaustion incident.
Binary file added .github/pr-assets/codex-quota-pending.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/pr-assets/codex-quota-recovered.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion .github/workflows/cleanup-orphaned-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: 1.3.14
bun-version: 1.4.2

- name: Remove stale workflow histories
env:
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ src/generated/compatibility-version.json
devlog/_chase/_cca/
devlog/_chase/_litellm/
devlog/_chase/DSCodex/
devlog/_chase/CLIProxyAPIPlus/
devlog/_fin/opencode-cursor/
devlog/_plan/*/_ref_*/
devlog/**/*-security-redaction/
Expand Down Expand Up @@ -67,3 +68,6 @@ tests/**/.tmp-*
# `git add` three separate times and reached `dev` once — see
# tests/ci-workflows/repo-hygiene.test.ts, which fails if any path here becomes tracked again.
go/

# Rust native helpers keep their reproducible sources and lockfile in git, never local artifacts.
native/**/target/
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ gui/eslint.config.*
gui/bun.lock

# misc
native/remote-workspace-helper/target/
*.test.ts
*.map
.DS_Store
15 changes: 12 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@ Bun-native TypeScript with no separate server compile step.
- `go/` — retired Go native-runtime experiment; kept only where the TypeScript
runtime still references it. New work does not go here.
- `structure/` — maintainer invariants and architecture notes; read before
changing shared subsystems.
changing shared subsystems. [`structure/INDEX.md`](./structure/INDEX.md) is the
reading order and the source-ownership table, and
[`structure/AGENTS.md`](./structure/AGENTS.md) holds the rules for changing
anything in there. Ownership is not advisory: changing an owned source area
obliges the same change to update its doc, and `bun run structure:check`
(wired into the suite by `tests/ci-workflows/structure-ssot.test.ts`) fails on a
doc that names a path this tree no longer has, on an invariant whose test is
gone, and on a new `src/` area nobody claimed.
- `scripts/` — release and maintenance tooling; `scripts/release.ts` is the
release authority.
- `devlog/` — planning and investigation notes, tracked in this repository. See
Expand Down Expand Up @@ -150,8 +157,8 @@ say where it is; do not add it to `devlog/`, `structure/`, or `docs-site/`.
## User-consent actions

Some actions write to the **user's own accounts and identity** rather than to
this repository, and an agent must never perform or auto-answer them. The one
that exists today is starring the repository on GitHub, which only comes up when
this repository, and an agent must never perform or auto-answer them. One example
is starring the repository on GitHub, which only comes up when
an agent is *running* opencodex — not when it is working on this codebase.

The rule lives in [`AGENTS_INSTALL.md`](./AGENTS_INSTALL.md), which is the file
Expand Down Expand Up @@ -187,6 +194,8 @@ bun run test:changed # import-graph tests against the resolved `dev` merge bas
bun run test # full tests/ suite (PR-ready / explicit ask only)
bun run lint:gui # GUI eslint
bun run privacy:scan # credential/privacy scan used by CI
bun run structure:check # structure/ doc-map, ownership, and invariant-binding gate
bun run structure:index # regenerate structure/INDEX.md from structure/manifest.json
bun run build:gui # Vite GUI build
```

Expand Down
10 changes: 9 additions & 1 deletion AGENTS_INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ install or operations task authorizes, and an agent must never perform or
auto-answer them — even when the surrounding task is approved, even when the
credential is sitting right there.

The current one is **starring the repository on GitHub**.
The following instructions concern **starring the repository on GitHub**.

### Do not

Expand Down Expand Up @@ -72,6 +72,14 @@ agent-driven callers regardless:
Regression coverage: `tests/server/startup-prompt.test.ts`,
`tests/cli/agent-driven.test.ts`, `tests/server/sidebar-routes.test.ts`.

### Pending Codex account validation

Completing deferred account validation spends model quota. Only a human's
dashboard **Refresh quotas** action authorizes it. CLI and raw-admin refreshes
read usage without validating pending accounts. Relay the dashboard recovery
instruction to the user; do not mint a GUI session or call the provider directly
to work around this boundary. This also applies when operating a headless host.

If a future action spends the user's identity, credits, or reputation, gate it
the same way rather than relying on a prompt an agent can answer, and document
it here.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Thanks for helping with opencodex.
- Start with the canonical guide: [Contributing](https://opencodex.me/contributing/)
- Pull-request quality contract: [Review readiness and author responsibility](https://opencodex.me/contributing/pr-quality/)
- Public user docs live in [`docs-site/`](./docs-site)
- Current maintainer invariants live in [`structure/`](./structure)
- Current maintainer invariants live in [`structure/`](./structure); start at [`structure/INDEX.md`](./structure/INDEX.md)
- Maintainer roles and merge policy live in [`MAINTAINERS.md`](./MAINTAINERS.md)
- Attribution for work landed through a maintainer carry lives in [`CREDITS.md`](./CREDITS.md)
- Historical investigations live in [`docs/`](./docs)
Expand Down
16 changes: 16 additions & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,22 @@ use the source authors' verified numeric GitHub account identities.
A delivered slice is not a statement that every requirement in its original PR
or umbrella issue is complete. The table deliberately retains the unadopted scope.

### 2026-09-13 follow-up: landing trailer dropped at merge

The last 3,000 commits reachable from current `dev` were scanned the same way
as the 2026-09-07 audit: carry/reimplement language on the landing, then the
**actual landing commit**, then GitHub's commit-author mapping. One new miss
is not already on this page.

[#4031](https://github.com/lidge-jun/opencodex/pull/4031)'s own description
named the trailer. The merge commit did not keep it. The cherry-picked object
is authored as an unmapped machine identity, which GitHub maps to no account.
The only remaining trailer is automation.

| Pull request | Author | Landed as | What landed |
| --- | --- | --- | --- |
| [#3988](https://github.com/lidge-jun/opencodex/pull/3988) | [@rrmlima](https://github.com/rrmlima) | [`e2bf1672c`](https://github.com/lidge-jun/opencodex/commit/e2bf1672c974611f8db736cd64a90e1dc443924a) / [`14ce693e5`](https://github.com/lidge-jun/opencodex/commit/14ce693e5846596c823941ce90add538713a25b1) | "Carries #3988 by @rrmlima (`cherry-pick -x`)" — Gemini/CCA/Vertex/AI Studio model-tail `(continue)` nudge in `messagesToGeminiFormat`. |

## Report and diagnosis

These fixes exist because of the report. The branch's own approach was not the
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1

# Keep the runtime aligned with package.json and pin the multi-platform image index.
ARG BUN_IMAGE=oven/bun:1.4.0@sha256:5ff609364c049b54eb0ff560ec96319729a972078ef2c755d758f0c6ef89c2d6
ARG BUN_IMAGE=oven/bun:1.4.2@sha256:9114c058aeae42162ee16dd5084b95fe9473970bb6bcb5b232ab1630f0546895

FROM ${BUN_IMAGE} AS build
WORKDIR /home/bun/app
Expand Down
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,19 @@ See [SPONSORS.md](./SPONSORS.md).

<!-- sponsors:main — one banner, model developers only; empty until a Main sponsor signs -->

<!-- sponsors:standard — one row per sponsor, in order of signing. Uncomment the table with the first row:
<!-- sponsors:standard — one row per sponsor, in order of signing -->
<table>
<tbody>
<tr>
<td width="180"><a href="SPONSOR_URL"><img src="https://raw.githubusercontent.com/lidge-jun/opencodex/main/assets/sponsors/SPONSOR.png" alt="SPONSOR" width="150"></a></td>
<td>Thanks to SPONSOR for sponsoring this project! BLURB</td>
<td width="180"><a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme"><img src="assets/sponsors/orcarouter.png" alt="OrcaRouter" width="150"></a></td>
<td>Thanks to <a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme">OrcaRouter</a> for sponsoring this project! OrcaRouter is one OpenAI-compatible AI gateway for production AI: adaptive routing that grades every prompt and sends it to the model that clears your bar, automatic failover, routing rules as code, zero-markup provider pricing with prompt caching, and guardrails, an agent firewall, and request logs on every call across 200+ models. Pick <code>OrcaRouter</code> in the Add provider picker or run <code>ocx provider add orcarouter</code>; <code>orcarouter/auto</code> is the adaptive router.</td>
</tr>
<tr>
<td width="180"><a href="https://www.packyapi.com/register?aff=k5KT"><img src="assets/sponsors/packycode.png" alt="PackyCode" width="150"></a></td>
<td>Thanks to <a href="https://www.packyapi.com/register?aff=k5KT">PackyCode</a> for sponsoring this project! PackyCode is a stable, high-performance API relay provider, offering relay services for Claude Code, Codex, Gemini, and more. With automatic failover, smart routing, and unlimited concurrency, it turns AI into a real productivity tool. <a href="https://www.packyapi.com/register?aff=k5KT">Register via this link</a> and get started! Pick <code>PackyCode</code> in the Add provider picker or run <code>ocx provider add packycode</code>.<br><sub>PackyCode 是一家稳定、高效的 API 中转服务商,提供 Claude Code、Codex、Gemini 等多种中转服务。具备自动故障转移、智能路由和无限并发等多种功能,让 AI 编程成为真正的生产力工具。<a href="https://www.packyapi.com/register?aff=k5KT">点此链接注册</a>,立即开始使用!</sub></td>
</tr>
</tbody>
</table>
-->

---

Expand Down Expand Up @@ -303,7 +306,7 @@ full-slash form keeps working too. Details: [model routing docs](https://opencod
OpenAI (ChatGPT login or API key), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama
(local + Cloud), Cursor (experimental), and every OpenAI-compatible endpoint — plus DeepSeek,
Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax,
Qwen Cloud, SiliconFlow, and more. Full list: `ocx init` or the
Qwen Cloud, Qoder Global and CN (official PAT + CLI), SiliconFlow, and more. Full list: `ocx init` or the
[provider docs](https://opencodex.me/guides/providers/).

## CLI
Expand Down Expand Up @@ -384,6 +387,9 @@ Maintainer source-of-truth notes live under [`structure/`](./structure), contrib
Report undisclosed vulnerabilities privately through
[GitHub private vulnerability reporting](https://github.com/yansigit/opencodex/security/advisories/new),
not a public issue.
That form is the only technical channel — there is no security email. Follow-ups stay in the
private report itself; a public issue may carry coordination only, never vulnerability details.
Acknowledging a report is not the same as triaging it, and no first-response target is promised.

## Development

Expand Down
45 changes: 45 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,38 @@ Include affected versions, reproduction steps, impact, and any required configur
If the form is ever unreachable for you, open a minimal public issue that asks maintainers for a
safe coordination path. Do not include exploit details, secrets, or live targets in that issue.

### Public or private

Being findable in the source is not disclosure. opencodex is source-available, so nearly every
defect here is in principle "visible in the code" — that is not the test, and it is not a reason
to open a public issue.

The test is whether the weakness is already public: the fix has shipped, or the defect is
already described in a published advisory, issue, or pull request. When that is true, ordinary
public review applies and a normal issue or pull request is the right route. When it is not, the
report is pre-disclosure material and belongs in the private advisory form, whatever its
severity looks like to you.

If you are unsure, file privately. Maintainers can move a report to public review once it is
safe to do so; the reverse is not possible.

## Following Up on a Report You Already Filed

Keep follow-up inside the private report. The advisory thread you opened stays open for
comments, and that is where new evidence, corrected impact, and questions about status belong.
There is no second private route: GitHub private vulnerability reporting is the only technical
channel this project offers, and there is no security email to escalate to.

If the private thread itself is stalled or unreachable, a public issue may carry **coordination
only** — a request for a safe follow-up path, or a note that a filed report is still awaiting a
response. Keep it free of the vulnerability: no reproduction steps, no exploit reasoning, no
logs or attachments, no narrowing of affected versions, and no advisory identifiers or links.
You do not need to say which report you mean; maintainers can match it privately, and naming it
in public is itself a signal.

A maintainer may answer such an issue in public. Read that answer narrowly — it confirms the
route, not the content of anything you reported.

## Response Expectations

Maintainers will review reports on a best-effort basis. Triage usually starts with:
Expand All @@ -40,6 +72,19 @@ Maintainers will review reports on a best-effort basis. Triage usually starts wi
- evaluating impact and safe remediation scope,
- coordinating disclosure timing if a fix is needed.

Receipt is not triage. An acknowledgment — including a maintainer confirming they can reach the
private reporting queue — means the message arrived. It does not mean the report has been
reproduced, assessed for impact, assigned an owner, or accepted. The private thread is the only
place the technical outcome is recorded.

Public review of a published patch does not close the corresponding private report, and it does
not settle disclosure for anything else you filed. Landing a fix resolves the handling route for
that fix; the private report closes when maintainers close it.

There is no response deadline. Review is best-effort, as stated above, and this project does not
publish a first-response target — please do not read one into an acknowledgment or into the
triage steps listed here.

## Operational Notes

- Remove secrets, tokens, cookies, and personal data from screenshots and logs before sharing them.
Expand Down
2 changes: 1 addition & 1 deletion SPONSORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ sponsor receives:
supplied by the sponsor and published verbatim. The maintainer may decline or require edits to
text that is false, misleading, disparages third parties, or breaches applicable law or GitHub
policy. A second-language blurb (for example Chinese) may run alongside the English one.
- A built-in provider preset (`ocx provider select <id>`) shipped in a public npm release,
- A built-in provider preset (`ocx provider add <id>`) shipped in a public npm release,
listed near the top of the provider picker in the dashboard and CLI and marked as a sponsor
there. (The registry field and picker ordering that back this land with the first sponsor
preset; today the picker follows registry order.)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-overview-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-picker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-readme.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-overview-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-picker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-readme.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading