From 71c273b7777ed17bc72c11df1a9221a9e645c714 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Wed, 16 Sep 2026 11:53:11 -0300 Subject: Restore the macOS shell build after the compact tagline drift The body-layer context rules landed on a private TaglineMetrics.scale, which never compiled: no macOS host built this shell when they were written. Expose the physical-pixel thickness the way borderThickness/borderTop already expose theirs, and paint the rule over the row's last pixel the way the SDL shell does, so the two shells agree on the pixel rather than sitting one apart. Co-Authored-By: Claude Opus 5 (1M context) --- src/macos/Sources/PardesView.swift | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/macos') diff --git a/src/macos/Sources/PardesView.swift b/src/macos/Sources/PardesView.swift index f64678ee..cd3ec980 100644 --- a/src/macos/Sources/PardesView.swift +++ b/src/macos/Sources/PardesView.swift @@ -531,6 +531,12 @@ private struct TaglineMetrics { let px = pardes_topbar_pane_border_px(cellPixels, bandPixels) return (CGFloat(cellPixels * UInt32(PARDES_TOPBAR_H)) - CGFloat(px / 2)) / scale } + + /// One physical pixel, in points. The rules separating discontinuous + /// context rows inside a body layer are a single pixel in the SDL shell, + /// so they are stated there and converted here rather than handing `scale` + /// out and letting the caller reinvent the conversion. + var contextBorderThickness: CGFloat { 1 / scale } } private func modifiers(_ flags: NSEvent.ModifierFlags) -> UInt32 { @@ -1362,8 +1368,11 @@ final class PardesView: NSView { if border != UInt32(PARDES_COLOR_DEFAULT) { for row in 0..