Files
cline/apps/examples
Saoud Rizwan 40ebd09dfa desktop: native-feel polish, render-path performance, and transition fixes (#13028)
* desktop: native-feel polish and render-path performance fixes

- Suppress the WebView browser context menu on app chrome (keep it for
  editable fields and active text selections)
- Make UI chrome unselectable app-wide; opt chat messages, markdown,
  code, diffs, and error banners back into text selection
- Contain overscroll so inner scrollers don't rubber-band the window
- Lazy-load Settings/Sessions/Onboarding/Diff views out of the entry chunk
- Memoize ChatInputBar and AgentHeader; stabilize their props in the chat
  pane so stream flushes only re-render the affected message bubble
- Stop refocusing the composer textarea on every keystroke (caret flicker)
- Cache slash commands across menu opens (stale-while-revalidate)
- Avoid rebuilding reversed message arrays and ask-question JSX per render
- Drop core info/debug console logging on the streaming hot path behind a
  cline:debug-logs opt-in; remove leftover [webview:delete] debug logs
- SearchCombobox (provider/model picker): Escape closes and restores focus
- Remove unused @vercel/analytics, recharts, embla-carousel deps and the
  unused chart/carousel UI components

* desktop: surface failed-turn errors instead of leaving the chat blank

On a failed run the runtime reports its error string in result.text.
The webview rendered that as an assistant bubble, which the canonical
history rehydration then wiped (the failed turn is never persisted),
so provider errors like a retired model id left the user staring at a
silently empty chat. Route failed-turn text to a persistent error-role
message added after rehydration instead.

* desktop: fade the welcome/conversation swap instead of hard-cutting

Sending the first message replaced the hero layout with the message
grid in a single commit, which read as a white flash. A 180ms enter
animation now plays when either side becomes visible; disabled under
prefers-reduced-motion.

* desktop: render new-chat panes instantly from the last catalog load

Clicking + remounts ChatThreadPane, which refused to render until the
provider catalog (a large fetch) and workspace list resolved again —
about a second of blank pane plus boot spinner on every new chat.
Seed remounts from a module-level snapshot of the last successful
load; the mount effect still refreshes both in the background.

* desktop: invalidate the provider-catalog snapshot with the cache

Seeding remounted chat panes from the last catalog load left a window
where a pane created right after a credential change could act on the
old keys. The snapshot now lives in the catalog module and is dropped
by invalidateProviderCatalogCache(), so credential edits force the
next remount to wait for fresh data.
2026-08-07 16:18:47 -07:00
..
2026-06-03 01:49:57 +02:00

Cline SDK Examples

Learn how to build with the Cline SDK through working examples, ordered from simple to complex.

SDK Skill

If you use a coding agent (Claude Code, Codex, Cline, etc.), install the Cline SDK skill to give your agent context on the SDK's APIs and best practices to help you build with the Cline SDK.

npx skills add cline/sdk-skill

Prompt it to scaffold agents, create custom tools, wire up plugins, configure providers, and more.

Getting started

All examples live in this directory. Each is a standalone project with its own package.json and README. To run any example:

cd apps/examples/<example-name>
bun install
bun run build:sdk
export CLINE_API_KEY="cline_..."
bun dev

Requires Node.js 22+.

Examples

Beginner

Example Description Concepts
quickstart Send one prompt, stream the response. ~15 lines of code. Agent, subscribe, run()
cli-agent Interactive terminal chat with a shell tool. createTool, multi-turn run()/continue(), streaming
cline-core-cli-agent Interactive terminal chat powered by ClineCore. ClineCore.create(), cline.start(), cline.send(), built-in tools, streaming

Intermediate

Example Description Concepts
code-review-bot AI code reviewer that reads git diffs and produces structured comments. Multiple tools, completesRun lifecycle, systemPrompt, zod schemas
multi-agent Web app that fans out to three specialist agents in parallel, streams results via SSE, then synthesizes a unified answer. Concurrent agents, Promise.all, per-agent subscribe(), SSE streaming, agent composition

Advanced

Example Description Concepts
desktop-app Full Tauri + Next.js desktop app for running and inspecting chat sessions. Sidecar runtime, websocket transport, session persistence
menubar macOS menu bar app with Tauri. Native app integration, compact UI
vscode VS Code extension with chat panel. Extension API, webview, workspace context

SDK packages

When building your own app, install the public SDK package:

npm add @cline/sdk

@cline/sdk re-exports everything from @cline/core. You only need @cline/agents or @cline/llms if you want lower-level control over the agent runtime or model gateway directly.

Learn more