The sidebar's attachments group drops to the bottom of the stack
Style, Details, Actions, Attachments — the trailing sidebar's own composition order in the card window, reordered so Attachments sits under everything else rather than leading it. Section internals are untouched; this is the VStack's child order and nothing more, so keyboard Tab order and VoiceOver's reading order follow it for free, and File ▸ Add Attachment… (⇧⌘A) is unaffected — it opens the panel through the focus system, not through this view's layout. Actions still sits above Attachments here: the paired card that removes the Actions section entirely lands as the next commit, so this one is an honest mid-flight state — style/details/actions/attachments now, style/details/ attachments once that follow-up lands. 05-card-window.md's sidebar order is now stale (still lists Attachments first); the amendment is owed and tracked on the card's own thread rather than made here. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -398,7 +398,16 @@ struct CardWindowView: View {
|
|||||||
|
|
||||||
// MARK: - Attributes sidebar
|
// MARK: - Attributes sidebar
|
||||||
|
|
||||||
/// The sidebar's sections, **in 05's settled order**: Attachments, Style, Details, Actions.
|
/// The sidebar's sections, **reordered 2026-08-09** (Pipeline card 8f26b029) so **Attachments
|
||||||
|
/// sits at the bottom of the stack**: Style, Details, Actions, Attachments. Section internals are
|
||||||
|
/// untouched — this is ordering only, and it is exactly the `VStack`'s child order, so keyboard
|
||||||
|
/// Tab order and VoiceOver's reading order follow it for free; ⇧⌘A (`AddAttachmentCommand`)
|
||||||
|
/// still opens the same file panel regardless of where the section sits in the stack, since it
|
||||||
|
/// reaches the window through the focus system rather than through this view's layout.
|
||||||
|
///
|
||||||
|
/// 05-card-window.md ▸ The attributes sidebar still documents the pathfinder's original order
|
||||||
|
/// (Attachments, Style, Details, Actions) — an owed amendment, tracked on that card's own thread
|
||||||
|
/// rather than made here.
|
||||||
///
|
///
|
||||||
/// One of the four is conditional, and the condition is the section's own rather than a rule
|
/// One of the four is conditional, and the condition is the section's own rather than a rule
|
||||||
/// restated here: **Details** renders nothing when the card carries no unknown frontmatter keys
|
/// restated here: **Details** renders nothing when the card carries no unknown frontmatter keys
|
||||||
@@ -411,8 +420,6 @@ struct CardWindowView: View {
|
|||||||
private var sidebar: some View {
|
private var sidebar: some View {
|
||||||
ScrollView(.vertical) {
|
ScrollView(.vertical) {
|
||||||
VStack(alignment: .leading, spacing: bodyPointSize * 1.25) {
|
VStack(alignment: .leading, spacing: bodyPointSize * 1.25) {
|
||||||
CardAttachmentsSection(attachments: attachments, thumbnails: thumbnails)
|
|
||||||
|
|
||||||
CardStyleSection(store: store, recents: recents, cardID: card.id, undo: undo)
|
CardStyleSection(store: store, recents: recents, cardID: card.id, undo: undo)
|
||||||
|
|
||||||
// The snapshot's own document, not a re-read: the loader parsed this file, unknown
|
// The snapshot's own document, not a re-read: the loader parsed this file, unknown
|
||||||
@@ -420,6 +427,8 @@ struct CardWindowView: View {
|
|||||||
CardDetailsSection(rows: CardDetails.rows(of: card.document))
|
CardDetailsSection(rows: CardDetails.rows(of: card.document))
|
||||||
|
|
||||||
CardActionsSection(store: store, cardID: card.id, cardFolder: cardFolder)
|
CardActionsSection(store: store, cardID: card.id, cardFolder: cardFolder)
|
||||||
|
|
||||||
|
CardAttachmentsSection(attachments: attachments, thumbnails: thumbnails)
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity, alignment: .leading)
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
.padding(CardWindowMetrics.gutter(bodyPointSize: bodyPointSize))
|
.padding(CardWindowMetrics.gutter(bodyPointSize: bodyPointSize))
|
||||||
|
|||||||
Reference in New Issue
Block a user