Conversation
Three related rendering bugs are addressed in `TurnView` and the `TurnCoordinator`: 1. **Unclosed structured fences.** A conversation ending on a `ChatResponse::Structured` would print an opening ` ```json ` with no matching close. `flush()` only drained the chat sub-renderer; the structured renderer was left open. Content boundaries (`begin_turn`, `render_user_request`, `render_chat_response`, `enter_tool_call`, `reconfigure`) now each call `structured.flush()` before proceeding, and the top-level `flush()` (formerly `flush_all()`) closes both renderers. The old `flush()` (chat-only) is removed; `flush_all()` is renamed to `flush()`. 2. **Missing assistant header after Continue-before-first-chunk.** `reset_for_continuation` unconditionally set `assistant_header_rendered = true`, so if the user interrupted before any chunk arrived the flag was forced on and the resumed output had no `── jp …` boundary. The flag is now left as-is; if no header had been emitted yet it stays `false` and the next assistant event renders one normally. 3. **Missing user header on Reply interrupt (live vs replay gap).** When the user replied mid-stream, the new `ChatRequest` was pushed to the conversation but never rendered in live mode, so the terminal showed no `── alice …` boundary. `coordinator.rs` now calls `view.render_user_request()` before pushing the event, matching what replay emits. Signed-off-by: Jean Mertz <git@jeanmertz.com>
When `build_execution_plan` encountered a `ToolCallRequest` with no matching pending entry, it pushed the request into `orphaned` as a bare `ToolCallRequest`. The caller in `turn_loop` then synthesized an error response and assigned it an index of `approved.len() + pre_resolved.len()` — effectively appending it at the end regardless of where the request appeared in the stream. Because `commit_tool_responses` sorts responses by index before persisting them, this caused any orphaned response to land after all non-orphaned responses, breaking document order in the stored conversation. The fix threads the document-order index through the orphaned path: `orphaned` is now `Vec<(usize, ToolCallRequest)>` and `build_execution_plan` populates the index from the same loop counter used for `PlanItem`. The `turn_loop` destructs the pair and uses the carried index directly when building the `pre_resolved` entry, removing the incorrect append-to-end calculation entirely. Also removes two stale references to internal Bear notes from code comments. Signed-off-by: Jean Mertz <git@jeanmertz.com>
The Bear note attachment handler previously required the full
`bear://get/NOTE_ID` URI form. This adds support for the opaque
shorthand `bear:NOTE_ID`, where no authority (`//`) is present and the
note ID is taken directly from the path.
This mirrors the shorthand pattern already used by the GitHub attachment
handler, and makes it quicker to attach a note when you have the ID at
hand:
jp attachment add "bear:2356A6D7-49D7-4818-8E37-3E02D1B95146"
Signed-off-by: Jean Mertz <git@jeanmertz.com>
Signed-off-by: Jean Mertz <git@jeanmertz.com>
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.
The Bear note attachment handler previously required the full
bear://get/NOTE_IDURI form. This adds support for the opaque shorthandbear:NOTE_ID, where no authority (//) is present and the note ID is taken directly from the path.This mirrors the shorthand pattern already used by the GitHub attachment handler, and makes it quicker to attach a note when you have the ID at hand: