Skip to content

Conversation

@olaservo
Copy link
Member

@olaservo olaservo commented Dec 15, 2025

Not for merging. Just a prototype example of what the UI code might look like if using shadcdn + tailwind, with a lot of stubbed functionality.

TODO: still adding latest screenshots

olaservo and others added 30 commits November 30, 2025 08:06
- v2-features.json: JSON-based feature tracking derived from v2_scope.md
- claude-progress.md: Session handoff notes for context continuity
- scripts/init.sh, init.ps1: Dev environment setup for Unix/Windows
- scripts/smoke-test.sh: Quick validation script for session start

This infrastructure supports long-running development with Claude by
providing structured state management across context windows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add sync-issues scripts to generate v2-features.json from GitHub
- Add v2-features.json to .gitignore (now a generated cache)
- Update init scripts to sync issues at session start
- Point to project board for visual tracking

GitHub issues with 'v2' label are now the primary tracking mechanism.
The local JSON file is just a cache for offline/quick reference.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Part of tiered tracking system:
- GitHub issues: major features, bugs needing discussion
- TODO.md: small tasks discovered during development
- claude-progress.md: session context and implementation notes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add package.json with Playwright test dependency
- Add playwright.config.ts for test configuration
- Create tests/smoke/ for session-start validation
- Create tests/e2e/ for user journey tests
- Update smoke-test scripts to run Playwright
- Update init scripts to install dependencies
- Add Playwright artifacts to .gitignore

This completes the E2E testing setup recommended for
long-running Claude development sessions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This file is a generated cache from GitHub issues and should
not be tracked. It was added to .gitignore but was already
committed before that.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Clean handoff for prototype work on new branch.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Express: cleaner routing/middleware for proxy CRUD endpoints, well-maintained ecosystem
- Pino: fastest logger option, JSON-structured logs work well for debugging MCP traffic

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Based on MCPJam Inspector analysis:
- Server connection card with status indicators
- Resizable panel layouts for Tools/Resources/Prompts screens
- Form generation from JSON Schema
- Error handling patterns (inline errors, retry count, doc links)

