Skip to content

Improve queued message rendering for long prompts and multi-line content #185

Closed

Description

@Juliusolsson05

Problem

Queued messages currently render too naively. When a queued prompt/message is long, multi-line, contains code, or includes pasted content, the UI can break visually: oversized rows, layout overflow, awkward wrapping, feed/composer crowding, or controls becoming hard to use.

Queued messages are not normal feed rows and should not be rendered as if they were tiny one-line labels. They need a dedicated, resilient presentation that works for real prompts, including long pasted instructions and code blocks.

Current Behavior

Queued messages appear in the queue strip between the feed and composer, but the rendering is not robust for long content.

Known failure modes to verify:

  • long single-line text overflows horizontally
  • multi-line prompts make the queue strip too tall
  • code/pasted content is hard to scan or breaks spacing
  • multiple queued messages crowd the composer
  • controls/actions may become misaligned or pushed off-screen
  • queued content can visually compete with the active feed

Desired Behavior

Queued messages should be visible, readable, and bounded.

At minimum:

  • Long queued messages wrap or truncate predictably.
  • Queue UI has a max height and remains scrollable/collapsible when needed.
  • Each queued message has stable controls for cancel/remove/edit/send-now if those actions exist.
  • Multi-line content preserves enough structure to be understandable without taking over the whole pane.
  • Very long messages can be expanded into a larger preview/details view.
  • The composer remains usable even with long queued messages present.
  • Rendering works on narrow panes and small windows.

Important Constraint

Queued messages are intentionally not committed feed rows.

They should remain separate from runtime.entries and should render through QueueStrip or a dedicated queued-message surface. Do not solve this by inserting phantom future user rows into the transcript feed, because those can later duplicate when real transcript entries arrive.

Suggested Shape

  1. Audit current queue rendering

    • src/renderer/src/workspace/tile-tree/TileLeaf/QueueStrip.tsx
    • queued message state in useIpcSubscriptions.ts
    • any queue actions/commands tied to queued prompts
  2. Add resilient queued-message components

    • bounded container
    • line clamp / preview state
    • expand/collapse affordance
    • stable action buttons
    • horizontal overflow prevention
    • good handling for code-like text
  3. Add responsive behavior

    • narrow pane layout
    • many queued messages
    • very long single token/path/URL
    • multi-line pasted prompts
  4. Add tests or visual fixtures

    • short queued message
    • very long single-line queued message
    • multi-line queued message
    • code block / pasted content
    • several queued messages at once
    • narrow pane width

Acceptance Criteria

  • Long queued messages do not overflow their container.
  • Multiple queued messages do not make the composer unusable.
  • Queue UI remains bounded and scrollable/collapsible as needed.
  • Multi-line queued content is readable in preview and inspectable in expanded form.
  • Queue actions remain aligned and usable for long content.
  • Queued messages stay separate from committed feed entries.
  • Tests or focused visual validation cover long, multi-line, and multiple queued-message cases.
  • Thick WHY comments document why queued messages are rendered outside the transcript feed and why the UI must be bounded.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions