Skip to content

Commit 052d744

Browse files
committed
Attach notchless dock to screen top
Notchless placement left a visible gap below the usable screen edge, making the Top Dock appear detached. Anchor it directly beneath the menu bar or at the physical top when no menu bar is present.
1 parent 57c0a9f commit 052d744

7 files changed

Lines changed: 31 additions & 14 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ The release includes code for Apple silicon and Intel Macs.
1919

2020
## Install
2121

22-
1. Download `CodeWindow-v0.1.28-macOS-universal.dmg` from the [latest release](https://github.com/mertdeveci5/codewindow/releases/latest).
22+
1. Download `CodeWindow-v0.1.29-macOS-universal.dmg` from the [latest release](https://github.com/mertdeveci5/codewindow/releases/latest).
2323
2. Open the disk image.
2424
3. Drag `CodeWindow.app` onto the Applications folder in the window.
2525
4. Open CodeWindow.

Resources/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<key>CFBundlePackageType</key>
2020
<string>APPL</string>
2121
<key>CFBundleShortVersionString</key>
22-
<string>0.1.28</string>
22+
<string>0.1.29</string>
2323
<key>CFBundleVersion</key>
24-
<string>29</string>
24+
<string>30</string>
2525
<key>LSMinimumSystemVersion</key>
2626
<string>13.0</string>
2727
<key>LSApplicationCategoryType</key>

Sources/CodeWindowCore/TopDockPlacement.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public enum TopDockPlacementPolicy {
2929
/// How far the activity bar overhangs the housing on each side. This overhang is what
3030
/// makes the folded island read as hardware growing, not as a pill parked below it.
3131
public static let notchShoulder: CGFloat = 42
32-
public static let edgeGap: CGFloat = 6
3332

3433
/// Derives the camera housing between the two unobscured menu-bar regions.
3534
public static func notch(
@@ -59,9 +58,9 @@ public enum TopDockPlacementPolicy {
5958
return max(0, min(notchWidth, room))
6059
}
6160

62-
/// Places the folded island so its connector overlaps the camera housing, or just below
63-
/// the menu bar on an ordinary display. The attachment stays put while hover and new
64-
/// content grow the bar downward and outward.
61+
/// Places the folded island so its connector overlaps the camera housing, or flush against
62+
/// the menu bar or screen edge on an ordinary display. The attachment stays put while hover
63+
/// and new content grow the bar downward and outward.
6564
public static func dockedFrame(
6665
contentSize: CGSize,
6766
notch: CGRect?,
@@ -76,7 +75,7 @@ public enum TopDockPlacementPolicy {
7675
)
7776
let centerX = notch?.midX ?? screenFrame.midX
7877
let top = notch.map { $0.minY + min(notchOverlap, $0.height) }
79-
?? min(visibleFrame.maxY, screenFrame.maxY) - edgeGap
78+
?? min(visibleFrame.maxY, screenFrame.maxY)
8079
return CGRect(
8180
x: (centerX - width / 2).rounded(),
8281
y: (top - height).rounded(),

Sources/CodeWindowCoreTests/main.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,23 @@ func testTopDockPlacement() throws {
180180
)
181181
try require(fallback.midX == externalScreen.midX, "Fallback capsule ignored screen origin")
182182
try require(
183-
fallback.maxY == externalVisible.maxY - TopDockPlacementPolicy.edgeGap,
184-
"Fallback capsule did not sit below the menu bar"
183+
fallback.maxY == externalVisible.maxY,
184+
"Notchless capsule did not attach to the top edge"
185185
)
186186
try require(
187187
fallback.height == TopDockPlacementPolicy.capsuleHeight,
188188
"Fallback capsule borrowed the housing overlap it has nothing to attach to"
189189
)
190+
let menuBarlessFallback = TopDockPlacementPolicy.dockedFrame(
191+
contentSize: CGSize(width: 160, height: 26),
192+
notch: nil,
193+
screenFrame: externalScreen,
194+
visibleFrame: externalScreen
195+
)
196+
try require(
197+
menuBarlessFallback.maxY == externalScreen.maxY,
198+
"Notchless capsule did not attach to a menu-bar-free screen edge"
199+
)
190200
try require(
191201
folded.width - notch.width
192202
>= (TopDockPlacementPolicy.barTopRadius + TopDockPlacementPolicy.shoulderRadius) * 2,

website/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
CodeWindow shows Codex CLI, Claude Code, and Pi sessions in a floating macOS panel.
4343
<a
4444
style="color: #8ea2ff"
45-
href="https://github.com/mertdeveci5/codewindow/releases/download/v0.1.28/CodeWindow-v0.1.28-macOS-universal.dmg"
46-
>Download CodeWindow v0.1.28 for macOS</a
45+
href="https://github.com/mertdeveci5/codewindow/releases/download/v0.1.29/CodeWindow-v0.1.29-macOS-universal.dmg"
46+
>Download CodeWindow v0.1.29 for macOS</a
4747
>
4848
or read the documentation on
4949
<a style="color: #8ea2ff" href="https://github.com/mertdeveci5/codewindow">GitHub</a>

website/src/lib/changelog.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ export type ChangelogEntry = {
77

88
/** Every published CodeWindow tag, newest first. There was no v0.1.12 release. */
99
export const CHANGELOG = [
10+
{
11+
version: "0.1.29",
12+
date: "2026-08-31",
13+
dateLabel: "Aug 31, 2026",
14+
changes: [
15+
"Attaches the Top Dock flush to the menu bar or screen edge on Macs and displays without a notch.",
16+
],
17+
},
1018
{
1119
version: "0.1.28",
1220
date: "2026-08-30",

website/src/lib/site.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const VERSION = "0.1.28";
1+
export const VERSION = "0.1.29";
22

33
export const REPO_URL = "https://github.com/mertdeveci5/codewindow";
44

@@ -7,6 +7,6 @@ export const RELEASES_URL = "https://github.com/mertdeveci5/codewindow/releases"
77
export const CHANGELOG_URL = "/changelog";
88

99
export const DOWNLOAD_URL =
10-
"https://github.com/mertdeveci5/codewindow/releases/download/v0.1.28/CodeWindow-v0.1.28-macOS-universal.dmg";
10+
"https://github.com/mertdeveci5/codewindow/releases/download/v0.1.29/CodeWindow-v0.1.29-macOS-universal.dmg";
1111

1212
export const SETUP_PROMPT_URL = "/skill.md";

0 commit comments

Comments
 (0)