Jordan Ritter
f8bbb1390c
feat: complete open-genui removal from tests, registries, middleware, and docs
2026-04-15 16:44:28 -07:00
Jordan Ritter
1fcc49e100
feat: remove open-genui rendering from starter template and registry
2026-04-15 16:37:56 -07:00
github-actions[bot]
df9c812047
style: auto-fix formatting
2026-04-15 22:25:26 +00:00
Jordan Ritter
93b730aba5
feat: add deployed field to starter objects in registry.json
...
Add a `deployed` boolean to all 17 starter sub-objects. 14 marked
true (healthy on Railway), 3 marked false (mastra, crewai-crews,
claude-sdk-typescript — currently down). Used by smoke tests to
gate which starters are tested.
2026-04-15 15:17:04 -07:00
copilotkit-devops-bot[bot]
068521d0ec
chore: auto-sync docs from main (2026-04-15)
2026-04-15 15:32:42 +00:00
Jordan Ritter
80ee51dc46
fix: wider starter hero section, sticky renderer selector above sidebar ( #3913 )
...
## Summary
- Shell: starter section breaks out to `max-w-[90rem]` (1440px) while
header/demos stay at `max-w-5xl` (1024px) — gives the dashboard +
sidebar room to breathe
- Starter: renderer selector bar gets `sticky top-0 z-[60]` — stays
visible and clickable above the CopilotKit sidebar (z-50)
- All 17 starters regenerated with sticky header
2026-04-14 15:28:52 -07:00
Jordan Ritter
665c312372
fix: harden deploy pipeline — independent concurrency, post-deploy health checks ( #3908 )
...
## Summary
- **Fix concurrency group**: Manual dispatches targeting different
services no longer cancel each other. Push events still cancel stale
deploys (same group), but `workflow_dispatch` runs for different
services get unique groups and run independently.
- **Add post-deploy health check**: After Railway deploy, polls the
service health endpoint (6 attempts over ~90s). Non-blocking for
sleep-on-idle services but logs clearly for visibility.
- **Enhance Slack notification**: Now includes service count and names
in both success and failure messages, plus guards against empty webhook
secret.
2026-04-14 15:26:54 -07:00
Jordan Ritter
c8b5bfd890
fix: wider starter hero section, sticky renderer selector above sidebar
2026-04-14 15:26:24 -07:00
Jordan Ritter
1855ea11c2
fix: format
2026-04-14 15:12:10 -07:00
Jordan Ritter
8ca2b38557
fix: responsive iframe height and scrollable starter content
2026-04-14 15:07:00 -07:00
Jordan Ritter
8786ee98fc
fix: regenerate shell registry and starter content data
2026-04-14 14:17:24 -07:00
Jordan Ritter
ce8a9fe18b
feat: showcase starter restructuring — Sales Dashboard as hero ( #3896 )
...
## Summary
- **17 generated clonable starters** at `showcase/starters/<slug>/` with
Sales Dashboard + 5 GenUI rendering strategies (Tool-Based, A2UI
Catalog, HashBrown, json-render fallback, Open GenUI)
- **153 demo pages reverted** to self-contained originals from git
history — zero shared imports, fully readable in Code tab
- **Shared frontend deleted** — all packages now fully self-contained
- **17 Railway services provisioned** with sleep-on-idle for all
starters
- **Aimock integration** — 37 fixture rules covering all 9 demo types,
per-package playwright configs wired, docker-compose for CI
- **CI updated** — 17 starter services in deploy workflow, drift
detection CI for template consistency
- **Shell updated** — `npx degit` clone commands, full component tree in
Code tab, `.java` file support
## What Changed
### Phase 1A: Starter Template + Generation
- Canonical template at `showcase/starters/template/` with Sales
Dashboard, 5 renderer strategies, per-language Dockerfiles (non-root
user, agent health checks)
- Generation script at `showcase/scripts/generate-starters.ts` with
Python import rewriting, TypeScript shared-tools rewriting, `--check`
mode for CI drift detection, deterministic output (sorted
devDependencies)
- 537 tests: 267 unit (generation script + transform functions) + 270
cross-starter consistency
### Phase 1B: Demo Revert
- All 9 feature demos across all 17 packages reverted to self-contained
originals from commits `cbc4c8f77` and `52ac091ef`
- Zero `@copilotkit/showcase-shared` imports in any demo page
- Dead `demo-wrapper.tsx` and `error-boundary.tsx` files removed
### Phase 2: Integration + Cleanup
- Removed webpack alias and tsconfig paths from all 17 packages
- Deleted `showcase/shared/frontend/` and removed from
`pnpm-workspace.yaml`
- Updated all 17 manifest.yaml files with new starter paths + Railway
domains
- Updated CI deploy workflow with 17 starter services + Railway IDs
- Added drift detection CI (`showcase_template-drift.yml`) with expanded
trigger paths
- Updated shell clone command to `npx degit`, starter content bundler
discovers full component tree + `.java` files
### Phase 3: Aimock Integration
- Expanded `showcase/aimock/feature-parity.json` from 18 to 37 fixture
rules covering all demo interactions
- Updated all 17 `showcase/packages/*/playwright.config.ts` with env
passthrough for `OPENAI_BASE_URL`/`OPENAI_API_KEY`
- Created `showcase/tests/docker-compose.packages.yml` — CI aimock
sidecar (fixtures-only, strict mode)
- Created `showcase/scripts/run-e2e-with-aimock.sh` — convenience script
for local testing
- Aimock modes: CI = strict/fixtures-only, Live demos = proxy +
fixtures, Local = developer choice
### E2E Tests
- Starter interaction tests: renderer switching verifies content
changes, "Add a deal" exercises React state
- Demo interaction tests: suggestion buttons verified by text,
click-and-verify for agentic-chat, hitl, tool-rendering
- Playwright screenshot structure for 3 viewports (iPhone SE, iPhone 14
Pro Max, Desktop)
### Quality
- Docker: non-root user, process identification in entrypoint (`wait -n`
+ PID check), agent health checks for all 4 languages
- Types: `SalesStage` and `RenderMode` derived from `as const` arrays,
`VALID_MODES` localStorage validation, `HashBrownDealCardProps.stage`
typed as `SalesStage`
- Error handling: generation script fails hard on missing required
inputs, warns on known-incomplete agents, sorted devDependencies for
determinism
- HashBrown prompt: fixed `name=` to `label=` (MetricCard prop
mismatch), deduplicated generator functions
## Quality Gates
| Gate | Result |
|------|--------|
| MSAL CR Phase 1 (7 agents x 4 rounds) | Converged: 30 → 20 → 4 → 0 |
| MSAL CR Phase 2 (7 agents x 2 rounds) | Converged: 4 → 0 |
| Final MSAL CR (7 agents) | Converged |
| Aimock CR (7 agents) | 4 clean + 3 fixed |
| Unit tests (267) + Consistency (270) | 537 passing |
| Build validation (4 starters) | All pass |
| Drift detection (`--check`) | Pass |
| Playwright screenshots (33) | Visual verification pass |
| CI (16 checks) | ALL GREEN |
## Test plan
- [x] 537 vitest tests passing (generation script + starter consistency)
- [x] 4 starters build successfully (langgraph-python, ag2, mastra,
spring-ai)
- [x] Zero `@copilotkit/showcase-shared` imports in any demo page
- [x] All 17 manifest.yaml files have correct starter sections with
Railway domains
- [x] Drift detection: `npx tsx showcase/scripts/generate-starters.ts
--check` exits 0
- [x] 33 Playwright screenshots verified at 3 viewports
- [x] 37 aimock fixture rules cover all 9 demo types
- [x] CI: 16/16 checks green
- [x] E2e tests exercise real interactions (renderer switching, deal
creation, suggestion clicks)
- [ ] Aimock-backed e2e run via Docker (blocked by Node v25 local compat
— works in Docker)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-04-14 13:11:54 -07:00
Jordan Ritter
d8d889aebf
chore: remove dead demo-wrapper/error-boundary files, regenerate shell data
...
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.
2026-04-14 12:57:32 -07:00
Jordan Ritter
5ac07d4d9b
feat: CI, shell, and aimock integration for showcase starters
...
CI:
- Add 17 starter services to showcase deploy workflow with Railway IDs
- Add drift detection workflow (triggers on starters, packages, scripts, shared)
- Remove shared_frontend copy step for starter builds
Shell:
- Update clone command to npx degit with clipboard fallback
- Update starter content bundler for full component tree + .java support
- Add clone_command to manifest schema and registry types
Aimock:
- Expand feature-parity.json from 18 to 37 fixture rules
- Add docker-compose.packages.yml for CI aimock sidecar (strict mode)
- Add run-e2e-with-aimock.sh convenience script
2026-04-14 12:52:52 -07:00
copilotkit-devops-bot[bot]
475fda23de
chore: auto-sync docs from main (2026-04-14)
2026-04-14 14:00:31 +00:00
Jordan Ritter
ae3d871542
feat: showcase feature parity: shared tools, Sales Dashboard, A2UI across all 17 integrations ( #3873 )
...
## Summary
- Create `@copilotkit/showcase-shared` — shared frontend package with
React hooks, components, A2UI catalog, and SalesDashboard
- Create shared Python + TypeScript tool implementations (get_weather,
query_data, manage_sales_todos, search_flights, schedule_meeting,
generate_a2ui)
- Upgrade all 17 showcase integrations to full feature parity with the
langgraph-python starter
- Docker builds verified locally for all 17 packages
- Comprehensive test coverage: 165 unit tests, 68 React component tests,
130+ Playwright e2e files
## Commits
1. `feat:` shared packages — frontend, Python tools, TypeScript tools,
unit tests, React component tests, aimock fixtures
2. `feat:` all 17 package upgrades — tools, demo pages, cross-cutting
fixes, Playwright e2e tests
3. `feat:` Docker + CI — tsconfig paths resolution, shared module
copying, spring-ai base image fix
4. `chore:` pnpm lockfile update
## Code review
5 rounds of fresh unbiased MSAL (1 dedicated agent per package, zero
prior context). Round 5: **20/20 packages PASS with 0 findings.** Test
quality audit: all criticality-7+ gaps fixed.
## Docker builds (all 17 verified locally)
```
langgraph-python ✅ langgraph-typescript ✅
langgraph-fastapi ✅ mastra ✅
pydantic-ai ✅ claude-sdk-typescript ✅
crewai-crews ✅ spring-ai ✅
google-adk ✅ ms-agent-dotnet ✅
agno ✅ claude-sdk-python ✅
ag2 ✅ langroid ✅
strands ✅ ms-agent-python ✅
llamaindex ✅
```
## Test coverage
- Python unit: 54 tests (tools + parity + framework wrappers)
- TypeScript unit: 43 tests
- React component: 68 tests (7 suites)
- Playwright e2e: 130+ files, per-package UI adaptation
- Aimock: 18 deterministic fixtures (ready for Docker-compose wiring)
## Known gaps (follow-up PR)
- Feature set varies: langgraph-python/fastapi have 9 demos, rest have 4
- gen-ui-tool-based: Chart/Haiku/Sales Pipeline variants across packages
- HITL: MeetingTimePicker vs step-selector variants
- Node 22 upgrade across all Dockerfiles + CI
## Test plan
- [x] `python3 -m pytest showcase/shared/python/tests/ -v` (54 passed)
- [x] `npx vitest run --config
showcase/shared/typescript/vitest.config.ts` (43 passed)
- [x] `npx vitest run --config
showcase/shared/frontend/vitest.config.ts` (68 passed)
- [x] Docker build all 17 packages locally
- [ ] Deploy to Railway and run smoke tests
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-04-13 20:17:54 -07:00
github-actions[bot]
b670dd34bc
style: auto-fix formatting
2026-04-14 03:03:54 +00:00
Jordan Ritter
b6fcafe4cd
feat: all 17 showcase packages to 9-demo parity with Sales Dashboard hero
...
Every package: 9 demos (agentic-chat hero, hitl MeetingTimePicker, tool-rendering,
gen-ui-tool-based Chart Generator, gen-ui-agent A2UI dynamic, shared-state-read/
write/streaming, subagents), 7 backend tools, Playwright e2e tests per demo.
Cross-cutting: debug routes, error boundaries, camelCase SSE, generate_a2ui
conversation context, spring-ai JSON weather, langroid adapter fixes.
# Conflicts:
# showcase/packages/ag2/manifest.yaml
# showcase/packages/ag2/src/agents/agent.py
# showcase/packages/ag2/src/app/api/debug/route.ts
# showcase/packages/ag2/src/app/demos/agentic-chat/page.tsx
# showcase/packages/ag2/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/ag2/src/app/demos/hitl/page.tsx
# showcase/packages/ag2/src/app/demos/tool-rendering/page.tsx
# showcase/packages/ag2/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/ag2/tests/e2e/hitl.spec.ts
# showcase/packages/ag2/tsconfig.json
# showcase/packages/agno/manifest.yaml
# showcase/packages/agno/src/agents/main.py
# showcase/packages/agno/src/app/api/debug/route.ts
# showcase/packages/agno/src/app/demos/agentic-chat/page.tsx
# showcase/packages/agno/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/agno/src/app/demos/hitl/page.tsx
# showcase/packages/agno/src/app/demos/tool-rendering/page.tsx
# showcase/packages/agno/tsconfig.json
# showcase/packages/claude-sdk-python/manifest.yaml
# showcase/packages/claude-sdk-python/src/agents/agent.py
# showcase/packages/claude-sdk-python/src/app/api/debug/route.ts
# showcase/packages/claude-sdk-python/src/app/demos/agentic-chat/page.tsx
# showcase/packages/claude-sdk-python/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/claude-sdk-python/src/app/demos/hitl/page.tsx
# showcase/packages/claude-sdk-python/src/app/demos/tool-rendering/page.tsx
# showcase/packages/claude-sdk-python/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/claude-sdk-python/tests/e2e/hitl.spec.ts
# showcase/packages/claude-sdk-python/tsconfig.json
# showcase/packages/claude-sdk-typescript/.gitignore
# showcase/packages/claude-sdk-typescript/src/app/api/debug/route.ts
# showcase/packages/claude-sdk-typescript/src/app/demos/agentic-chat/page.tsx
# showcase/packages/claude-sdk-typescript/src/app/demos/tool-rendering/page.tsx
# showcase/packages/claude-sdk-typescript/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/claude-sdk-typescript/tests/e2e/hitl.spec.ts
# showcase/packages/crewai-crews/manifest.yaml
# showcase/packages/crewai-crews/src/agents/crew.py
# showcase/packages/crewai-crews/src/agents/tools/custom_tool.py
# showcase/packages/crewai-crews/src/app/demos/agentic-chat/page.tsx
# showcase/packages/crewai-crews/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/google-adk/manifest.yaml
# showcase/packages/google-adk/src/agents/main.py
# showcase/packages/google-adk/src/app/demos/agentic-chat/page.tsx
# showcase/packages/google-adk/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/google-adk/src/app/demos/hitl/page.tsx
# showcase/packages/langgraph-fastapi/src/app/api/debug/route.ts
# showcase/packages/langgraph-fastapi/src/app/demos/agentic-chat/page.tsx
# showcase/packages/langgraph-fastapi/src/app/demos/hitl/page.tsx
# showcase/packages/langgraph-fastapi/tests/e2e/hitl.spec.ts
# showcase/packages/langgraph-fastapi/tsconfig.json
# showcase/packages/langgraph-python/src/app/demos/agentic-chat/page.tsx
# showcase/packages/langgraph-python/src/app/demos/hitl/page.tsx
# showcase/packages/langgraph-python/tests/e2e/agentic-chat.spec.ts
# showcase/packages/langgraph-python/tests/e2e/hitl.spec.ts
# showcase/packages/langgraph-python/tests/e2e/shared-state-streaming.spec.ts
# showcase/packages/langgraph-python/tests/e2e/shared-state-write.spec.ts
# showcase/packages/langgraph-python/tests/e2e/subagents.spec.ts
# showcase/packages/langgraph-python/tsconfig.json
# showcase/packages/langgraph-typescript/.gitignore
# showcase/packages/langgraph-typescript/src/agent/graph.ts
# showcase/packages/langgraph-typescript/src/app/api/debug/route.ts
# showcase/packages/langgraph-typescript/src/app/demos/agentic-chat/page.tsx
# showcase/packages/langgraph-typescript/src/app/demos/tool-rendering/page.tsx
# showcase/packages/langgraph-typescript/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/langgraph-typescript/tests/e2e/hitl.spec.ts
# showcase/packages/langroid/src/agents/agent.py
# showcase/packages/langroid/src/app/demos/agentic-chat/page.tsx
# showcase/packages/langroid/src/app/demos/hitl/page.tsx
# showcase/packages/langroid/src/app/demos/tool-rendering/page.tsx
# showcase/packages/llamaindex/manifest.yaml
# showcase/packages/llamaindex/src/agents/agent.py
# showcase/packages/llamaindex/src/app/demos/agentic-chat/page.tsx
# showcase/packages/llamaindex/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/llamaindex/src/app/demos/hitl/page.tsx
# showcase/packages/llamaindex/src/app/demos/tool-rendering/page.tsx
# showcase/packages/mastra/.gitignore
# showcase/packages/mastra/package.json
# showcase/packages/mastra/src/app/demos/agentic-chat/page.tsx
# showcase/packages/mastra/src/app/demos/tool-rendering/page.tsx
# showcase/packages/mastra/src/mastra/agents/index.ts
# showcase/packages/mastra/src/mastra/tools/index.ts
# showcase/packages/mastra/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/mastra/tests/e2e/hitl.spec.ts
# showcase/packages/ms-agent-dotnet/agent/Program.cs
# showcase/packages/ms-agent-dotnet/manifest.yaml
# showcase/packages/ms-agent-dotnet/src/app/api/debug/route.ts
# showcase/packages/ms-agent-dotnet/src/app/demos/agentic-chat/page.tsx
# showcase/packages/ms-agent-dotnet/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/ms-agent-dotnet/src/app/demos/hitl/page.tsx
# showcase/packages/ms-agent-dotnet/src/app/demos/tool-rendering/page.tsx
# showcase/packages/ms-agent-dotnet/tests/e2e/hitl.spec.ts
# showcase/packages/ms-agent-dotnet/tsconfig.json
# showcase/packages/ms-agent-python/src/agents/agent.py
# showcase/packages/ms-agent-python/src/app/demos/agentic-chat/page.tsx
# showcase/packages/ms-agent-python/src/app/demos/hitl/page.tsx
# showcase/packages/ms-agent-python/src/app/demos/tool-rendering/page.tsx
# showcase/packages/pydantic-ai/manifest.yaml
# showcase/packages/pydantic-ai/src/agents/agent.py
# showcase/packages/pydantic-ai/src/app/demos/agentic-chat/page.tsx
# showcase/packages/pydantic-ai/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/pydantic-ai/src/app/demos/hitl/page.tsx
# showcase/packages/spring-ai/manifest.yaml
# showcase/packages/spring-ai/src/app/api/debug/route.ts
# showcase/packages/spring-ai/src/app/demos/agentic-chat/page.tsx
# showcase/packages/spring-ai/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/spring-ai/src/app/demos/hitl/page.tsx
# showcase/packages/spring-ai/src/app/demos/tool-rendering/page.tsx
# showcase/packages/spring-ai/src/main/java/com/copilotkit/showcase/springai/AgentConfig.java
# showcase/packages/spring-ai/src/main/java/com/copilotkit/showcase/springai/tools/WeatherTool.java
# showcase/packages/spring-ai/tests/e2e/gen-ui-tool-based.spec.ts
# showcase/packages/spring-ai/tests/e2e/hitl.spec.ts
# showcase/packages/spring-ai/tsconfig.json
# showcase/packages/strands/manifest.yaml
# showcase/packages/strands/src/agents/agent.py
# showcase/packages/strands/src/app/demos/agentic-chat/page.tsx
# showcase/packages/strands/src/app/demos/gen-ui-tool-based/page.tsx
# showcase/packages/strands/src/app/demos/hitl/page.tsx
# showcase/packages/strands/src/app/demos/tool-rendering/page.tsx
# showcase/shell/src/data/registry.json
2026-04-13 19:57:58 -07:00
Jordan Ritter
2accac1d07
feat: add shared showcase packages with tools, components, and test coverage
...
- @copilotkit/showcase-shared: hooks, components, A2UI catalog, SalesDashboard
- Shared Python tools: 7 impls + 61 pytest tests (unit + parity + equivalence + wrappers)
- Shared TypeScript tools: equivalents + 52 vitest tests (incl generateA2uiImpl)
- React component tests: 68 tests (7 suites)
- Aimock: 18 deterministic demo fixtures
# Conflicts:
# showcase/shared/frontend/src/components/__tests__/bar-chart.test.tsx
# showcase/shared/frontend/src/components/__tests__/meeting-time-picker.test.tsx
# showcase/shared/frontend/src/components/__tests__/pie-chart.test.tsx
# showcase/shared/frontend/src/components/__tests__/sales-dashboard/todo-card.test.tsx
# showcase/shared/frontend/src/components/__tests__/sales-dashboard/todo-list.test.tsx
# showcase/shared/frontend/src/components/__tests__/tool-reasoning.test.tsx
# showcase/shared/frontend/tsconfig.json
# showcase/shared/manifest.schema.json
# showcase/shared/typescript/tools/__tests__/get-weather.test.ts
# showcase/shared/typescript/tools/__tests__/schedule-meeting.test.ts
# showcase/shared/typescript/tools/__tests__/search-flights.test.ts
# showcase/shared/typescript/tools/index.ts
# showcase/shared/typescript/tools/sales-todos.ts
2026-04-13 19:57:45 -07:00
github-actions[bot]
88763b348c
style: auto-fix formatting
2026-04-14 00:41:48 +00:00
Jordan Ritter
e233d08f40
feat: upgrade all 17 showcase packages to full feature parity
...
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.
2026-04-13 17:38:55 -07:00
copilotkit-devops-bot[bot]
c11816f259
chore: auto-sync docs from main (2026-04-14)
2026-04-14 00:10:21 +00:00
github-actions[bot]
cd9bd28d3c
chore: auto-sync docs from main (2026-04-12)
2026-04-12 20:53:03 +00:00
Jordan Ritter
faf8fe9925
chore: sync docs from main (model name fixes from #3666 , new pages)
2026-04-09 14:58:31 -07:00
Jordan Ritter
1294bd86f3
fix: reset docs sync marker to valid main commit (pre-3666)
2026-04-09 14:55:36 -07:00
Jordan Ritter
204dd29a97
fix: standardize health checks on /health port 8000
2026-04-08 21:22:35 -07:00
Jordan Ritter
6d05499ecd
feat: add automated docs sync from main with transform pipeline
2026-04-08 19:59:31 -07:00
Jordan Ritter
6f679bd092
feat: deploy Claude SDK, Langroid, and Spring AI integrations
2026-04-08 19:59:30 -07:00
Jordan Ritter
31f046d0ac
feat: add SEO redirect infrastructure with PostHog tracking
2026-04-08 19:59:30 -07:00
Jordan Ritter
2c543adc7a
feat: add mobile responsive design with hamburger nav and dropdown filter
2026-04-08 19:59:30 -07:00
Jordan Ritter
101a783c0c
fix: replace TODO placeholders and fix markdown rendering in demo content
2026-04-08 19:59:30 -07:00
Jordan Ritter
759ffeb29a
feat: add animated preview GIFs with per-demo capture automation
2026-04-08 19:59:30 -07:00
Jordan Ritter
7238241127
feat: add integration explorer with guided flow, feature catalog, and partner ordering
2026-04-08 19:59:29 -07:00
Jordan Ritter
f1b197b580
feat: add docs system with MDX rendering, hierarchical nav, inline demos, and content cleanup
2026-04-08 19:59:29 -07:00
Jordan Ritter
479e62cb7f
feat: add unified showcase platform with CI, Docker starters, and 13 deployed integrations
2026-04-08 19:59:29 -07:00