Hide duplicate snapshot lines and the turn-end line before a snapshot

This commit is contained in:
Ian Gulliver
2026-10-20 21:08:00 -07:00
parent 53f20e40d3
commit 1d3c4576ff
3 changed files with 27 additions and 17 deletions
+14 -14
View File
@@ -1133,7 +1133,14 @@ struct RowView: View {
var body: some View {
if !row.hidden {
content
if let seq = row.summarySeq {
content
.onScrollVisibilityChange(threshold: 0.01) { visible in
model.summaryVisible(seq, visible)
}
} else {
content
}
}
}
@@ -1267,19 +1274,12 @@ struct RowView: View {
PreBox(text: text)
case .turnEnd(let error):
Group {
if let error {
Text(error)
.font(Fonts.font(11))
.foregroundStyle(Palette.danger)
} else {
Rectangle().fill(Palette.border).frame(height: 1)
}
}
.onScrollVisibilityChange(threshold: 0.01) { visible in
if let seq = row.summarySeq {
model.summaryVisible(seq, visible)
}
if let error {
Text(error)
.font(Fonts.font(11))
.foregroundStyle(Palette.danger)
} else {
Rectangle().fill(Palette.border).frame(height: 1)
}
case .note(let note):
+12 -2
View File
@@ -518,11 +518,21 @@ final class TranscriptBuilder {
if ev.kind == "snapshot.created" {
ctx.run = nil
let snap = try! decodePayload(ev.payload, as: Snapshot.self)
let row = Row(.snapshot(snap), taskId: rowTask)
ctx.snapshots[snapKey(snap.n)] = row
if ![.answer, .fork, .askHuman].contains(snap.trigger) && sink == nil && own {
lastReady = nil
}
release()
let prev = (ctx.handoff?.body ?? sink ?? root).rows.last { !$0.hidden }
if let prev, case .snapshot(let p) = prev.kind, p.treeSha == snap.treeSha, prev.taskId == rowTask {
ctx.snapshots[snapKey(snap.n)] = prev
continue
}
let row = Row(.snapshot(snap), taskId: rowTask)
ctx.snapshots[snapKey(snap.n)] = row
if let prev, case .turnEnd(nil) = prev.kind {
prev.hidden = true
row.summarySeq = prev.summarySeq
}
put(row)
continue
}