transcript changes

This commit is contained in:
Ian Gulliver
2026-10-19 08:38:22 -07:00
parent 01486ea7fa
commit 5e42346301
4 changed files with 20 additions and 4 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
+11 -1
View File
@@ -1017,6 +1017,16 @@ struct RowView: View {
case .note(let note): case .note(let note):
NoteView(note: note, cancelVisible: row.id == model.builder.lastMergeAfterReview) NoteView(note: note, cancelVisible: row.id == model.builder.lastMergeAfterReview)
case .review(let note, let blocks):
VStack(alignment: .leading, spacing: 4) {
NoteView(note: note, cancelVisible: false)
MarkdownView(blocks: blocks, ctx: md)
.padding(.leading, 10)
.overlay(alignment: .leading) {
Rectangle().fill(Palette.border).frame(width: 1)
}
}
case .handoff: case .handoff:
DetailsBox(boxed: false) { DetailsBox(boxed: false) {
NoteView(note: row.summary ?? Note(parts: []), cancelVisible: false) NoteView(note: row.summary ?? Note(parts: []), cancelVisible: false)
@@ -1068,7 +1078,7 @@ private struct QuestionBubble: View {
.padding(.horizontal, 12) .padding(.horizontal, 12)
.padding(.vertical, 8) .padding(.vertical, 8)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
.background(open ? Palette.warnTint : Palette.surface, in: RoundedRectangle(cornerRadius: 10)) .background(open ? Palette.warnTint : Palette.warnFaint, in: RoundedRectangle(cornerRadius: 10))
.overlay(RoundedRectangle(cornerRadius: 10).stroke(hover ? Palette.accent : open ? Palette.warn.opacity(0.55) : Palette.border)) .overlay(RoundedRectangle(cornerRadius: 10).stroke(hover ? Palette.accent : open ? Palette.warn.opacity(0.55) : Palette.border))
.contentShape(Rectangle()) .contentShape(Rectangle())
.onTapGesture { .onTapGesture {
+1
View File
@@ -14,6 +14,7 @@ enum Palette {
static let dangerTint = dynamic(0xfdecea, 0x3a1f1d) static let dangerTint = dynamic(0xfdecea, 0x3a1f1d)
static let warn = dynamic(0x855600, 0xf2c66d) static let warn = dynamic(0x855600, 0xf2c66d)
static let warnTint = dynamic(0xfdf3dc, 0x352a14) static let warnTint = dynamic(0xfdf3dc, 0x352a14)
static let warnFaint = dynamic(0xfcf8ec, 0x221f19)
static let ok = dynamic(0x1a7f37, 0x7fd88f) static let ok = dynamic(0x1a7f37, 0x7fd88f)
static let okTint = dynamic(0xe5f4e9, 0x1b3322) static let okTint = dynamic(0xe5f4e9, 0x1b3322)
static let task0 = dynamic(0xa4273f, 0xfe9fa6) static let task0 = dynamic(0xa4273f, 0xfe9fa6)
+6 -1
View File
@@ -50,6 +50,7 @@ enum RowKind {
case orphan(String) case orphan(String)
case turnEnd(error: String?) case turnEnd(error: String?)
case note(Note) case note(Note)
case review(note: Note, md: [MDBlock])
case handoff case handoff
case snapshot(Snapshot) case snapshot(Snapshot)
case question case question
@@ -703,7 +704,11 @@ final class TranscriptBuilder {
case "review.finished": case "review.finished":
let r = try! decodePayload(ev.payload, as: Review.self) let r = try! decodePayload(ev.payload, as: Review.self)
let outcome = r.state == .failed ? "failed: \(r.error)" : r.state == .skipped ? "skipped: no changes" : reviewCounts(r) let outcome = r.state == .failed ? "failed: \(r.error)" : r.state == .skipped ? "skipped: no changes" : reviewCounts(r)
return note([.text("review of snapshot #\(r.snapshotN): \(outcome)")], r.state == .failed ? .error : .plain) let parts: [NotePart] = [.text("review of snapshot #\(r.snapshotN): \(outcome)")]
if findings(r).isEmpty {
return note(parts, r.state == .failed ? .error : .plain)
}
return Row(.review(note: Note(parts: parts, when: when), md: parseMarkdown(str(r.result?.value ?? [:], "summary") ?? "")), taskId: taskId)
case "task.merge_queued": case "task.merge_queued":
return note([.text("\(ev.actor) asked to merge; held until the merge in progress in this project is done")]) return note([.text("\(ev.actor) asked to merge; held until the merge in progress in this project is done")])