feat(mcp-consent): render inventory stats as an MCP App dashboard - #476
Merged
dsklyar merged 13 commits intoAug 26, 2026
Conversation
Extract reusable view widgets into a private workspace package and opt consuming packages into its Tailwind sources without bloating unrelated views.
Present cookie and data-flow triage counts in a responsive MCP App while retaining the plain JSON fallback for hosts without App support.
4 tasks
@transcend-io/airgap.js-types
@transcend-io/cli
@transcend-io/design-tokens
@transcend-io/internationalization
@transcend-io/privacy-types
@transcend-io/sdk
@transcend-io/type-utils
@transcend-io/utils
@transcend-io/mcp
@transcend-io/mcp-server-admin
@transcend-io/mcp-server-assessment
@transcend-io/mcp-server-base
@transcend-io/mcp-server-consent
@transcend-io/mcp-server-discovery
@transcend-io/mcp-server-docs
@transcend-io/mcp-server-dsr
@transcend-io/mcp-server-inventory
@transcend-io/mcp-server-preferences
@transcend-io/mcp-server-workflows
commit: |
Honor the host OS instead of freezing or exempting animations in the shared theme.
The kit no longer ships a prefers-reduced-motion reset, so those checks would fail after stacking.
These tokens are used by every view, so the comments should describe the layout primitive rather than the inventory dashboard that motivated the values.
giacaglia
reviewed
Aug 25, 2026
| * than this dashboard has content for, and stretching to fill it turns the KPI | ||
| * cards into letterboxes. | ||
| */ | ||
| const PANEL = 'mx-auto flex w-full max-w-view flex-col gap-4 rounded-lg bg-card-sunken px-4 py-4'; |
Member
There was a problem hiding this comment.
Is it common to have these as constants? Shouldn't we share these constants?
Contributor
Author
There was a problem hiding this comment.
These constants are for Tailwind styling used only in the view below which are repeated. I could make a separate component here, but for initial implementation of dashboard I think its fine.
… the view The host already binds the dashboard via MCP Apps metadata, so the model description does not need to mention it. Drop the dashboard-specific layout walkthrough from the shared MCP README for the same reason.
5 tasks
A host sizes the iframe to its own panel, so a breakpoint never reports the display width. Claude's inline panel measures just under `lg`, which stacked three metric cards that had room to sit side by side.
The document now carries a container query rather than an `lg` media query, so the old assertion would pass on a layout that stacks in every host panel.
The classes already show the row is container-sized; the Claude-panel anecdote does not belong on the component or in the shared README.
Contributor
Author
|
Will add refresh button tool in follow up. |
dawson-turechek-transcend
approved these changes
Aug 26, 2026
| @@ -0,0 +1,2 @@ | |||
| # Vite-built MCP App views, rebuilt by `pnpm prebuild` | |||
| src/ui/generated/ | |||
There was a problem hiding this comment.
Nit: How about we replace this with **/ui/generated in the root .gitignore?
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
consent_get_inventory_statsto an MCP App: cookie and data-flow metric cards (with short notes), triage progress bars, a spinner while the host connects or data loads, and error states. The heading is Consent Inventory triage._meta.ui, not from copy the model has to interpret.max-w-viewkeeps the content from stretching in a wide panel, andGridlays the cards out against the row's own width so they stay side by side in Claude's panel instead of stacking. Generated-document tests assert kit utilities, inlined Spinner CSS, and the container query behind the columns.Test plan
pnpm run --dir packages/design-tokens buildpnpm run --dir packages/mcp/mcp-server-consent build:uipnpm run --dir packages/mcp/mcp-server-consent typecheck:uipnpm run --dir packages/mcp/mcp-server-consent testpnpm run check:depspnpm run check:changesetStack
Demo(s)
Screen.Recording.2026-08-25.at.17.03.03.mov