Repository navigation
feat: add Menu Bar, Island, Minimal and Terminal themes that restyle the whole bar - #49
Merged
Merged
Conversation
Seb-GRAF
force-pushed
the
feat/theme-looks
branch
from
October 16, 2026 15:09
b0735f7 to
9a8e8ac
Compare
Seb-GRAF
enabled auto-merge
October 16, 2026 15:10
Seb-GRAF
disabled auto-merge
October 16, 2026 15:11
This was referenced Oct 17, 2026
|
🎉 This PR is included in version 0.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Every bundled theme looked the same: floating tiles that differed only in colors and corner radius. A theme couldn't change the bar's shape. Removing the tiles also removed the popup background, because popups took their background from the tiles. The bar always filled its frame edge to edge. And the theme cards in Customize showed only three colors, so themes that differed in shape would have looked identical there.
Changes
popupDefaults: a style every popup inherits, between its widget's style anddefaults. Themes can set it. A theme that removes the tiles by settingdefaults.backgroundtonulluses it to keep a surface under popups.bar.margin: insets the bar's background and widgets from every edge of the bar's frame, so a roundedbar.stylefloats. The frame keeps its height, so the space kept clear for windows doesn't change, and the notch range shifts by the margin. Likeoffset, it stays in screen points underdisplayScale.Four bundled themes, each with light and dark colors:
Each defines the tokens it uses, so it passes review on its own.
Customize → Appearance: each theme card loads the theme's effective configuration and draws its bar strip, a widget with its border, corners and font, at the top of a small desktop. It no longer shows just three colors.
Customize covers every property the bundled themes set, so any of their looks can be built there. All widgets gains Shadow, Accent text and Vertical padding. A new Popups section edits
popupDefaults: background, border, shadow and weight. Bar gains Background, Border, Border width, Corner radius and Margin. The Bar rows editbar.style, the properties themes use for the strip, so they win over the theme's.A
popupDefaultsedit action, so Customize and--batchedit it likedefaults.Fix: a widget showing only an icon was shorter than one with text, because an SF Symbol is shorter than a line of text. It stood out in Built-in and Terminal, where every widget is a tile. An icon-only label now reserves the height of a line in its font. This happens on
maintoo; I can split it into its own PR if you'd rather.Schema and README: Layout and style, Themes, the display scale note, Customize, the batch actions and Custom popups.
Left out, say if you want it: widgets packages still can't set
popupDefaults, only themes and your own files. Built-in, Slate, Paper and Graphite are unchanged.Testing
swift test: all 130 tests pass, on top of feat: keep windows clear of StableBar without a tiling window manager #48.bundledThemesDefineEverySharedTokenForLightAndDarkreviews and loads each new theme, andschemaListsTheSamePropertiesAsTheDecoderscovers the new keys.StableBar --validatepasses for each new theme and forpopupDefaultsandbar.marginin the main file and in a profile. A misspelledpopupDefaults.backgrundfails withpopupDefaults.backgrund: Unknown property.margin10 through--batch. There were no configuration errors, and nothing was written to the file.main, with scratch configurations and without putting a second bar on screen (as in feat: give themes light and dark colors and organize Customize around the bar's look #31): the bar under each theme in light and dark; a popup under Menu Bar with and withoutpopupDefaults, and under Island and Minimal; and Customize → Appearance before and after.barandpopupDefaultsedit actions, and the maintainer tried them on the branch build with their own configuration.bar.marginis untested on hardware. Popups weren't opened by clicking in the live app, because the session has no Accessibility permission. The popup screenshots come from the offscreen render, which uses the same style chain asWidgetPopup.Screenshots
Screenshots to follow.
Merging
Three
featcommits and onefix. A merge commit lists each one in the changelog; a squash keeps only the title.Claude Opus 5.5 via Claude Code in T3 Code