feat: open the proposal a transcript line is about, not the room's latest
Tapping a signing line in the transcript opened whichever session the room was running, resolved by `liveSessionForChatRoom` -- the newest one not yet finished, or failing that the newest one at all. That is a guess, and it was a good one exactly as long as a room had one proposal to guess at. With a chapter and its translation open together, half the lines in the transcript led to the other proposal. The line now says which session it belongs to, so there is nothing left to guess: it carries `frostSigningSessionId` through to the route. A line written before that column opens the room's proposal list instead, which is the honest answer to a line that cannot say what it meant -- every proposal with its own state, and the reader picks -- rather than a guess dressed as an answer. That empties `FrostSigningRoute.sessionId` of its reason to be optional, so it is required, and `liveSessionForChatRoom` goes with it from the interface, the implementation and the no-op. `FrostSigningViewModel` loses its resolution step and the "This group is not signing anything right now" error underneath it -- which was never the right thing to say to somebody who had just tapped a line about a specific session. The transcript keeps doing the one job it is good at: showing a proposal as it happens, and saying whether it is still asking something of you. What it stops doing is standing in for a list of them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -426,6 +426,16 @@ what a line older than the column has to be read by, and is right for those
|
||||
rooms: nothing that predates batch proposals ran two sessions at once. A ceremony
|
||||
line still uses the clock always, since a room runs one ritual at a time.
|
||||
|
||||
The transcript answers one question about a proposal — is this still asking
|
||||
something of you — and answers it in the middle of everything else the room said.
|
||||
Two open proposals need a place that shows both, so `ProposalListScreen` lists a
|
||||
room's sessions newest first with the ones waiting on the reader gathered at the
|
||||
top, and the room's history under them. `FrostSigningRoute.sessionId` stopped
|
||||
being optional at the same time: it existed for transcript lines that could not
|
||||
say which session they meant, resolved to "the room's live session", and that
|
||||
guess is exactly what two proposals make wrong. A line too old to name its
|
||||
session opens the list instead.
|
||||
|
||||
---
|
||||
|
||||
## Phase 6 — the test that actually proves it
|
||||
|
||||
Reference in New Issue
Block a user