The whole board-name area opens the popover — the chevron alone was the trigger
The titlebar widget grows from a 20×18 chevron into one button saying the board's name and, on a git-mode Pro board, its branch — click anywhere across it and the popover opens as before, anchored to the widget. BoardInfoTitlebarSummary is the pure seam for both strings (title falls back to the folder name per 01's naming rule; branch only under pro + git mode, live off the observable HistoryStore.branch). Board windows now hide the system title display through the same hideTitle slot card windows adopted — the widget says the name, so the chrome would only repeat it — while navigationTitle keeps feeding window.title to the Window menu, Exposé, VoiceOver and restoration. The widget also refreshes the branch eagerly at appearance: it used to populate only once the popover had been opened, which would have left the new branch line empty on a freshly opened board. Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
This commit is contained in:
@@ -300,6 +300,13 @@ struct BoardWindowHost: View {
|
||||
presentation: boardInfo
|
||||
)
|
||||
)
|
||||
// The widget above now says the board's name (and, on a git-mode Pro board, its branch)
|
||||
// itself, so the system title display would only repeat it — the card-window seam
|
||||
// (`CardWindowHost.configureWindow`, `HostedWindowController.hideTitle`), applied here for
|
||||
// the same reason. `.navigationTitle(windowTitle)` a few lines up in `body` is untouched —
|
||||
// `window.title` keeps feeding the Window menu, Exposé, VoiceOver and restoration; only the
|
||||
// title bar's own rendering of that string is suppressed.
|
||||
windowController.hideTitle()
|
||||
|
||||
// The board's customizable toolbar (03-board-ui.md ▸ Toolbar) — installed here for the
|
||||
// accessory's reason exactly: it carries the store, and it is a board window's, not every
|
||||
|
||||
@@ -857,8 +857,10 @@ struct CardWindowHost: View {
|
||||
// on this view still sets it every time the card renames or a new card's window opens — so
|
||||
// the Window menu, Mission Control/Exposé, VoiceOver and state restoration all keep naming
|
||||
// this window correctly; only the title *bar's* rendering of that string is suppressed
|
||||
// (`HostedWindowController.hideTitle`). Board windows call no such thing and keep AppKit's
|
||||
// default (`.visible`), which is where their title lives.
|
||||
// (`HostedWindowController.hideTitle`). Board windows call the same thing now, for the same
|
||||
// reason, once their board-popover widget has a name of its own to say
|
||||
// (`BoardWindowHost.configureWindow`) — only the restore-bootstrap window still keeps
|
||||
// AppKit's `.visible` default.
|
||||
windowController.hideTitle()
|
||||
|
||||
// **This window's own stack** (13-native-undo.md ▸ Rules ▸ two levels, re-ruled 2026-07-31 —
|
||||
|
||||
@@ -91,12 +91,14 @@ final class HostedWindowController: NSObject, NSWindowDelegate {
|
||||
/// their board has loaded.
|
||||
private var toolbarController: WindowToolbarController?
|
||||
|
||||
/// Whether this window's title is hidden from the title bar — **card windows only**
|
||||
/// (05-card-window.md ▸ Window: the card's name is shown as part of the card's body, not the
|
||||
/// chrome). `nil` leaves AppKit's own default (`.visible`) untouched, which is what every board
|
||||
/// window keeps without a call of its own — the same "nothing to do" posture `titlebarAccessory`
|
||||
/// has on welcome, the bootstrap and card windows, mirrored here for the one window kind that
|
||||
/// *does* have an opinion.
|
||||
/// Whether this window's title is hidden from the title bar — **card and board windows**: the
|
||||
/// card's name is shown as part of the card's body instead of the chrome (05-card-window.md ▸
|
||||
/// Window), and the board's is said by the board-popover widget in the titlebar instead
|
||||
/// (03-board-ui.md ▸ Board popover; `BoardWindowHost.configureWindow`). `nil` leaves AppKit's own
|
||||
/// default (`.visible`) untouched — the restore-bootstrap window's posture, the one
|
||||
/// `HostedWindowController`-hosted window with no opinion here, the same "nothing to do" posture
|
||||
/// `titlebarAccessory` has on welcome (which never attaches a controller at all), the bootstrap
|
||||
/// window, and now — for that slot specifically — card windows too.
|
||||
///
|
||||
/// A slot, not a one-shot write, for the accessory and toolbar's own reason: the value has to
|
||||
/// survive the provisional-window swap (`detach()`'s doc comment) and reapply itself when the
|
||||
@@ -212,8 +214,10 @@ final class HostedWindowController: NSObject, NSWindowDelegate {
|
||||
// MARK: Title visibility
|
||||
|
||||
/// Hides this window's title from the title bar, leaving the toolbar exactly as it renders today
|
||||
/// — the card-window seam (`CardWindowHost`, 05-card-window.md ▸ Window). `window.title` is
|
||||
/// untouched by this call on purpose; see the property's doc comment for why.
|
||||
/// — the card-window seam (`CardWindowHost`, 05-card-window.md ▸ Window) and, since the
|
||||
/// board-popover widget grew to say the board's name itself, the board-window one too
|
||||
/// (`BoardWindowHost`, 03-board-ui.md ▸ Board popover). `window.title` is untouched by this call
|
||||
/// on purpose; see the property's doc comment for why.
|
||||
///
|
||||
/// Safe to call whenever the caller learns it wants this — before the window exists (the value is
|
||||
/// held and applied at `attach`) or after (applied immediately) — and safe to call more than once,
|
||||
|
||||
Reference in New Issue
Block a user