Repository navigation
Record verdicts, promote lessons and choose round lessons in the TUI (#174) - #253
Merged
Merged
Conversation
…174) The Rooms tab gains the human review actions the CLI already has: - j records accepted/rejected on an applied room (RoomCoordinator.judge, surface="tui"), fenced on the patch digest the dialog showed. - p promotes a lesson from a judged room; promote_lesson gains expected_judgment_id, checked on the same outcome read as the provenance, so a verdict changed while the dialog was open is never promoted. - The round dialog lists the project's approved lessons with checkboxes, recomputes select_lessons(skip=unchecked) live, refuses (never drops) when round_lessons_fit fails under round_prompt's fallback rule, and the worker gets exactly the shown pairs. The history note moves into the dialog, per lineage, before confirmation. Every Rooms dialog callback acts on the room id and store root captured when it opened (the round dialog used the ambient selection). The room pane shows the outcome; the evidence snapshot also compares the judgment count, degrading locally. _refresh_board keeps every read inside its guard. Checkbox labels from stored text go through plain(), and markup_sinks flags any other non-literal label. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A round submission catches the room store's error boundary, so a room row that turned unreadable after the dialog opened is reported, not raised out of the callback. - An evidence snapshot whose build could not count verdicts says it cannot tell whether a verdict changed, instead of silently skipping the check. - The round dialog says when the board is off; the verdict dialog shows the current outcome block (who, when, why) it would supersede. - An 80x24 test toggles a lesson and submits with the mouse. - Docs: only the round, verdict and promote dialogs capture the room and store. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Checkbox label never wraps, so a lesson longer than the dialog was cut off at its edge while every word of it was sent to every member (PR review: a 401-character lesson made a 421-column checkbox in a 66-column body). The checkbox label is now just the lesson id; the full text is a wrapping PlainStatic under it. The lessons heading was a 108-column PlainLabel that widened the body too; it is a PlainStatic now. At 80x24 the body no longer scrolls sideways and a 410-character lesson wraps to seven lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The round prompt, verdict rationale and lesson editors kept TextArea's default 1fr height inside a scrolling dialog body, where it collapses to its border: at 80x24 all three had a content height of 0, so typing changed the value without showing it (PR review). They now have fixed heights (8 rows for the prompt, 6 for the other two), and a test types into each at 80x24 and 120x40 and checks the words are drawn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 5, 2026
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.
Follow-up 2 for #174 (after #245 and #250): the TUI Rooms tab gets the three human review actions the CLI already has. #174 stays open for goal-scoped lessons in rooms.
What changes
j: record a verdict (room judge)surface="tui"and fenced on the patch digest the dialog showed. Repeating the current verdict changes nothing.p: promote a lesson (room promote)active_decisions(project_id=)also returns unbound decisions, which the board refuses to let a project lesson replace, so those are filtered out. A target with a different scope is refused inside the dialog.RoomCoordinator.promote_lessongainsexpected_judgment_id, checked on the same outcome read the provenance comes from. If the verdict changes while the dialog is open (for example from another terminal), the promotion is refused rather than recorded under a verdict the person did not see. The CLI is unchanged.x: lessons in TUI roundsselect_lessons(skip=unchecked). Unchecking one of the newest 20 lets an over-budget older lesson in, exactly as--skip-lessondoes.round_prompt's fallback rule, so a whitespace-only prompt is measured as the creation prompt it will become.(id, text)pairs over the existing--lessons-fdpath, with no second board read.Other changes
_refresh_boardreadactive_decisions()and the selected item outside itsBoardErrorguard, so a failing decisions table killed the app on a Board-tab poll.Checkboxparses astrlabel as markup. Lesson labels go throughplain(...), andtest_tui_render.markup_sinksnow flags any non-literalCheckboxlabel.Design and review
Checkboxmarkup;Tests
tests/test_tui_room_review.py(32 tests) on a realRoomCoordinatorand a realBoard:expected_judgment_idandjudgment_count.test_tui.py: round-funnel tests use the captured-room signature, and the evidence fakes return a judgment count.test_tui_render.py: theCheckboxguard cases.docs/assets/tui/09–12re-rendered: the Rooms action bar gainedj verdict | p promoteand wraps to a second line at 120 columns, as the bar is designed to.ruff check .passes.Docs
CHANGELOG (Added + Fixed),
docs/user-guide.md+.ko.md(TUI Rooms keys, lessons in TUI rounds),docs/architecture/tui.md, CLAUDE.md.🤖 Generated with Claude Code