Conversation
a67218d to
613ae4a
Compare
|
追加対応しました。\n\n- upstream master (24b1e6f) に rebase 済み\n- conflict 解消済み\n- PR 状態: MERGEABLE\n- ローカル全テスト: |
|
追加実装・監査完了です。\n\n## 追加内容\n- Hermes WebUI に Codex control plane を導入しました。\n- |
|
マージ再実行も確認しましたが、権限でブロックされています。\n\n |
|
Thanks for the detailed PR, @Voicle99! This is a substantial contribution combining Ollama/Gemma4 fixes with a new Codex control plane. Let me share some review thoughts: Ollama/Gemma4 fixesThe diagnosis —
Codex control planeThe
Test results2857 passed / 0 failed (full suite) is a solid signal for a 10-file, 1457-line PR. The dedicated test files ( The PR is large — 10 files touched, mixing bug fixes and a new feature. If the maintainer wants to split Ollama fixes from the Codex control plane into separate PRs for easier review, that's worth considering. But both sets of changes are clearly described. Regarding the merge permission error — that's expected for contributor accounts. A maintainer with repo write access will handle the merge once the PR is approved. |
Hold — review questions outstandingThanks for the extensive PR, @Voicle99! The Ollama/Gemma4 fixes look solid and the Codex control plane is an interesting addition. Before this can proceed, please address the questions from the review comment (posted 2026-04-28):
Please respond to these points and we'll do a full diff review. |
## Release v0.50.240 Batch release of 13 PRs that passed full triage + code review + test suite (3199 tests, 0 failures). --- ### Added - **Compact tool activity mode** (`simplified_tool_calling`, default on) — groups tool calls and thinking traces into a single collapsed "Activity" disclosure card per assistant turn. Also adds a new **Calm Console** theme with earth/slate palette and serif prose. @Michaelyklam — #1282 - **PDF first-page preview** — `MEDIA:` `.pdf` files render a canvas thumbnail via PDF.js CDN (4 MB cap). **HTML sandbox iframe** — `.html`/`.htm` files render inline in a sandboxed `<iframe srcdoc>` (256 KB cap). 10 i18n keys × 7 locales. @bergeouss — #1280, closes #480 #482 - **Inline Excalidraw diagram preview** — `.excalidraw` files render as pure SVG (no external deps; rectangles, ellipses, diamonds, text, lines, arrows, freehand; 512 KB cap). @bergeouss — #1279, closes #479 - **Inline CSV table rendering** — fenced `csv` blocks and `MEDIA:` CSV files render as scrollable HTML tables with auto-separator detection. @bergeouss — #1277, closes #485 - **Inline SVG, audio, and video rendering** — SVG as `<img>`, audio as `<audio controls>`, video as `<video controls>`. @bergeouss — #1276, closes #481 - **Batch session select mode** — multi-select sessions for bulk Archive/Delete/Move. 11 i18n keys × 7 locales. @bergeouss — #1275, closes #568 - **Collapsible skill category headers** — click to collapse/expand without re-render; state persists across filter cycles. @bergeouss — #1281 - **`providers.only_configured` setting** — opt-in flag to restrict the model picker to explicitly configured providers. @KingBoyAndGirl — #1268 - **OpenCode Go model catalog** — adds Kimi K2.6, DeepSeek V4 Pro/Flash, MiMo V2.5/Pro, Qwen3.6/3.5 Plus. @nesquena-hermes — #1284, closes #1269 ### Fixed - **Profile `TERMINAL_CWD` TypeError** — `_build_agent_thread_env()` helper merges env before `_set_thread_env()` call. @hi-friday — #1266 - **Service worker subpath cache bypass** — regex now matches `/api/*` under any mount prefix. @Michaelyklam — #1278 - **SSE client disconnect leaks** — `TimeoutError`/`OSError` treated as clean disconnects; server backlog 64, threads daemonized; session list renders before saved-session restore. @KayZz69 — #1267 - **i18n locale corrections** — Korean MCP strings (23), Chinese MCP strings (23), zh-Hant missing keys (41), de missing keys (229). @bergeouss — #1274, closes #1273 --- ### Test results ``` 3199 passed, 2 skipped, 3 xpassed in 72.79s ``` ### PRs on hold (not included) #1265 (draft), #1271 (superseded by #1266), #1272 (skipped XSS tests), #1232 (partial test run), #1222 (review questions open), #1134 (live-server tests), #1132 (superseded by #1134), #1108 (negative UX review), #1084 (empty description)
Maintainer fit-review needed — splitting Ollama fixes from Codex control planeAdding 1. Ollama / Gemma4 fixes — 2. Codex control plane (new feature surface) — Ask: Could you split this into two PRs?
Bundling them together blocks the Ollama fix on a feature decision that may take a while. The split lets the bug fixes ship now and lets the control plane get the design discussion it deserves. Tagging |
Closing — scope is too entangled to salvage cleanlyThanks @Voicle99 for the detailed PR. After running the salvage screen on this one, we're closing without merging or pulling sub-pieces, and want to be honest about why. The scope problemThe PR bundles two distinct concerns:
We asked for a split a few days ago and didn't hear back. We could have absorbed the split ourselves, but when we tried to extract just the Ollama half, we found the implementation isn't actually small atomic pieces:
Pulling the Ollama half cleanly would require redesigning the helper structure to not depend on the control-plane scaffolding. At that point we're rewriting it, not salvaging it. Per our salvage policy — when extracting a "small piece" requires also pulling helper functions and state variables, it's not salvage, it's just rebuilding. Why the underlying Ollama bugs may still be worth fixingIf the specific Gemma4-not-in-dropdown bug still reproduces on master (v0.50.269), we'd welcome a small focused PR scoped to JUST that fix — likely 20-50 LOC adding the missing alias mappings without the broader catalog refactor. Same for the Ollama-not-streaming bug if you can isolate it. Why we're closing rather than continuing to waitThe PR has been stale for 4 days with the split request unanswered. Holding it open longer doesn't help anyone — the underlying bugs (if real) are easier to fix from scratch than to extract from the current shape. And the Codex control plane half needs a separate design conversation we haven't had yet. Path forwardIf you'd still like to contribute:
Apologies for not engaging more deeply on the split request before closing. The scope as proposed wasn't going to make it through review even with the split, and we should have surfaced that earlier instead of waiting on you to do work we'd then push back on. Thanks for the contribution and for engaging with our review process — please keep contributing. |
## Release v0.50.240 Batch release of 13 PRs that passed full triage + code review + test suite (3199 tests, 0 failures). --- ### Added - **Compact tool activity mode** (`simplified_tool_calling`, default on) — groups tool calls and thinking traces into a single collapsed "Activity" disclosure card per assistant turn. Also adds a new **Calm Console** theme with earth/slate palette and serif prose. @Michaelyklam — nesquena#1282 - **PDF first-page preview** — `MEDIA:` `.pdf` files render a canvas thumbnail via PDF.js CDN (4 MB cap). **HTML sandbox iframe** — `.html`/`.htm` files render inline in a sandboxed `<iframe srcdoc>` (256 KB cap). 10 i18n keys × 7 locales. @bergeouss — nesquena#1280, closes nesquena#480 nesquena#482 - **Inline Excalidraw diagram preview** — `.excalidraw` files render as pure SVG (no external deps; rectangles, ellipses, diamonds, text, lines, arrows, freehand; 512 KB cap). @bergeouss — nesquena#1279, closes nesquena#479 - **Inline CSV table rendering** — fenced `csv` blocks and `MEDIA:` CSV files render as scrollable HTML tables with auto-separator detection. @bergeouss — nesquena#1277, closes nesquena#485 - **Inline SVG, audio, and video rendering** — SVG as `<img>`, audio as `<audio controls>`, video as `<video controls>`. @bergeouss — nesquena#1276, closes nesquena#481 - **Batch session select mode** — multi-select sessions for bulk Archive/Delete/Move. 11 i18n keys × 7 locales. @bergeouss — nesquena#1275, closes nesquena#568 - **Collapsible skill category headers** — click to collapse/expand without re-render; state persists across filter cycles. @bergeouss — nesquena#1281 - **`providers.only_configured` setting** — opt-in flag to restrict the model picker to explicitly configured providers. @KingBoyAndGirl — nesquena#1268 - **OpenCode Go model catalog** — adds Kimi K2.6, DeepSeek V4 Pro/Flash, MiMo V2.5/Pro, Qwen3.6/3.5 Plus. @nesquena-hermes — nesquena#1284, closes nesquena#1269 ### Fixed - **Profile `TERMINAL_CWD` TypeError** — `_build_agent_thread_env()` helper merges env before `_set_thread_env()` call. @hi-friday — nesquena#1266 - **Service worker subpath cache bypass** — regex now matches `/api/*` under any mount prefix. @Michaelyklam — nesquena#1278 - **SSE client disconnect leaks** — `TimeoutError`/`OSError` treated as clean disconnects; server backlog 64, threads daemonized; session list renders before saved-session restore. @KayZz69 — nesquena#1267 - **i18n locale corrections** — Korean MCP strings (23), Chinese MCP strings (23), zh-Hant missing keys (41), de missing keys (229). @bergeouss — nesquena#1274, closes nesquena#1273 --- ### Test results ``` 3199 passed, 2 skipped, 3 xpassed in 72.79s ``` ### PRs on hold (not included) nesquena#1265 (draft), nesquena#1271 (superseded by nesquena#1266), nesquena#1272 (skipped XSS tests), nesquena#1232 (partial test run), nesquena#1222 (review questions open), nesquena#1134 (live-server tests), nesquena#1132 (superseded by nesquena#1134), nesquena#1108 (negative UX review), nesquena#1084 (empty description)
概要
Hermes WebUI で発生していた Ollama/Gemma4 系の表示・応答停止問題を修正し、追加で Hermes から OpenAI Codex を直接制御できる control plane を導入します。
この PR は以下を同時に固定します。
gemma4:26bがモデル一覧に出ない / 送っても本文応答が見えない問題変更点
Ollama / Gemma4 修正
ollama/ollama-local/local-ollamaを WebUI catalog 上でcustomに潰さず保持providers.ollama-localのような named local/OpenAI-compatible provider を/api/modelsと/api/models/liveに反映/api/models/live?provider=ollama-localに cold-start fallback を追加@ollama-local:gemma4:26bのような prefixed model でも profile auto-switch が効くように修正ollama-localから Hermes runtime のcustomtransport に正しく寄せるagent.reasoning_effort読取バグを修正confirm()を shared dialog に置換Codex control plane 追加
provider_model_ids("openai-codex")~/.codexの local cache/config/api/codex/capabilitiesを追加/api/codex/selectを追加model.provider=openai-codexmodel.base_url=https://chatgpt.com/backend-api/codexmodel.default=<selected codex model>agent.reasoning_effort=<none|minimal|low|medium|high|xhigh>を一括保存
/codex [model] [effort]を追加/codex gpt-5.3-codex-spark xhigh/codexautocomplete 用に Codex 専用 model source を追加openai-codexを provider mismatch 判定上は OpenAI family として扱い、Codex active 時に baregpt-*を誤警告しないよう修正cmd_codex翻訳キーを追加検証
python3 -m py_compile api/config.py api/routes.pynode --check static/commands.jsnode --check static/ui.jspython -m pytest tests/ -q2857 passed, 1 warning, 8 subtests passedtests/test_onboarding_network.py:134の unknownintegrationmark実動確認
/healthがstatus=ok/api/codex/capabilities?live=0provider=openai-codexapi_mode=codex_responsesmodel_count=18gpt-5.3-codex-sparkを含むnone/minimal/low/medium/high/xhighauthenticated/error/key_sourceのみtom-claudeに復元済み追加ガードレール
tests/test_ollama_gemma4_guardrails.py_cfg.cfg読取禁止customtransporttom-claudeとollama-gemma4相当の catalog 混線防止tests/test_codex_control_plane.py/api/codex/capabilitiesroute/api/codex/selectroute/api/models/live?provider=openai-codexが Codex catalog を使う/codexslash command wiringopenai-codexprovider mismatch 誤警告防止