Chat View Refinement
Nucleic-Session: 4E56990A-96AE-4597-9140-753CB82E769D Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -21,39 +21,16 @@ struct SessionDetailView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Group {
|
|
||||||
if tab == 0 {
|
|
||||||
TranscriptList(events: store.openEvents)
|
TranscriptList(events: store.openEvents)
|
||||||
} else if store.capabilities.canFetchDiff || store.openDiff != nil {
|
// The chat bar floats over the scrolling content on Liquid Glass instead of sitting
|
||||||
SessionDiffView(diff: store.openDiff, loading: store.diffLoading)
|
// in a boxed strip below it, so the transcript runs the full height of the screen.
|
||||||
.onAppear { store.fetchDiff(sessionID) }
|
|
||||||
} else {
|
|
||||||
// Older host with no on-demand diff — the stat summary is all it projects.
|
|
||||||
DiffSummaryView(diffStat: summary?.diffStat)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 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 }
|
.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
|
ToolbarItem(placement: .topBarTrailing) { sessionMenu }
|
||||||
// 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) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
.sheet(isPresented: $showDiff) { diffSheet }
|
||||||
.alert("Rename chat", isPresented: $showRename) {
|
.alert("Rename chat", isPresented: $showRename) {
|
||||||
TextField("Title", text: $renameDraft)
|
TextField("Title", text: $renameDraft)
|
||||||
Button("Cancel", role: .cancel) {}
|
Button("Cancel", role: .cancel) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user