Chat View Refinement
Nucleic-Session: 4E56990A-96AE-4597-9140-753CB82E769D Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -20,19 +20,7 @@ struct SessionDetailView: View {
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
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()
|
||||
|
||||
Group {
|
||||
if tab == 0 {
|
||||
TranscriptList(events: store.openEvents)
|
||||
} 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.
|
||||
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")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.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 {
|
||||
ToolbarItem(placement: .topBarTrailing) { sessionMenu(summary) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user