Merge nucleic/bold-thistle-marten-19eu into dev
This commit is contained in:
@@ -271,7 +271,9 @@ struct SessionDetailView: View {
|
||||
.padding(.vertical, 10)
|
||||
.chatColumn(maxWidth: contentMaxWidth, inset: transcriptInset, resizeWidth: columnWidth, settling: transcriptSettling)
|
||||
}
|
||||
Divider().chatColumn(maxWidth: contentMaxWidth, inset: transcriptInset, resizeWidth: columnWidth, settling: transcriptSettling)
|
||||
// No divider above the composer: it's a self-contained Liquid Glass card now, and a
|
||||
// full-width rule flush against its top edge reads as a stray second border (the
|
||||
// same reason the approval cards above go without one). The gap does the separating.
|
||||
composer
|
||||
}
|
||||
// Mirror the column's live width so the composer/divider/approval column (which live
|
||||
@@ -2915,11 +2917,27 @@ struct SessionDetailView: View {
|
||||
// archived chat — only Unarchive stays live.
|
||||
.disabled(isArchived)
|
||||
}
|
||||
.padding(.top, 22)
|
||||
.padding(.bottom, 12)
|
||||
// Card padding — the chrome inside the glass, in place of the bare top/bottom insets the
|
||||
// divider-ruled strip used to carry.
|
||||
.padding(.horizontal, 14)
|
||||
.padding(.vertical, 12)
|
||||
// Backed by the system Liquid Glass material, exactly like the floating new-chat
|
||||
// composer: the input area reads as one card sitting over the pane, sampling and
|
||||
// refracting what's behind it instead of being a flat slab ruled off by a divider.
|
||||
.glassEffect(.regular, in: .rect(cornerRadius: 16))
|
||||
// The glass renders but doesn't hit-test, so give the card a solid hit shape — clicks
|
||||
// in the empty space between its controls belong to the composer, not to whatever sits
|
||||
// underneath (and the shape also focuses the field-adjacent gaps predictably).
|
||||
.contentShape(.rect(cornerRadius: 16))
|
||||
// A soft drop shadow lifts the card off the transcript, matching the floating panel's
|
||||
// treatment at a calmer weight — this one is always on screen.
|
||||
.shadow(color: .black.opacity(0.18), radius: 10, x: 0, y: 3)
|
||||
// Match the transcript's centered column so the input area and its
|
||||
// accessories never extend wider than the chat text above them.
|
||||
.chatColumn(maxWidth: contentMaxWidth, inset: transcriptInset, resizeWidth: columnWidth, settling: transcriptSettling)
|
||||
// Float the card off the transcript above and the pane's bottom edge below.
|
||||
.padding(.top, 10)
|
||||
.padding(.bottom, 12)
|
||||
// Stream this composer's draft to the mesh (throttled in the store) so every other
|
||||
// device viewing this chat sees it live and locks its own composer; an emptied field —
|
||||
// including the clear in `send()` — ends the typing and unlocks them.
|
||||
|
||||
Reference in New Issue
Block a user