Skip to content

Add surface-agnostic conversation list policy#13669

Open
harryalbert wants to merge 3 commits into
harry/code-1821-multiple-menu-infrastructurefrom
harry/code-1821-conversation-list-policy
Open

Add surface-agnostic conversation list policy#13669
harryalbert wants to merge 3 commits into
harry/code-1821-multiple-menu-infrastructurefrom
harry/code-1821-conversation-list-policy

Conversation

@harryalbert

@harryalbert harryalbert commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Description

Before this PR, AgentConversationsModel produced normalized conversation entries, but the inline conversation menu separately derived selection, open-pane state, and availability from GUI-specific models and workspace actions. That made list eligibility relative to whichever frontend happened to consume the entry: sharing aggregation meant either duplicating those decisions or importing GUI navigation semantics. This PR makes classification an explicit frontend policy owned by ConversationSelection instead. AgentConversationEntry remains frontend-neutral, GUI and TUI selections classify each entry as selected, open elsewhere, available, or unavailable, and the existing GUI inline menu consumes that state while still re-resolving stable identity when an item is accepted. Existing GUI filtering, search, ordering, navigation, and open-elsewhere presentation remain unchanged.

Review guide

Read

  • specs/frontend-neutral-conversation-list-policy/TECH.md — motivation, ownership boundary, and migration shape.
  • app/src/ai/agent_conversations_model.rs — the shared policy contract and list states.
  • app/src/ai/blocklist/conversation_selection.rs — policy ownership on the per-surface selection abstraction.
  • app/src/ai/blocklist/agent_view/conversation_selection.rs — GUI classification precedence and focused coverage.
  • app/src/terminal/input/conversations/data_source.rs — migration of the existing GUI menu to direct policy classification.
  • crates/warp_tui/src/conversation_selection.rs — the headless frontend’s classification rules.

can skim or skip the rest

Testing

  • I have manually tested my changes locally with ./script/run
    Still no behavior changes quite yet

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Co-Authored-By: Oz oz-agent@warp.dev

@cla-bot cla-bot Bot added the cla-signed label Jul 13, 2026

harryalbert commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@harryalbert harryalbert changed the base branch from harry/code-1821-multiple-menu-infrastructure to graphite-base/13669 July 13, 2026 20:56
@harryalbert harryalbert force-pushed the harry/code-1821-conversation-list-policy branch from 80c8d46 to 2588808 Compare July 13, 2026 21:11
@harryalbert harryalbert force-pushed the graphite-base/13669 branch from 9c73d34 to 067fd30 Compare July 13, 2026 21:11
@harryalbert harryalbert changed the base branch from graphite-base/13669 to harry/code-1821-multiple-menu-infrastructure July 13, 2026 21:12
@harryalbert harryalbert marked this pull request as ready for review July 13, 2026 21:23
@oz-for-oss

oz-for-oss Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@harryalbert

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@harryalbert harryalbert changed the title Add frontend-neutral conversation list policy Add surface-agnostic conversation list policy Jul 13, 2026

@oz-for-oss oz-for-oss Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR introduces a frontend-neutral conversation-list policy, wires the GUI inline conversation menu through the per-surface selection policy, and adds TUI classification/export support.

Concerns

  • ⚠️ [IMPORTANT] This is a user-facing behavior change to the inline conversation menu/TUI conversation list, but the PR description does not include screenshots, a screen recording, terminal transcript, or TUI render output demonstrating the change end to end. Please attach visual or terminal evidence for the affected UI behavior.

Verdict

Found: 0 critical, 1 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@harryalbert harryalbert force-pushed the harry/code-1821-multiple-menu-infrastructure branch from 067fd30 to 053d02e Compare July 13, 2026 22:27
@harryalbert harryalbert force-pushed the harry/code-1821-conversation-list-policy branch from d55907a to 0f9eecd Compare July 13, 2026 22:27
@harryalbert harryalbert requested a review from moirahuang July 13, 2026 22:30
@moirahuang moirahuang mentioned this pull request Jul 14, 2026
13 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants