Skip to content

feat(playground): add MCP-first landing page#77

Merged
devallibus merged 2 commits intodevelopmentfrom
feat/playground-landing-to-mcp
Mar 10, 2026
Merged

feat(playground): add MCP-first landing page#77
devallibus merged 2 commits intodevelopmentfrom
feat/playground-landing-to-mcp

Conversation

@devallibus
Copy link
Owner

Summary

  • show an MCP-first onboarding card on /playground when no session query param is present
  • keep the existing editor flow for valid sessions and add a recovery state for invalid session links
  • include the bundled TSL error-reporting cleanup from PR fix(playground): report structured TSL errors #75 review feedback

Testing

  • bun run test:web
  • bun run build:web

Closes #69

Copy link
Owner Author

@devallibus devallibus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: Approve (self-PR — submitted as comment)

Solid PR. Clean MCP-first landing page with good state management and a well-factored TSL error-reporting refactor. CI passes. No blockers.

Suggestions (non-blocking)

  1. suggestion: Use <Switch>/<Match> instead of nested <Show>playground.tsx:90-146
    The two mutually-exclusive <Show when={X}> / <Show when={!X}> with a ternary in the fallback obscures the state machine. <Switch>/<Match> would make the four states (landing / loading / error / session) explicit.

  2. suggestion: Add role="alert" to error containersPlaygroundLanding.tsx:153, playground.tsx:117
    Error messages appear dynamically but have no ARIA live region — screen readers won't announce them.

  3. suggestion: Use semantic <ol> for the 3-step instructionsPlaygroundLanding.tsx:54-96
    Steps are visually numbered but use flat <div>s. <ol>/<li> gives screen readers "item X of Y" context.

  4. suggestion: Rate-limit createManualSessionplayground.tsx:17-23
    This POST creates a new SQLite row with no rate limiting. The reviews system already has per-IP limiting — same pattern should apply here.

  5. nitpick: Remove dead setLoading(false)playground.tsx:77
    loading is already false when this path runs (no session param on landing).

  6. nitpick: Use <Show when={props.error}> instead of ternaryPlaygroundLanding.tsx:153
    Consistency with the rest of the codebase.

Test coverage notes

  • tsl-error-reporting.ts: 3 untested branches in getMessage (string input, non-Error/non-string, empty message) — quick win in existing test file.
  • Route state machine: 8 transitions at 0% coverage — best addressed with E2E tests (future work).

@devallibus devallibus merged commit 7e4c2bb into development Mar 10, 2026
4 checks passed
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