From 01cabc0e43edc592e45260b08c2fbe2d05c14f0d Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 19 Oct 2026 16:57:16 -0700 Subject: [PATCH] scroll to top of attention on switch --- mac/Sources/Byre/Chat.swift | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mac/Sources/Byre/Chat.swift b/mac/Sources/Byre/Chat.swift index bed6563..2b94596 100644 --- a/mac/Sources/Byre/Chat.swift +++ b/mac/Sources/Byre/Chat.swift @@ -751,22 +751,27 @@ private struct TranscriptScroll: View { var body: some View { let running = model.running ScrollView { - VStack(alignment: .leading, spacing: 12) { + VStack(alignment: .leading, spacing: 0) { if model.key == nil { Muted(text: model.empty) + .padding(.top, 12) } else { if model.loading { Muted(text: "loading…") + .padding(.top, 12) } if model.hasOlder || model.older != nil { Muted(text: "loading earlier…") .opacity(model.fetching || model.older != nil ? 1 : 0) + .padding(.top, 12) } - ForEach(model.builder.root.rows) { row in + ForEach(model.builder.root.rows.filter { !$0.hidden }) { row in RowView(row: row, model: model, nested: false) + .padding(.top, 12) } ForEach(model.builder.pending) { p in PendingView(pending: p, model: model) + .padding(.top, 12) } } } @@ -778,7 +783,8 @@ private struct TranscriptScroll: View { .offset(y: 8) } } - .padding(16) + .padding([.horizontal, .bottom], 16) + .padding(.top, 4) } .scrollPosition($position) .defaultScrollAnchor(.bottom) @@ -815,7 +821,7 @@ private struct TranscriptScroll: View { model.prependOlder() } } - .onChange(of: model.held) { _, id in + .onChange(of: model.held, initial: true) { _, id in if !model.stuck || scrolling { return }