Also updates nav links in all spec files to include v2_ux.md.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add server.json import support (Issue modelcontextprotocol#922) for MCP Registry format
- Add History Screen with automatic capture and replay functionality
- Add Pino logging rationale with log-as-history architecture
- Remove emojis from markdown files, use text alternatives

New UX sections added:
- Logging Screen (notifications/message, logging/setLevel)
- Tasks Screen (tasks/*, notifications/task/statusChanged)
- Sampling Panel (sampling/createMessage)
- Elicitation Handler (form + URL modes)
- Roots Configuration (roots/list)
- Experimental Features Panel (raw JSON-RPC tester)

Enhanced existing screens:
- Tools: annotations, autocomplete, progress indicators, image/audio
- Resources: annotations, subscriptions
- Prompts: autocomplete
- Navigation: ping latency, listChanged indicators

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Implements UI-only prototype for component library evaluation:

- Server List home page with server cards
- AppLayout with top navigation (Tools, Resources, Prompts, Logs, Tasks, History)
- All 7 screen stubs with mock data
- ServerCard and StatusIndicator components
- Shadcn UI components (Button, Card, Badge, Switch, Input, Select)
- Tailwind CSS dark theme

Based on v2_ux.md specification from PR modelcontextprotocol#945.
Mirror of Mantine prototype for comparison.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Removes unused ChevronUp from select.tsx, CardHeader/CardTitle from
Resources.tsx, and cn from Tools.tsx to pass TypeScript strict checking.

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Consolidate TODO.md (merged outer file, removed duplicate)
- Add "Last Good State" section to claude-progress.md
- Mark Mantine vs Shadcn demos complete
- Update spec-driven items to "Ready to Implement"
- Remove completed requirements issue from Waiting On

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Install @radix-ui/react-dialog, @radix-ui/react-checkbox, @radix-ui/react-progress
- Create Shadcn-style Dialog component with overlay and close button
- Create Shadcn-style Checkbox component
- Create Shadcn-style Progress component
- Create reusable ListChangedIndicator for list_changed notifications

Part of v2_ux.md spec alignment (Session 1 - Foundation)

[Generated with Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Logs screen:
- 2-panel layout (25% controls, 75% log stream)
- Log level dropdown with Set Level button
- Text filter input
- Level checkboxes for filtering
- Auto-scroll toggle
- Clear and Export buttons

Tasks screen:
- Card-based layout replacing table
- Active Tasks section with progress bars
- Completed Tasks section with Clear History
- Task cards show ID, method, progress, elapsed time
- View Details, Cancel, and Dismiss actions

Part of v2_ux.md spec alignment (Session 1 - Layout Fixes)

[Generated with Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- claude-progress.md: Document Session 1 completion
- TODO.md: Add spec alignment session tracking

[Generated with Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Session 1 completed on v2/prototype/shadcn:
- Foundation: Dialog, Checkbox, Progress, ListChangedIndicator components
- Layout: Logs 2-panel, Tasks card-based

Next: Session 2 feature enhancements, Session 3 modals, Session 4 mantine port

[Generated with Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Documents the correct branch workflow:
- Resume: pull parent, merge into work branch
- End: copy tracking files to parent, push both

[Generated with Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add ListChangedIndicator component to tools list panel
- Display tool annotations as badges (audience, read-only, destructive, long-run)
- Show annotation details and hints in parameters panel
- Add progress bar with percentage and status message during execution
- Add Cancel button that appears during tool execution
- Update mock data with diverse annotation examples

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add ListChangedIndicator component to resources list panel
- Display resource annotations as badges (audience, priority levels)
- Show annotation details in content preview panel
- Add inline template variable inputs with Go button for resolution
- Add subscriptions panel showing active subscriptions with unsub button
- Track subscription state with last updated timestamps
- Update mock data with diverse annotation examples

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Convert from table layout to card-based entries
- Add pin/unpin functionality with starred indicator
- Add expandable/collapsible response details section
- Add Pinned Requests section at bottom for quick access
- Support search filter across method, target, and params
- Support method filter dropdown
- Show entry count and filter stats
- Add Clear All functionality
- Update mock data with params, response, and labels

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Mark Session 2 feature enhancements as complete
- Update next steps to Session 3 (Modals)
- Update TODO.md with completed items

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add UI components: DropdownMenu, Textarea, RadioGroup, Label
- ServerInfoModal: two-column capabilities, instructions, OAuth details
- AddServerModal: form for manual config with edit mode support
- ImportServerJsonModal: JSON validation, package/remote selection, env vars
- Wire modals to ServerList dropdown and ServerCard action buttons
- Install @radix-ui/react-dropdown-menu, radio-group, label

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Mark Session 3 modals as complete
- Session 4 will port all spec alignment changes to Mantine branch
- After port: compare both prototypes for final decision

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Session 3 complete: modals (ServerInfo, AddServer, ImportServerJson)
- Session 4 planned: port all changes to Mantine branch
- Updated TODO.md and claude-progress.md from v2/prototype/shadcn

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
olaservo and others added 27 commits December 8, 2025 09:39
New per-server configuration modal with:
- Connection Mode selector (Direct vs Via Proxy)
- Custom Headers key-value editor with add/remove
- Request Metadata key-value editor for _meta fields
- Timeouts configuration (Connection, Request in ms)
- OAuth Settings (Client ID, masked Client Secret, Scopes)
- Form validation and save/cancel actions

Closes #6
- Add Settings button with icon after Server Info
- Wire up to open ServerSettingsModal
- Pass server name and save handler to modal

Closes #7
Step-by-step OAuth flow visualization with:
- 4 collapsible flow steps (Authorization, Code, Exchange, Token)
- Status badges for each step (pending/completed/active/error)
- Authorization URL display with copy and open actions
- Authorization code and state verification display
- Token exchange request visualization
- Access token details with expiration countdown
- Refresh token section with 'Test Refresh Now' button
- Decoded JWT display (header and payload)
- Actions: Revoke Token, Start New Flow
- Mock data for UI prototyping

Closes #8
- Add oauth property to server interface
- Conditionally show OAuth Debug button for OAuth-enabled servers
- Wire button to open OAuthDebuggerModal
- Button placed after Settings, before Test Client Features

Closes #9
- Add sseId and progressToken fields to HistoryEntry interface
- Display metadata row showing SSE ID and Progress Token when present
- Add mock data with example SSE IDs and progress token
- Useful for debugging SSE reconnection behavior and long-running ops

Closes #10, #12
- Add smooth CSS transition for expand/collapse
- Use max-height and opacity for smooth animation
- Panels now fully collapse to minimal height
- 200ms ease-in-out transition for natural feel

Closes #11
- Add Export JSON button to download filtered history entries
- Add Load More pagination with configurable page size (10)
- Show remaining count on Load More button
- Update footer stats to show visible/filtered/total counts
- Export includes all metadata (sseId, progressToken, etc.)

Closes #13
- Add suggestions hint below input field
- Placeholder for future completion/complete API integration
- Shows 'Type to see completions' message

Closes #14
- Search now filters across all sections simultaneously
- Empty sections auto-collapse (0 items)
- Filter applies to templates (name + description) and subscriptions
- Accordion counts update to show filtered results

Closes #15
Add inline dropdown on ServerCard to quickly switch between Direct and
Via Proxy connection modes without opening the Settings modal.

- STDIO servers default to "Via Proxy" (required)
- HTTP/SSE servers default to "Direct" (CORS-permitting)
- Shows warning for STDIO + Direct combination
- Export ConnectionMode type for parent component use

Addresses Cliff's feedback about making connection type more accessible.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ThemeContext for theme state management
- Add ThemeToggle dropdown component
- Add flash prevention script to index.html
- Wrap app with ThemeProvider in main.tsx
- Update sonner.tsx to use dynamic theme
- Add toggle to header in AppLayout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…nBadges

Quality improvements per V2 guiding principles:
- Add 'active' badge variant for blue status indicators
- Refactor OAuthDebuggerModal to use proper badge variants
- Extract AnnotationBadges component from Tools/Resources
- Consolidate 16 scattered mock data definitions into /mocks/ directory
- Export types from centralized location

Net reduction: ~500 lines of duplicated/scattered code

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add responsive navigation with mobile hamburger menu
- Extract CONTENT_HEIGHT constant for consistent page heights
- Normalize pre/code block max-heights to Tailwind classes
- Fix accordion section padding and border color
- Add overflow handling to Tools parameters panel
- Standardize border-radius to rounded-md throughout
- Replace hardcoded colors with theme variables (text-destructive)
- Make History search input responsive (flex-1 max-w-xs)
- Add lg:grid-cols-3 breakpoint to ServerList grid
- Normalize template input heights to h-8
- Extract EmptyState component for consistent empty states

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Revert ServerList grid from lg:grid-cols-3 back to md:grid-cols-2
  (3-column grid made cards too cramped)
- Add flex-wrap to ServerCard action button rows to prevent overflow

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ThemeToggle component to ServerList page header
- Convert server name button to functional dropdown in AppLayout
- Dropdown shows connected servers with checkmark on current
- Added "Manage Servers..." option to return to server list

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@olaservo olaservo closed this Dec 18, 2025
@olaservo olaservo deleted the v2/prototype/shadcn branch December 25, 2025 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant