Skip to content

feat(dashboard): chat composer popovers — slash / @ / # mention pickers #81

@esengine

Description

@esengine

Why

Design §4 (lines 1713-1735) shows the chat composer with a floating popover above the input listing slash commands as the user types /. The TUI already has full slash + @-mention + #-memo semantics — the dashboard textarea has none of it.

Right now typing / in the dashboard sends the literal string verbatim. No completion, no preview of available commands. Same for @path (file inline) and #note (memory pin) which just go through as text.

Scope

Slash popover

  • Reuse SLASH_COMMANDS + suggestSlashCommands already in src/cli/ui/slash/commands.ts — surface them via a new GET /api/slash/commands?codeMode=true endpoint
  • Trigger when input starts with / and has no whitespace yet
  • ↑/↓ navigate, Tab insert, Enter run-and-submit
  • Show name + summary per row; group label as section header

@ mention popover (project files)

  • Trigger after @ with no whitespace following
  • New GET /api/files?prefix=<part> endpoint that walks cwd (cap to ~50 results, ignore .gitignore + binaries)
  • Tab insert path-relative-to-cwd; Enter keep editing (don't send)

# memo passthrough

  • Lower priority; just send-as-is. The TUI auto-routes #note to memory append. Server side already handles this when submitPrompt runs through TUI handleSubmit.

Layout

  • Popover positioned above the composer (position:absolute; bottom: calc(100% + 6px))
  • Width 380px, max-height 320px with scroll
  • Close on click-outside, Esc, or non-matching keystroke

Constraints

  • TUI side is already done — this is dashboard-only plumbing
  • Don't duplicate slash command definitions — fetch from server so additions auto-show
  • Keyboard-first: every popover action must work without the mouse

Metadata

Metadata

Assignees

No one assigned

    Labels

    dashboarddashboard / web companion (dashboard/**)enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions