Rebuild the compiled renderer from abraxas914/GenericAgent source
commit 9fe5d69b85cfad8778ace84b6f69bc75f9e0d392, refreshing:
- New-chat default model tag: the selected-model badge in Settings
and the composer now read '新会话默认' / 'New chat default'.
- Model selectors display the configured profile name (备注名) so the
same model served by different providers is distinguishable.
- desktop_bridge: syncing mixin llm_nos references when a profile is
renamed, preventing orphan references in the mixin config.
- Release publisher sets GH_REPO so 'gh release create' resolves the
target repository without checking out source, satisfying the
publisher security contract while fixing the prerelease step.
Provenance and verifier updated to the new source commit and the
LF-normalized content manifest (98 generated assets).
Streamlit >=1.62 resets a fragment's outside-container wrapper cursor to 0
on every fragment rerun and GCs children not re-emitted, so incremental
appends (_stream_frozen) lost folded expanders mid-stream. Merge _stream_ls
into the single _stream_fh host and repaint expanders + live tail every
tick; the unconditional write also claims the slot on the initial run
(no 'could not reserve a stable position') and removes the empty
placeholder that pushed the first reply's bubble down.
HTTP 200 SSE/body overload/rate-limit now raises ConnectionError via
shared _raise_if_retryable_overload so _stream_with_retry can backoff.
Covers OpenAI error/response.failed/json failed; Claude error reuses helper.
NativeClaudeSession now reads an optional 'api_key_header' config field
('auto' | 'x-api-key' | 'bearer'). Default 'auto' keeps existing behavior:
sk-ant- keys -> x-api-key header, others -> Authorization: Bearer.
This lets non-sk-ant- channels that expose an Anthropic /v1/messages
endpoint (e.g. opencode.ai) use x-api-key auth, so the full native Claude
protocol works there. Adds a mykey_template.py example (1b' section)
documenting the new field.
Add a user-triggered desktop action to copy the current GA workspace to a chosen location and verify the bridge actually switches there before reporting success.
- wrap chatapp_common/continue_cmd/btw_cmd/export_cmd in one try/ImportError
- guard /new /continue /btw; /export help+all still work via agent.log_path
- bus port (19736): WebSocket only, all HTTP returns 404
- panel port (GA_HUB_WEB_PORT, default 19737): token via ?t= or cookie, /ws rejected
- token from GA_HUB_TOKEN or random 6 chars, printed on startup
- drop dead /api/ev HTTP endpoint (zero callers; bus ev goes over WS)
- pet: inline single-instance lock; CJK-aware title width
Expose the backend-supported max reasoning level in the /effort picker and document its protocol mappings.
Co-Authored-By: GenericAgent <bot@gaagent.ai>
- response.incomplete/response.failed now record usage, emit truncation marker
and stop cleanly instead of being misread as ConnectionError (retry storm)
- collect response.reasoning_text.delta/.done into thinking content blocks
- non-stream Responses JSON: parse reasoning items and failed/incomplete status