Skip to content

Remove OS titlebar and add custom window chrome - #29

Merged
wesbillman merged 1 commit into
mainfrom
desktop-custom-titlebar
Mar 11, 2026
Merged

Remove OS titlebar and add custom window chrome#29
wesbillman merged 1 commit into
mainfrom
desktop-custom-titlebar

Conversation

@wesbillman

@wesbillman wesbillman commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Use macOS overlay titlebar style (titleBarStyle: "Overlay") to remove native window decorations while keeping traffic light buttons
  • Add drag regions to the sidebar header and content area so the window can be moved by dragging either zone
  • Add a fixed sidebar toggle button next to the traffic lights that reflects open/close state
  • Add required Tauri permissions (core:window:allow-start-dragging, allow-show, allow-close)
  • Tighten border radii on home feed cards (from rounded-3xl/rounded-[1.75rem] to rounded-xl/rounded-lg)
  • Simplify search shortcut badge from bordered "Cmd K" to plain ⌘K

Test plan

  • Window starts hidden, appears after React mounts (no theme flash)
  • Traffic lights (close/minimize/maximize) visible and functional in top-left
  • Sidebar toggle button sits next to traffic lights and stays fixed regardless of sidebar state
  • Window is draggable from sidebar header area and the top strip of the content area
  • Sidebar toggle icon changes between PanelLeftOpen/PanelLeftClose based on state
  • Window position/size persists across restarts
  • Home feed cards have tighter border radius

🤖 Generated with Claude Code

Use macOS overlay titlebar style to hide native window decorations while
keeping traffic lights. Add drag regions to the sidebar header and
content area, a fixed sidebar toggle next to the traffic lights, and
the required Tauri permissions for window dragging/show/close. Also
tightens border radii on home feed cards and simplifies the search
shortcut badge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@wesbillman
wesbillman merged commit 57cd81f into main Mar 11, 2026
8 checks passed
@wesbillman
wesbillman deleted the desktop-custom-titlebar branch March 11, 2026 17:01
tlongwell-block added a commit that referenced this pull request Mar 11, 2026
* origin/main:
  Plumb desktop profile identity UI (#32)
  Add unread indicators to desktop channels (#31)
  feat: public profiles, NIP-05 identity, search & presence tools (#28)
  Add desktop settings page (#30)
  Remove OS titlebar and add custom window chrome (#29)

# Conflicts:
#	TESTING.md
#	crates/sprout-mcp/src/server.rs
#	crates/sprout-test-client/tests/e2e_mcp.rs
jeremylongshore added a commit to intent-solutions-io/buzz that referenced this pull request Aug 3, 2026
…pace

Both "Build public push gateway" jobs built successfully and then failed
on the very last step:

  block#29 ERROR: error writing layer blob: denied: permission_denied:
  The requested installation does not exist.

The image push is already correctly gated (`push=${{ github.event_name !=
'pull_request' }}`), but `cache-to` was hardcoded to
`ghcr.io/block/buzz-push-gateway-buildcache`. The GHCR login step
authenticates as `github.repository_owner` with the run's `GITHUB_TOKEN`,
so inside this fork that token can write `ghcr.io/intent-solutions-io/*`
and never `ghcr.io/block/*`. The existing guard only asks "is this a
same-repo PR rather than a fork PR" -- true here, since the branch lives
in intent-solutions-io/buzz -- so the export was attempted and denied.

Derived the buildcache ref from `github.repository_owner` so each org
writes the namespace it owns, and made `cache-from` read the org's own
cache first with block's public cache as fallback, so a fork's first
build is still warm. Upstream behaviour is unchanged: on block/buzz both
cache-from entries and the cache-to ref resolve to the same
`ghcr.io/block/...` value they did before.

Chose owner-derived cache refs over simply disabling the export on forks
because disabling it would leave every fork build uncached, and this
matches how the relay job in the same file already behaves (it routes
through the `IMAGE_NAME` / `vars.GHCR_IMAGE` override, which is why relay
builds pass here while only the gateway failed). Deliberately did NOT
touch the published image name or the `outputs:` line -- that would change
artifact identity upstream, which this PR has no business doing.

Verified: docker.yml parses as YAML and `actionlint docker.yml` is clean.
The export path itself can only be exercised by a real run, so this is
confirmed by CI on push, not locally.

Signed-off-by: jeremylongshore <jeremylongshore@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant