Try It

Four sandboxes for the four ways dotdotduck talks to your users. Edit any input, hold Space, select text, long-press an element — everything is wired live.

LLM not configured

Set VITE_DDDK_PROXY_URL in dddk-frontend/.env, then rebuild + redeploy.

01

Command palette

Press the shortcut. Type `nav:`, `ask ai:`, `/theme`, or `/language` — every prefix is host-registered. Empty state shows the available tips.

Ctrl + K
02

Inline AI — select text inside a textbox

The textarea below has some prose. Highlight any phrase: a small menu floats next to your cursor with translate / improve / fix grammar / make shorter / longer.

03

Voice — hold Space

Click into the field below, hold Space, talk. The subtitle bar shows "聆聽中…" while you hold, then "處理中…" on release. Transcript lands in the field via the voice-cleanup LLM role.

Outside any input field, hold-Space sends the transcript to the webagent instead.

Voice uses the browser Web Speech API (Google backend) — same-origin repeated use can hit rate-limits and Edge sometimes flakes. Production hosts: wire an ASR with an SLA (Whisper / Deepgram / AssemblyAI) via the one-line `transcribe(audio)` callback.

04

Dwell — long-press to select a whole block

Long-press (~1s) the card below. The whole block gets framed and becomes your "selection". The next time you open the palette or talk to the agent, this block rides along as context. Press Esc or click elsewhere to release.

Long-press me ↓

After you long-press, open the palette — the chip-bar will show this card as the current selection.