New Playground for model experiments. Dual gateway support. Repo migrated to Turborepo.
Dynamic metadata and OG images for chat pages.
Playground to create and compare model runs.
Dual gateway support: LLM Gateway and Vercel AI Gateway.
Monorepo migration to Turborepo for faster builds and shared tooling.
Removed unused webpack configuration in next.config.js
.
Updated build script in package.json
to include shadcn build.
Dynamic metadata for chat pages with OG and Twitter cards.
New API route for dynamic OG image generation.
ChatTitleSyncer
component to sync chat titles with cookies.
ChatTitlesCookieManager
utility for cookie management.
Local chat storage now syncs titles on create, update, delete.
History dialog and section ensure titles are consistently synced.
Layout and page refactor to use new metadata and OG image generation.
Playground to create and manage experiments for AI models.
API routes for creating playgrounds and fetching messages.
Playground
and PlaygroundColumn
UI components.
Sidebar and layout integration for playground management.
package.json
and bun.lock
updated for new deps.
Database schema extended for playground entities and messages.
Chat components refactored for playground interactions and UX.
Optional partsJson
field in message schema and DB to store full parts including reasoning and tool calls.
addMessage
mutation handles partsJson
.
Message provider serializes and deserializes partsJson
.
Playground config adds maximum column controls and UI wiring.
Components refactored for the new data path and UX.
Support for Vercel AI Gateway alongside LLM Gateway in the model selector.
Playground schema and components accept selected gateway source.
Chat input and message handling include gateway specific options.
API routes and local storage updated for user keys and settings.
Max playground columns increased from 10 to 30.
Optional gateway
field in message and playground schemas: llm-gateway
or vercel-ai-gateway
.
addMessage
and addPlaygroundMessage
handle the gateway parameter.
MessagesProvider
and CacheProvider
include gateway in state.
Components sync gateway settings from local storage for flexibility.
Deprecated message-list
removed.
Both gateway API keys supported in ChatInput
, ModelSelector
, and PlaygroundColumn
.
State tracks presence of keys and updates UI hints and disabled states.
Key loading reacts to changes for better sync across components.
apps/www
Root workspaces and turbo.json
for build
, check
, check:unsafe
, check-types
, dev
.
App moved to apps/www
including src
, public
, convex
, and Next or PostCSS or Basehub configs.
Added packages/tsconfig/base.json
and made apps/www/tsconfig.json
extend it.
Simplified apps/www/tsconfig.json
and added @/convex/*
path alias.
Fixed Framer Motion Transition
typing in file-list.tsx
.
Added root dev:all
and upgraded turbo
to ^2.5.5
.
Added SCRIPTS.md
with turbo usage, filter semantics, and dev commands.
Updated .gitignore
for monorepo outputs and .turbo
.
Updated biome.jsonc
ignores for new paths.
Note: build env vars now live under apps/www/.env*
.
Overhauled legacy theme management with a Tweakcn‑based system, updated the settings dialog, added react‑tweet and YouTube MDX components, switched the Next.js build to Turbopack, refreshed the sidebar/chat UI with new theme variables and shadcn layout, and applied consistent global code formatting (no functional changes).
Swapped out legacy theme files for a Tweakcn‑based system (includes flash‑prevent script and theme utilities)
Updated settings dialog to import/reset Tweakcn themes
Added react-tweet
and YouTube MDX components for richer docs
Switched Next.js build to Turbopack and installed react-tweet
Refreshed sidebar, chat UI, and global.css
to use new theme variables and shadcn layout
Applied consistent formatting and naming across files (imports, whitespace, objects/arrays)
Introduced BaseHub auto‑generated types, refactored sidebar/chat components, and removed unused controls
Major refactoring with dependency cleanup, modular sidebar, and shift towards experimental model testing platform
Removed hCaptcha, PostHog, settings and boards routes to slim down to an experimental playground
Built a new modular sidebar under src/components/app-sidebar
Simplified BYOK API‑key management (local or Convex) and added dedicated key/settings components
Updated README
and .env.example
for the pared‑down setup
Introduced Fumadocs for structured changelog tracking
Refactored chat UI: removed unused modules (message‑versions
, regenerate‑dropdown
), cleaned up sidebar and history
Focusing now on a fast, non‑logged‑in user flow and an AI model testing platform vision
Acknowledgments
Thanks to @theo, @Ibelick, @r_marked, @t3dotchat for inspiration and guidance.
This version represents a significant shift in the project's direction, moving from a general-purpose chat application to a specialized experimental platform for AI model testing and comparison.
ChaiChat: A modern AI-powered chat platform for evaluating conversational performance across multiple LLMs
ChaiChat is a Next.js 15/T3‑stack chat platform for real‑time AI streaming (GPT‑4o, Gemini Flash, Claude) with instant sync, offline support, and anonymous, rate‑limited access.
Stream AI responses in real time with resumable connections
Instant sync and offline caching via Convex and Dexie
Anonymous access protected by hCaptcha rate limits
Media uploads, shareable links, dark and light themes, keyboard shortcuts
Built with strict TypeScript, Tailwind CSS, and Framer Motion
Edge‑optimized on Vercel with secure API‑key management and error boundaries
Introducing playground in chaichat! I really like experimenting with multiple models at once. So now instead of just having one canvas to experiment you can now type in multiple columns ( in sync!) and get answers at once from all models! This layout is inspired by @aisdk