Repository navigation
fix(tui): keep a topicless room's app pane in that room - #178
Merged
Merged
Conversation
Opening a room's Todos/Notes pane when the room has only archived topics left the current conversation in the previous room, so Esc returned there. Give such a room a conversation with no topic instead; posting from it is refused with a notice. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QNDeh8M8jKfHhtWGJwkxTm
Vycari Review (shadow)Shadow round 2 on bd2ceff. This comment is non-gating and needs no response: it is collected to measure agreement with the current reviewer. The round's verdict is the Vycari Review (shadow) check run. Open: P0 0 · P1 0 · P2 0 · confirmed fixed 1 · withdrawn 0 Judge's notes The one open finding from the last round is fixed: the sidebar marker for a room with no open topic now points at that room's own row, and a test checks it. No new candidates survived review, so the change looks correct as far as this review can tell. No open findings this round. Confirmed fixed
|
A room opened with no topic (for its app pane) used `topic:None` as the sidebar's current key, so after Esc closed the pane no row was drawn as open. Key such a conversation to the room's row through one helper used by every place that selects or marks the open conversation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QNDeh8M8jKfHhtWGJwkxTm
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QNDeh8M8jKfHhtWGJwkxTm
Contributor
Author
|
Round 1 summary (Greptile 4/5 on 71e7aa4, from the PR description block):
Pre-flight (format, lint, ty, full pytest with coverage at 95.1% against a floor of 88) is green on bd2ceff. |
5 of 7 tasks
allenhutchison
added a commit
that referenced
this pull request
Oct 29, 2026
…less room's notes write to it With #173's todo keys on the same PaneScroll, space is two bindings that check_action keeps apart by pane. Pin that, and that a room opened with no topic (#178) still sends its note writes to that room. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QNDeh8M8jKfHhtWGJwkxTm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human overview
Opening Todos or Notes for a room whose topics are all archived left the current conversation in the previous room, so Esc went back there while the header and sidebar said the new room. Now such a room gets a conversation with no topic, so header, sidebar marker and Esc all agree on it. Closes #165
AI reviewer
_open_pane(src/pepper_cli/tui/app.py): when switching rooms it now always callsopen_conversation, withConversation(room_id, None)iftopics_by_recencyis empty. No archived topic is opened. The pane is still up during the switch, soopen_conversationhides it and marks nothing read behind it, as before.Conversationis safe:poller.fetch_topicalready returns an empty page fortopic_id is None;_note_viewed, the mark publisher and stream handling already guard ontopic_id is None;header_textalready falls back to the room name._close_paneis unchanged. Esc lands in that room's (empty) thread, showing "(no messages)" under the header "Room". I chose this over jumping to the Pepper DM so Esc matches the header and sidebar, per design §10 (a pane belongs to one room).on_composer_submittedrefuses a send whencurrent.topic_id is Nonewith a notice and keeps the draft text. Without it a send would target aNonetopic.tui-todo-actions-p2): only_open_paneand one branch inon_composer_submitted.test_a_room_with_only_archived_topics_opens_its_pane_in_that_room_and_esc_staysfails without the fix (current stays in room A) and passes with it.ruff format,ruff check,ty checkclean;uv run pytest --cov: 2657 passed, 2 skipped, coverage 95.1% (floor 88).Checklist (repo-specific)
uv run ruff format --checkanduv run ruff checkclean (no new lint ignores)uv run ty check src/pepper_cli/cleanuv run pytestpasses; coverage floor in.claude/maintainerd.jsonnot loweredSKILL.md: no command or output change, N/A🤖 Generated with Claude Code
https://claude.ai/code/session_01QNDeh8M8jKfHhtWGJwkxTm


Confidence Score: 5/5
The PR appears safe to merge; both previous findings are fixed.Summary
Keeps a topicless room's app pane and conversation in the same room.
Reviews (2) · Last reviewed commit: "test(tui): a refused topicless-room send..." · Reviewed by Greptile