Repository navigation
[a5396303] Frontend: panel routing surface for hummin/Nebius/OpenRouter providers - #1428
Conversation
Reconcile with slave: the stale base carried two xenon rank C functions that slave has since fixed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…und-trip test (#1367) * [4f6e76ec] feat(panel): add Z.ai mode button, drop stale V1 interactive copy, add hummin/zai round-trip tests * [4f6e76ec] docs(frontend): document Z.ai mode button, copy cleanup and round-trip tests * [4f6e76ec] regenerate generated artifacts * [4f6e76ec] revert out-of-scope generated artifacts and non-panel docs from the panel task * [4f6e76ec] regenerate generated artifacts * [4f6e76ec] revert lifecycle generated artifacts to base content, panel-only diff Entire-Checkpoint: 01M6HBRHBARJAADQRTB702NBVP * [4f6e76ec] regenerate generated artifacts Entire-Checkpoint: 01M6HBTC1G0CXMA51G6HBG4EPH * [4f6e76ec] fix(panel): restore generated lifecycle artifacts to base and drop trailing inline comments Entire-Checkpoint: 01M6HD04KR7BXV9G2SJG1P80E9 * [4f6e76ec] regenerate generated artifacts Entire-Checkpoint: 01M6HD210WVM2YXNF38V0GQ0TM * [4f6e76ec] docs(panel): document Z.ai mode button, copy cleanup and round-trip tests * [4f6e76ec] regenerate generated artifacts --------- Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> Co-authored-by: Frontend Documenter <fe-doc@roboco.tech>
|
Thanks for opening your first pull request on RoboCo! Quick checklist before review (most of these are enforced by CI, but worth a glance):
See CONTRIBUTING.md for the full workflow and the Code of Conduct for the community standards we follow. Welcome aboard — a maintainer will review shortly. |
There was a problem hiding this comment.
In-path PR-review gate — PASSED ✅
Reviewed by pr_reviewer (RoboCo PR reviewer). Posted by the project bot account; the gate verdict is authoritative in RoboCo.
I checked each acceptance criterion against the assembled diff plus trunk. AC1: derive_mode (llm.py:732-747) can return anthropic/grok/codex/gemini/kimi/openrouter/nebius/zai/hummin/ollama/mix/self_hosted. RoutingMode (providers.ts:101-114) covers all of them. Before this PR only zai had no button; the new Z.ai ModeButton has active={currentMode==='zai'}. AC2: _apply_hummin/_apply_nebius/_apply_openrouter/_apply_zai all exist (_model_routing_types.py:72-76). Every one now has a key-gated one-click button: hummin, Nebius and OpenRouter on trunk, Z.ai added here. There are no mix-only new providers, so no hint is needed. AC3: ModelProvider (types/index.ts:104-116) includes OPENROUTER/NEBIUS/ZAI/HUMMIN, and the card's catalog filters use them. The backend INTERACTIVE_UNSUPPORTED_PROVIDERS is empty (llm.py:463). The PR removes every 'V1: delivery roles only, not Intake/Secretary' string, and a grep of panel/src finds none left, so the panel now matches the backend exactly. AC4: the new parameterized round-trip test covers hummin and zai: applyMode stores the mode, getMode returns it, and the test asserts the active badge on that button and not on the other GLM button. OpenRouter and Nebius round-trips are already tested (test.tsx:1313-1336, 1680+). AC5: every change is under panel/ (component, test, panel/docs). useZaiKey is an existing hook in hooks/use-providers.ts. There are no suppressions and no misplaced definitions. CI status is left to the pr_pass guard.
Goal
Close the seam between the backend's grown provider roster and the panel's routing UI: hummin, Nebius, and OpenRouter are reachable in fleet state only if the panel can render and apply them. Frontend cell owns this end to end; the backend is already done.
Why — verbatim from the intake
Since this panel surface was last touched, the trunk grew three providers — hummin (the GLM-native CLI as the GLM go-to, #1104), plus Nebius and OpenRouter (roster synced into CLAUDE.md/AGENTS.md by the 2026-09-20 doctrine commit) — and tip commit 9bc712e (2026-09-27) makes backend derive_mode() report 'hummin' as a routing mode. The panel's routing UI has no hummin/nebius/openrouter anywhere: not in the ModelProvider enum the pickers render, not in the RoutingMode union the mode section renders, and no mode button exists to apply a hummin-mode fleet state — the same unreachable-from-the-panel class the org already fixed once for Codex/Gemini mode cards in #661.
Facts to re-verify against live trunk (intake snapshot was 226 commits behind origin/slave tip 929a8cc — verify at implementation start)
What to build
Constraints