Repository navigation
feat(combos): enroll text-only members in vision sidecar (carry #4932) - #7162
Conversation
Port c9cda1b onto current dev, preserving atomic enrollment, runtime consumer classification and rename rollback. Keep new regressions in a registered sibling file. Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
- Send no visionSidecarTargets while a blocked member forces the image switch off, so a save never declares the remaining members text-only. - Reject enrollment of a model whose provider modelInputModalities hint lacks text instead of overriding it with a text-only declaration. - Update the MiniMax combo picker test to the sidecar-coverage contract. - Align pt/vi unavailable hints with English, revert an unrelated fr apostrophe change, and style the disabled-sidecar warning with the amber warning token. Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>
GET /api/models classified every row with isVisionSidecarConsumer, which rebuilds the registry-enriched provider per call (~0.1 ms/row, ~170 ms for a 2000-row listing). A per-listing classifier reuses the eligibility module's existing enrichment cache, so verdicts are unchanged. Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c09715c43e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
✅ Deterministic PR hygiene checks passed. |
…ngle modality pass Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>
…h on Text-only and mixed image/text members are covered by the Vision Sidecar, so the switch stays enabled; unknown and audio-only members still force it off. The cached capability rows now carry visionSidecarConsumer. Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>
…ng sidecar members A provider already at the modelCapabilities cap accepted a valid one-entry patch and persisted an oversized map that load-time sanitization then truncated, dropping the new text-only declaration. The route now validates the merged map (400, nothing written) and re-checks it under the config lock. Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>
|
Maintainer integration into
|
Summary
c9cda1b5a95292bc280ce1ec7dd942820c08cba1ontodevat7640a942b35044c974e534b84d5a8049f4a8ae9a, following the maintainer carry direction and the author's authoritative consumer-flag correction.modelCapabilities[model].inputModalities = ["text"]) so the Vision Sidecar describes their images. The request field isvisionSidecarTargetsonPUT /api/combos; it is validated against the submitted combo's exact targets and is never stored on the combo.modelInputModalitieshint lacks text (for example audio-only), is rejected with 400. Targets the sidecar already covers are skipped. Unknown or audio-only members keep the switch off and are named in the hint; while any member blocks images, the dashboard sends no enrollment at all./api/modelsrows carry the runtime'svisionSidecarConsumerverdict, so the GUI classification and the disabled-sidecar warning survive a reload. The listing shares one registry enrichment per provider, keeping a 2000-row listing at about 1 ms for this field. The warning (amber: requests continue) says images become omission notes while the sidecar is off. All 11 GUI locales, the combos and sidecars guides, and the structure docs are updated; the core/Lab boundary is unchanged.Co-authored-by: x3M3x 98298256+x3M3x@users.noreply.github.com
Verification
Exact head
c09715c43eedeffd5725a892bd108408e4cd8752. Full cross-platform CI was dispatched on the branch: https://github.com/lidge-jun/opencodex/actions/runs/38716102808 (queued at handoff; no CI pass claimed). PR fast subset: https://github.com/lidge-jun/opencodex/actions/runs/38716111918.Every test and proxy ran with throwaway
OPENCODEX_HOMEandCODEX_HOME(screenshot proxy also isolatedCLAUDE_CONFIG_DIR, non-default ports 19592/19594).bun run test:changed(OCX_TEST_NO_QUEUE=1) at061542ea4(review fixes, before the listing-cache commit): 8623 pass, 32 skip, 0 fail across 382 files. At4fec400fc(pre-review head) the same run had 1 failure:tests/providers/minimax-combo-image-input.test.tsstill expected a text-only member to block images, which this PR deliberately changes; the test now asserts sidecar coverage and that an audio-only member still blocks.bun run test:changedat final headc09715c43(the eligibility module widens the graph to 1331 files): 29965 pass, 39 skip, 11 fail, 4 errors. Attribution:tests/cli/sibling-home-client-sync.test.tsfails identically on cleanorigin/dev(32/1 on both).tests/service/service.test.ts(211/0),tests/service/service-sqlite-home.test.ts(5/0),tests/cli/cli-access-audio-live.test.ts(36/0) andtests/server/server-live-realtime-fixtures.test.ts(8/0) pass standalone on both this branch and cleanorigin/dev; their failures were timeouts under concurrent host load. None touch combo or vision code.src/vision/eligibilityorlistManagementModelRows: 722 pass, 0 fail.tests/routing/combo-vision-enrollment.test.tsfails without the route change (9 pass / 1 fail) and passes with it. The earlier custom-audio regression was likewise observed failing before its fix.isVisionSidecarConsumerrow lookups took ~170 ms; the shared-cache classifier takes ~0.7 ms with identical verdicts.bun run typecheck,bun run lint:gui,bun run lint:i18n(fromgui/),bun run build:gui,bun run privacy:scan,bun run structure:check,git diff --check— all passed.docs-site/,bun install --frozen-lockfilethenbun run buildpassed at4fec400fc(577 pages, 81,202 internal links); review commits do not touchdocs-site/./Applications/Google Chrome.appstalls at launch on this host), the mixed combo shows the switch enabled, the enrollment hint namingdemo/text-model, and the disabled-sidecar warning in the amber token (computedrgb(154, 74, 8)). Save/reload enrollment against the realPUT /api/comboswas exercised by the earlier smoke at4fec400fc; the review commits change only the blocked-member gate and styling on the GUI side, both covered by unit tests above.PUT /api/comboskeeps its existing authentication and origin checks. Enrollment validates exact combo membership and existing declarations before any mutation. No credentials, dependencies, workflow permissions, or release behavior changed.Before (
origin/dev, real GUI build): the text-only member keeps the image switch unavailable.After (this branch at
c09715c43, real GUI build): the switch is on, the hint names the member to enroll, and the amber warning explains the disabled sidecar.Screenshots live only on
pr-assets, outside this PR branch.Checklist
Summary by CodeRabbit
Follow-up on
b7393ffe4(CI react-doctor + stale GUI tests)cf6000364: React Doctor (PR gate, blocking=warning) flagged two lines this PR added: the sidecar-disabled hint used an in-page<a href="#dashboard">(anchor-target-exists) and the modality parse looped twice (js-flatmap-filter). The hint now uses a ghost button withnavigateHash("dashboard"), like other dashboard links, and the parse is a singleflatMap. Localreact-doctor@0.9.11 --scope changed --blocking warning: both findings gone.b7393ffe4:gui/tests/combo-capability-hidden-targets.test.tsxstill asserted the pre-PR rule that text-only members force the Image switch off (4 failures atc09715c43, 0 on dev). Updated to the intended behavior: text-only and mixed image/text members stay on through the Vision Sidecar; unknown, audio-only and text+audio-only members still force it off (new cases); cached capability rows includevisionSidecarConsumer.cd gui && bun run test: 3330 pass / 0 fail (342 files). GUI typecheck andbun run lintclean.