Salvage safe bits from reverted MoA PR (#820) - #824
Conversation
Re-applies the isolated, low-risk improvements from #820 without the MoA fanout/context changes that hung the mesh route: - catalog.json (node + client): add Gemma-4-E4B-it model entry (with vision mmproj) as a strong mini-class default. - nostr.rs (host + client): use Gemma-4-E4B-it as the 8-24GB auto-pack tier default instead of Qwen3-8B; update auto-pack tests accordingly. - mesh/mod.rs: advertised_context_length now falls back through public-model-id -> runtime-model-name resolution so context length is found when the routable model name differs from the served runtime name. - ui/tooltip.tsx: disable hover tooltips on touch/coarse-pointer devices via a matchMedia-backed useSyncExternalStore hook. Deliberately excludes the MoA gateway/context/fanout/reducer/rescue changes and openai-frontend transport/responses changes, which are the suspected cause of the mesh-route hang and need a real multi-node retest before re-merging.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThe PR adds Gemma-4-E4B-it-Q4_K_M model support across mesh-client and mesh-llm-host-runtime, updates automatic model pack selection for 8-24GB VRAM systems to prefer this model, enhances context length resolution with descriptor-based fallback lookup, and implements touch device detection to disable tooltips on coarse-pointer interfaces. ChangesGemma-4 Model Integration
Touch Device Tooltip Handling
🎯 2 (Simple) | ⏱️ ~12 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Pull request overview
Re-applies a small set of previously-reverted improvements: updates the recommended mid-tier model selection, fixes peer-advertised context length reporting when public vs runtime model names differ, and disables hover tooltips on touch/coarse-pointer devices to avoid “stuck” tooltips.
Changes:
- Add
Gemma-4-E4B-it-Q4_K_M(with mmproj sidecar) to both node + client bundled catalogs and make it the 8–24GB auto-pack default. - Fix
PeerInfo::advertised_context_length()to resolve context length for public/routable model IDs that alias a different runtime-served model name. - Disable Radix hover tooltips on touch/coarse-pointer devices using
useSyncExternalStore+matchMedia.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/mesh-llm-ui/src/components/ui/tooltip.tsx | Disables hover tooltips on touch/coarse-pointer devices via media-query subscription. |
| crates/mesh-llm-node/src/catalog.json | Adds Gemma-4-E4B-it quant + mmproj to the node catalog. |
| crates/mesh-llm-host-runtime/src/network/nostr.rs | Switches 8–24GB auto-pack default to Gemma and updates corresponding unit tests. |
| crates/mesh-llm-host-runtime/src/mesh/mod.rs | Fixes context-length lookup to work when a public model name aliases a different runtime model name. |
| crates/mesh-client/src/network/nostr.rs | Switches 8–24GB auto-pack default to Gemma and updates corresponding unit tests. |
| crates/mesh-client/src/models/catalog.json | Adds Gemma-4-E4B-it quant + mmproj to the client catalog. |
| Pack { | ||
| min_vram: 8.0, | ||
| models: vec![catalog_ref("Qwen3-8B-Q4_K_M")], | ||
| models: vec![catalog_ref("Gemma-4-E4B-it-Q4_K_M")], | ||
| }, | ||
| Pack { |
| pub fn advertised_context_length(&self, model: &str) -> Option<u32> { | ||
| self.advertised_context_length_for_runtime_model(model) | ||
| .or_else(|| { | ||
| self.served_model_descriptors | ||
| .iter() | ||
| .filter(|descriptor| { | ||
| let runtime_name = descriptor.identity.model_name.as_str(); | ||
| runtime_name != model | ||
| && self.public_model_id_for_routable_model(runtime_name) == model | ||
| }) | ||
| .find_map(|descriptor| { | ||
| self.advertised_context_length_for_runtime_model( | ||
| &descriptor.identity.model_name, | ||
| ) | ||
| }) | ||
| }) |
* origin/main: Salvage safe bits from reverted MoA PR (#820) (#824) Revert "Stabilize mesh MoA context and tool loops (#820)" (#823) Stabilize mesh MoA context and tool loops (#820) chore: flip docs pages to canonical URLs (#822) chore: Console public domain (#821) Add meshllm.cloud website, catalog viewer, and onboarding docs (#806) # Conflicts: # docs/index.html
Re-applies the isolated, low-risk improvements from #820 without the MoA fanout/context changes that hung the
meshroute (reverted in #823).What users get
Gemma-4-E4B-itadded to the catalog (with vision mmproj) and used as the 8–24GB auto-pack default instead of Qwen3-8B — a stronger mini-class default.What was deliberately left out
The MoA pieces suspected of causing the
mesh-route hang are not included:mesh-mixture-of-agents/src/*(context, fanout, worker, arbiter, reducer, session, normalize)network/openai/moa_gateway/*(context_budget, context_selection, progress)openai-frontend/responses.rs,network/openai/transport.rsmesh-llm-guardrails/src/rescue.rs(wired into the MoA tool-call path)These need a real multi-node retest (the hang only reproduced against the live relay-heavy mesh, not CI sim tests) before re-merging.
Validation
cargo check -p mesh-llm-host-runtime -p mesh-llm-client -p mesh-llm-node— cleancargo test --lib auto_pack(host + client) — greennpm run typecheck— cleanBackground
#820 was reverted in #823 after it hung the
mesh/MoA route in production (verified via Fly v85 works / v86 hangs); console is currently on the v85 rollback.Summary by CodeRabbit
New Features
Bug Fixes