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:
2026-08-01 08:28:53 -04:00
parent 6f2e0d15da
commit 94e60cd444
6 changed files with 253 additions and 34 deletions
+12 -8
View File
@@ -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,