The git surfaces leave the glass — tab, trail, branch line, and the remote pair, peeled
Step 3 of strategy/01-git-excision.md: the popover strip is Info/Theme/Sync, the titlebar widget says the name alone, the card window's History section and its slot go, Board ▸ Pull/Push comes out with the RemoteCommands scaffold, and View ▸ History re-tags from the commit trail to the deferred foreign-change journal. The Sync placeholder re-annotates to the future ops-based sync service. Four git test suites leave with the surfaces they pinned (BoardGitSetup, BoardInfoPopover, BranchSwitch, GitUndo). The git engine still compiles underneath, unreferenced by UI. 2,890 tests green. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -28,9 +28,7 @@ import UniformTypeIdentifiers
|
||||
/// raw-source outlet swapping the pair of columns out entirely when it is active. Everything that
|
||||
/// reads or writes beyond that is later work and is marked where it lands:
|
||||
///
|
||||
/// - the title as an editable field (commit on Return / focus loss, Escape abandons),
|
||||
/// - the sidebar's History section, whose place in the stack is reserved and whose content waits on
|
||||
/// a git mode to be honest about (`historySlot`).
|
||||
/// - the title as an editable field (commit on Return / focus loss, Escape abandons).
|
||||
///
|
||||
/// The placeholders are structural rather than apologetic: the sidebar's inventory and its order are
|
||||
/// settled (05 ▸ The attributes sidebar), so the shell states them and the sections fill in
|
||||
@@ -96,10 +94,6 @@ struct CardWindowView: View {
|
||||
/// issued in this window registers on this window's stack. It lives on the window's session so
|
||||
/// the close can fold it, which is why it arrives here rather than being made here.
|
||||
let undo: CardWindowUndo
|
||||
/// **This card's commit trail** (05 ▸ History), or `nil` on every board with no app-managed git —
|
||||
/// mode none, repo-nested, unverifiable. The `nil` *is* the section's absence rule; see
|
||||
/// `historySlot`. A per-board question on every tier since 12-editions.md ▸ PIVOT 2026-08-07.
|
||||
let history: CardHistory?
|
||||
/// The whole-window file drop (05 ▸ Attachments: "the drop surface remains the **whole
|
||||
/// window**"). `nil` only where a caller has no store to import through.
|
||||
let fileDrop: CardWindowDropDelegate?
|
||||
@@ -284,8 +278,8 @@ struct CardWindowView: View {
|
||||
/// (05 ▸ Composition) — the whole line disappears when the card carries none of the three.
|
||||
///
|
||||
/// The "by" segment renders only with the self-reported provenance stamp present
|
||||
/// (01-storage-format.md), which is the point of showing it at all: provenance made visible where
|
||||
/// git history may not exist.
|
||||
/// (01-storage-format.md), which is the point of showing it at all: provenance made visible with
|
||||
/// no commit trail to read it from.
|
||||
private var dateLine: String? {
|
||||
var parts: [String] = []
|
||||
if let created = card.created.value {
|
||||
@@ -306,14 +300,16 @@ struct CardWindowView: View {
|
||||
|
||||
// MARK: - Attributes sidebar
|
||||
|
||||
/// The sidebar's sections, **in 05's settled order**: Attachments, Style, Details, History,
|
||||
/// Actions.
|
||||
/// The sidebar's sections, **in 05's settled order**: Attachments, Style, Details, Actions.
|
||||
///
|
||||
/// Two of the five are conditional, and both conditions are 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
|
||||
/// ("shown only when any exist"), and **History** is absent on boards without app-managed git.
|
||||
/// Everything else in the stack is unconditional, so the composition a user learns on one card is
|
||||
/// the composition they get on the next.
|
||||
/// ("shown only when any exist"). Everything else in the stack is unconditional, so the
|
||||
/// composition a user learns on one card is the composition they get on the next.
|
||||
///
|
||||
/// The History section that once sat between Details and Actions left with app-managed git
|
||||
/// (strategy/01-git-excision.md, 2026-08-08); View ▸ History (`FutureCommands.swift`) is the only
|
||||
/// surviving reservation of that slot, and it anticipates the foreign-change journal successor.
|
||||
private var sidebar: some View {
|
||||
ScrollView(.vertical) {
|
||||
VStack(alignment: .leading, spacing: bodyPointSize * 1.25) {
|
||||
@@ -325,35 +321,12 @@ struct CardWindowView: View {
|
||||
// keys and their order included, and `Card` has carried it since (`BoardModel`).
|
||||
CardDetailsSection(rows: CardDetails.rows(of: card.document))
|
||||
|
||||
historySlot
|
||||
|
||||
CardActionsSection(store: store, cardID: card.id, cardFolder: cardFolder)
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(CardWindowMetrics.gutter(bodyPointSize: bodyPointSize))
|
||||
}
|
||||
}
|
||||
|
||||
/// **The History section** — between Details and Actions, 05's order (05 ▸ History: "the card's
|
||||
/// commit trail, read-only … newest first — semantic subject, relative date, author").
|
||||
///
|
||||
/// **Absence is the `nil`, and it is the whole rule.** "The section is absent on boards without
|
||||
/// app-managed git (mode none, repo-nested) — same honesty rule as the popover's git section".
|
||||
/// The host builds a `CardHistory` only where the board's history is git-backed (mode `git`), so
|
||||
/// there is no placeholder here to decide about: what the slot reserves is the **position**, and
|
||||
/// on every other board that position is empty.
|
||||
///
|
||||
/// **The tier is not one of the inputs** (12-editions.md ▸ PIVOT 2026-08-07 — git left the
|
||||
/// paywall, retiring 12's tier matrix row that made this a Pro surface): a git board shows its
|
||||
/// trail on any tier, a gitless one shows nothing on any tier.
|
||||
///
|
||||
// A later card: View ▸ History, which focuses this section (11-command-nexus.md).
|
||||
@ViewBuilder
|
||||
private var historySlot: some View {
|
||||
if let history {
|
||||
CardHistorySection(history: history)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - The window-wide drop
|
||||
|
||||
Reference in New Issue
Block a user