ComposerStore in ClawdmeterShared.
Slash-command palette
Type/ to open the command palette.
For Claude sessions, the palette walks:
~/.claude/skills/<name>/SKILL.md— globally installed Claude Code skills.<repo>/.claude/skills/<name>/SKILL.md— project-local skills.
SkillCatalog runs this scan (up to 127 files) and parses YAML frontmatter on a background thread with a 30-second TTL and directory-mtime invalidation. The palette opens immediately; the scan never blocks the main thread.
For Codex sessions, the palette shows built-in commands: /clear, /compact, /model, /help, /quit.
@ mentions
Type@ to open the mention picker. It lists:
- Open sessions in the daemon registry.
- Agent-cited files in the current session (from
SourceEntry). - Recent JSONL files across sessions.
Attachments
Attach files via drag-drop from Finder, the paperclip button (file picker), or paste an image from the clipboard (saved as PNG). Attachments are staged before the prompt is sent:| Session type | Staging path |
|---|---|
| Claude | ~/Library/Application Support/Clawdmeter/attachments/<sessionId>/ |
| Codex (worktree) | <worktree>/.clawdmeter-attachments/ |
Voice dictation
Ctrl+M toggles voice dictation. Continuum usesSFSpeechRecognizer + AVAudioEngine (on-device). Partial transcripts append live to the composer as you speak.
Send and Stop
The Send button (Cmd+Return) transforms into a Stop button while a turn is in progress:
- Claude: sends
ESCto the direct PTY. - Other providers: triggers harness cancellation or HTTP cancel.
Live cost ticker
The composer footer shows a running estimate:~$X • Y K tokens. This reads from the current WireChatSnapshot × Pricing.shared.cost(for:tokens:).
For Claude sessions, a soft-red ⚠︎ weekly cap N% badge appears when weekly consumption reaches ≥95%. Codex sessions do not show a cap badge (Anthropic’s weekly cap does not map to Codex’s pricing model).
Error handling
ComposerStore uses locked semantics: on a send error, text is preserved and attachments remain staged. The error surfaces inline. You can edit and retry without re-attaching files.