Two silent failures in the Python SDK prevented frontend context from reaching the agent:
1. langgraph_default_merge_state rebuilt copilotkit as {actions} only, dropping the
useCopilotReadable items the TypeScript runtime had placed in state.copilotkit.context.
2. CopilotKitContext.properties were never forwarded through execute_agent → agent.execute(),
so <CopilotKit properties={...} /> values never reached state.copilotkit.properties.
Both fields now land cleanly under state["copilotkit"] on every agent invocation.
Also adds tests, a showcase example, and a new docs page.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace TODO placeholders in all 73 QA checklist files across 17 showcase
packages with specific, actionable test steps derived from reading the
actual demo page source code. Each checklist now references real
data-testid selectors, hook names, expected UI states, and interaction
flows.
Add showcase/QA-COVERAGE.md with a comprehensive matrix showing coverage
across manual QA, Vitest unit tests, Playwright E2E (smoke and interaction),
per-package E2E, aimock fixtures, and CI automation for all 9 demos plus
the Sales Dashboard starter hero.
Remove orphaned demo-wrapper.tsx (1 file) and error-boundary.tsx (17 files)
that still imported from the deleted @copilotkit/showcase-shared.
Regenerate registry.json, demo-content.json, and starter-content.json.
- Remove @copilotkit/showcase-shared webpack alias from all 17 next.config.ts
- Remove @copilotkit/showcase-shared tsconfig paths from all 17 tsconfig.json
- Update all 17 manifest.yaml starter sections to point to showcase/starters/<slug>
with Sales Dashboard name, npx degit clone command, and Railway demo URLs
- Add OPENAI_BASE_URL/OPENAI_API_KEY env passthrough to all 17 playwright configs
for aimock-backed e2e testing
Replace shared-import demo pages across all 17 showcase packages with
the original self-contained implementations from git history. Each demo
is now fully readable in the Code tab with zero @copilotkit/showcase-shared
imports, no demonstrationCatalog, and no shared error boundaries.
9 demos x 17 packages = 153 page.tsx files reverted.
Same remaining_steps crash as langgraph-python — newer langgraph in
Docker requires remaining_steps in custom state schemas. Remove the
param to use the default schema.
shared_frontend uses useAgentContext from @copilotkit/react-core which
may not be in the npm-published version. Docker builds install from npm,
not from the monorepo, so TypeScript fails on the missing export.
ignoreBuildErrors skips TS checking during next build.
shared_frontend imports @hashbrownai/core and @hashbrownai/react but
each package's Dockerfile installs deps from its own package.json.
Without these listed, npm install doesn't fetch them and the webpack
build fails with "Can't resolve '@hashbrownai/react'".
Lockfile was stale after rebase — hashbrown deps not in pnpm-lock.yaml.
Also applies oxfmt formatting and syncs next.config.ts webpack alias
with the simplified form from main.
Each package's 3 GenUI demo pages now include the RendererSelector pill toggle,
allowing users to switch between 4 active rendering strategies (json-render
falls back to tool-based until the Zod 4 isolated bundle is built).
transpilePackages tries to find the package in node_modules first, which
fails in Docker builds even though tsconfig paths and shared_frontend/src
are correctly set up. Replace with an explicit webpack resolve alias that
points directly to the shared_frontend/src directory.
Each package wraps shared tools in its framework's idiom, demo pages import
from @copilotkit/showcase-shared via tsconfig paths. Comprehensive Playwright
e2e tests adapted per package (130+ test files).
Cross-cutting fixes: debug routes (/ok→/health), dead code removal,
error boundaries, thread safety, langroid adapter, claude-sdk-ts text emission.