Chat View Refinement

Nucleic-Session: 4E56990A-96AE-4597-9140-753CB82E769D
Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
2026-07-05 00:53:04 -07:00
co-authored by Nucleic
parent 3fbd6ca1e8
commit fba19f8330
@@ -20,19 +20,7 @@ struct SessionDetailView: View {
} }
var body: some View { var body: some View {
VStack(spacing: 0) { Group {
Picker("", selection: $tab) {
Text("Transcript").tag(0)
Text("Diff").tag(1)
}
.pickerStyle(.segmented)
.padding(.horizontal)
.padding(.bottom, 8)
if store.canControl, let summary { controlBar(summary) }
Divider()
if tab == 0 { if tab == 0 {
TranscriptList(events: store.openEvents) TranscriptList(events: store.openEvents)
} else if store.capabilities.canFetchDiff || store.openDiff != nil { } else if store.capabilities.canFetchDiff || store.openDiff != nil {
@@ -42,12 +30,25 @@ struct SessionDetailView: View {
// Older host with no on-demand diff — the stat summary is all it projects. // Older host with no on-demand diff — the stat summary is all it projects.
DiffSummaryView(diffStat: summary?.diffStat) DiffSummaryView(diffStat: summary?.diffStat)
} }
actionArea
} }
// The chat bar floats over the scrolling content on Liquid Glass instead of sitting in
// a boxed strip below it, so the transcript runs the full height of the screen.
.safeAreaInset(edge: .bottom) { actionArea }
.navigationTitle(summary?.title ?? "Session") .navigationTitle(summary?.title ?? "Session")
.navigationBarTitleDisplayMode(.inline) .navigationBarTitleDisplayMode(.inline)
.toolbar { .toolbar {
// Transcript/Diff lives in the navigation bar (icon segments) rather than a
// dedicated row — it's a mode flip, not content, and shouldn't cost chat height.
ToolbarItem(placement: .topBarTrailing) {
Picker("View", selection: $tab) {
Image(systemName: "text.bubble").tag(0)
.accessibilityLabel("Transcript")
Image(systemName: "plus.forwardslash.minus").tag(1)
.accessibilityLabel("Diff")
}
.pickerStyle(.segmented)
.fixedSize()
}
if let summary, store.canControl { if let summary, store.canControl {
ToolbarItem(placement: .topBarTrailing) { sessionMenu(summary) } ToolbarItem(placement: .topBarTrailing) { sessionMenu(summary) }
} }