You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Migrate the generated chat UI to cherry-styled-components' chat kit: the bespoke chat drawer, rainbow input, and hand-rolled focus-trap, scroll-lock, and dialog logic are replaced by ChatProvider/ChatPanel/ChatMessageList/ChatInput/ChatLauncher now that Cherry ships that surface. The template keeps only the transport concern - POST /api/rag and stream the SSE frames into the provider via onSend - while the kit owns panel state, the transcript, focus containment, inert siblings, Escape handling, and stick-to-bottom scrolling. ChatStyles.ts is gone, the header's hand-built chat button becomes Cherry's ChatLauncher, and search, navigation, and footer read chat-open state through useChat() instead of the old ChatContext contract
Open the chat with the keyboard actually following on iPads and iPhones: through the cherry-styled-components 0.2.14 bump, opening the panel (launcher click, Cmd/Ctrl+I, or handing a search query to the assistant) now commits the open synchronously and focuses the composer inside the triggering tap gesture. iOS Safari ignores focus() once the gesture has passed, so the previous deferred focus opened the panel with an unfocused input on touch devices while working everywhere else
Pin the header search button and the search modal's "Ask AI" button to the same 30px compact header-control tier as Cherry's ChatLauncher (box-sizing: border-box; height: 30px). Their heights previously fell out of font metrics and happened to agree on most platforms; now the header controls line up exactly regardless of how a platform renders text
Let a generated app opt into serving its dev server over a non-localhost hostname (a LAN IP, a Tailscale name, ...): Next 16 blocks dev resources - including the HMR socket Turbopack needs before it hydrates the page - for hosts it does not recognize, which leaves the site rendered but inert. A new optional ALLOWED_DEV_ORIGINS env var (comma-separated hostnames, documented in the generated .env.example) feeds Next's allowedDevOrigins only when non-empty, so DNS-rebinding protection stays on by default and production builds ignore it
Keep generated builds type-checking on Next 16.3: Next flipped experimental.useTypeScriptCli on by default, and that path requires a tsc binary, while generated apps alias typescript to @typescript/typescript6, whose only binary is tsc6 - so next build failed claiming TypeScript was not installed. The generated next.config.ts now sets experimental.useTypeScriptCli: false so type-checking keeps going through the TS6 compiler API the alias does ship
Update dependencies: generated apps move to cherry-styled-components ^0.2.14, next 16.3.0, @next/env/@next/eslint-plugin-next 16.3.0, posthog-js ^1.410.7, posthog-node ^5.47.8, @typescript-eslint/* ^8.66.0, globals ^17.9.0, and tsx ^4.23.5; the CLI itself moves to next ^16.3.0 and pnpm 11.20.0