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 {
|
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) }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user