feat: builtin miniapps + IM bot UX overhaul + disabled-model safeguards#450
Merged
GCWing merged 5 commits intoGCWing:mainfrom Apr 18, 2026
Merged
Conversation
added 2 commits
April 18, 2026 17:31
Bundles three built-in MiniApps and reseeds them on launch when their schema version changes (gomoku, daily-divination, regex-playground), with user storage preserved across upgrades. Rebuilds the IM bot UX around a shared locale/menu model so Telegram, Feishu, and WeChat adapters render the same MenuView through their native primitives, and rewrites the command router on top of it. Adds disabled-model safeguards across the agentic stack: the AI client factory rejects disabled models with a clear error, and the session manager subscribes to config updates and auto-migrates active sessions back to "auto" when their bound model is disabled or removed (with a new SessionModelAutoMigrated event so the UI can refresh). FlowChat receives scroll-stability fixes in VirtualMessageList / useFlowChatFollowOutput, plus minor Tooltip and AgentAPI additions and locale updates.
CSS rules like `.result-overlay { display: flex }` were overriding the
UA's `[hidden] { display: none }`, which made initially-hidden panels
(gomoku result overlay, divination intro card, regex empty state) show
up immediately on first paint. Add a global `[hidden]` enforcement to
each builtin's stylesheet and bump their schema version so existing
installs reseed the fixed sources.
cb773b5 to
45751d5
Compare
added 3 commits
April 18, 2026 17:41
Match details were stuck in a side column that competed with the pattern library and the spec ref, so when the library card was tall the matches body collapsed to its title and users could not see any hits. Move the matches card into the main column right under the test text, switch to a responsive grid with capped height + internal scroll, surface line/column locations, mark zero-width matches explicitly, and add prev/next navigation that syncs the active mark in the highlight overlay. Bump builtin schema version to reseed.
…tion Each builtin had a strong concept on the hero element but generic SaaS chrome elsewhere, breaking immersion. Re-skin all three end to end so the chrome reinforces the function: - divination: arcane tarot — deep indigo + antique gold + serif display + gilded corner ornaments + starfield, all panels (fortune matrix, do/don't suits, lucky cells) carry the same ritual language - gomoku: traditional game-room — rosewood plank topbar, parchment side cards with serif + 4-character spacing, vermilion accents in place of generic blue, ink-on-paper result overlay with seal frame - regex-playground: IDE / terminal — Tokyo-Night-ish palette, monospace-first chrome, prompt symbols ($ /) on input rows, syntax-color accents (blue/green/orange/purple/pink) on flags, matches, library and ref cards Bump all three builtin schema versions so existing installs reseed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
miniapps_diron first launch; reseeds on schema-version bump while preserving the user'sstorage.json.locale(zh-CN / en-USBotStrings) andMenuViewmodel underservice/remote_connect/bot/, rewritescommand_routeron top of it, and updates Telegram / Feishu / WeChat adapters to render the same menu through their native primitives.AIClientFactorynow rejects requests routed to a disabled model with a clear error;SessionManagersubscribes to config updates and auto-migrates active sessions back toautowhen their bound model is disabled or removed, emitting a newSessionModelAutoMigratedevent so the UI can refresh its model selector.VirtualMessageList/useFlowChatFollowOutputso streaming output no longer fights the user's scroll position; updated companion notes inFLOWCHAT_SCROLL_STABILITY.md.Test plan
1. Built-in MiniApps
<appdata>/miniapps/builtin-*).storage.json(e.g. divination cards, regex input) survives restart.<appdata>/miniapps/builtin-gomoku/.builtin-versionto0, restart, and confirm the source files are rewritten butstorage.jsonis untouched.2. IM bot UX (covers Telegram / Feishu / WeChat)
For each platform you have configured:
/help(or the platform's equivalent text) and confirm the new menu renders with native controls (Telegram inline buttons, Feishu interactive card, WeChat numbered list).1,2, …) still resolve to the correct command.3. Disabled / removed models
auto(model selector refreshes; a notice may appear in the chat).Model '...' is currently disablederror instead of silently failing.4. FlowChat scroll stability
5. Smoke