Coodeen
Features

Chat Panel

The primary interface — drive the agent and watch tool calls stream.

Overview

The chat panel occupies the left pane. It talks to the local opencode sidecar via session.prompt and renders events streamed from the sidecar's global event bus.

Composer

  • Multiline input with Enter to send.
  • Attach file references with the @-style file picker button — each reference carries a path and optional line range and is sent to the agent as context.
  • Attach element screenshots from the preview (see Screenshots).

The composer's status row shows the agent mode ("Agent"), the active model, and the project directory.

Streaming

The sidecar emits events (message.part.updated, tool call lifecycles, status changes) to /global/event. The Electron main process forwards them on the opencode:event IPC channel; a Zustand store in the renderer applies them so text, tool calls, and their outputs appear incrementally.

Tool Calls

Every tool invocation renders inline with its arguments and result. Opencode's built-in tools include read / write / edit, glob and grep, bash, plan, and todo tracking. Expand any call to inspect inputs and outputs.

Sessions

  • New session — session drawer (hamburger icon, top-left).
  • Switch — pick a session from the drawer; its project directory and preview URL are restored.
  • Delete — removes it from opencode's store.

New chats receive an auto-generated title based on the first prompt (first ~60 chars).

Model

Coodeen currently uses a fixed model per prompt — there's no model dropdown yet. The current model is shown in the composer's status row. Switching models requires editing the source (apps/desktop/src/renderer/components/chat/ChatPanel.tsx).