• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive-studio / 24717623940
70%

Build:
DEFAULT BRANCH: main
Ran 21 Apr 2026 10:36AM UTC
Jobs 1
Files 473
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Apr 2026 10:33AM UTC coverage: 66.308% (+0.1%) from 66.166%
24717623940

push

github

web-flow
feat(playground): persist MCP App UI metadata across restarts (#2057)

* feat(db): add mcp_app_ui_metadata table migration

Introduces migration 004 with mcp_app_ui_metadata(tool_name PK, server_name, resource_uri, updated_at) and an index on server_name. Applies it in the in-memory test DB helper. Groundwork for persisting the Playground MCP App UI metadata cache across app restarts.

* feat(db): add reader and writer for mcp app ui metadata

Adds readAllMcpAppUiMetadata, replaceAllMcpAppUiMetadata (transactional DELETE + bulk INSERT so each call is atomic and prunes stale rows), and clearAllMcpAppUiMetadata. Covered by 5 new tests: empty read, round-trip, replace-without-accumulation, empty-replace clears the table, and clearAll.

* feat(playground): persist MCP App UI metadata cache across restarts

getCachedUiMetadata() now seeds the in-memory cache from SQLite on first access via ensureUiMetadataLoaded(), and createMcpTools() calls replaceAllMcpAppUiMetadata(cachedUiMetadata) at the end of each stream setup (even when empty, so servers that lost all UI tools have their stale rows pruned). Historical tool parts with _meta.ui now remount McpAppView on app restart without first requiring a new streaming session to repopulate the cache.

* fix(playground): preserve persisted MCP App UI metadata on discovery failure

When createMcpTools() used to reset the module-level cachedUiMetadata at
the top and unconditionally persist it at the bottom, a transient
fetchWorkloads() or getEnabledMcpTools() rejection would wipe the
previously persisted rows — defeating the whole point of the cache.
Build discovery into a local map and only swap + persist once the
required calls have resolved.

Made-with: Cursor

* fix(playground): retry MCP App UI metadata hydration after transient DB read failure

ensureUiMetadataLoaded() was latching uiMetadataLoaded=true before the
SQLite read, so a transient failure (e.g. database locked at startup)
would permanently disable re... (continued)

3844 of 6337 branches covered (60.66%)

42 of 43 new or added lines in 4 files covered. (97.67%)

5983 of 9023 relevant lines covered (66.31%)

119.52 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
97.37
0.29% main/src/chat/mcp-tools.ts
Jobs
ID Job ID Ran Files Coverage
1 24717623940.1 21 Apr 2026 10:36AM UTC 473
66.31
GitHub Action Run
Source Files on build 24717623940
  • Tree
  • List 473
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #24717623940
  • 591e851e on github
  • Prev Build on main (#24717388327)
  • Next Build on main (#24721685183)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc