Files
mac/.claude/handoffs/2026-09-15-200354-kitty-titlebar-fix.md
Mortdecai dc29b7a087 docs: session handoff — kitty titlebar fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 20:04:37 -04:00

6.1 KiB

Handoff: kitty titlebar fix (mac)

Session Metadata

  • Created: 2026-09-15 20:03:54
  • Project: /home/claude/bin/mac
  • Branch: master
  • Session duration: ~10 min

Recent Commits (for context)

  • 3399829 fix(kitty): keep macOS titlebar — it's the only drag handle; color it to match bg
  • d86ede0 docs: session handoff — mac base setup shipped & verified
  • 617fc78 docs: reconcile CLAUDE.md/DECISIONS with what shipped (sudo approach, rrsync, set -e lessons)
  • d622cf6 fix: chmod 600 the ssh Include file (ssh rejects group-writable config)
  • d7205a9 fix: pass pubkey to tank-side.sh via env, not ssh command arg

Handoff Chain

Review the previous handoff for full context before filling this one.

Current State Summary

Short follow-up to the base-setup session. Seth reported kitty on the MacBook had no title bar and no way to move the window. Root cause: config/kitty.conf carried hide_window_decorations titlebar-only (from the plan) plus a leftover hide_window_decorations yes inherited verbatim from ~/bin/kitty-web/config/kitty.conf (where Xpra provides the frame). On macOS the title bar is the only drag handle; Rectangle snaps but doesn't free-drag. Fixed by deleting the yes line and replacing titlebar-only with macos_titlebar_color background so the bar stays but is painted #0a0a0a. Synced to the Mac, committed, pushed. Seth still needs to Cmd+Q/relaunch kitty (decoration changes don't hot-reload). Everything from the previous handoff's Pending Work is still pending and unchanged.

Codebase Understanding

Architecture Overview

Unchanged from previous handoff. Relevant slice: config/kitty.conf in the repo is included by ~/.config/kitty/kitty.conf on the Mac, and the repo is rsynced to ~/mac/ — so a one-file fix is rsync -a config/kitty.conf mac:mac/config/kitty.conf (no need for the full run.sh, which installs/removes the temp sudoers drop-in).

Critical Files

File Purpose Relevance
config/kitty.conf kitty config, included on the Mac macOS section at the bottom; last-write-wins, so watch for Linux leftovers above it
config/.backup/kitty.conf.* pre-edit copy per global backup rule
docs/manual-checklist.md Seth's GUI steps still the remaining work

Key Patterns Discovered

  • config/kitty.conf was copied from ~/bin/kitty-web/ — audit any other Linux/Xpra-specific lines before assuming they make sense on macOS.
  • kill -USR1 $(pgrep -x kitty) reloads kitty config remotely, but window-decoration options only apply on relaunch.

Work Completed

Tasks Finished

  • Diagnosed missing titlebar -> hide_window_decorations
  • Fixed config/kitty.conf, rsynced to Mac, SIGUSR1 reload sent
  • Committed + pushed (fix(kitty): keep macOS titlebar ...)

Files Modified

File Changes Rationale
[no modified files detected]

Decisions Made

Decision Options Considered Rationale
Keep titlebar, paint it background (a) hide_window_decorations no stock bar; (b) keep hidden + global NSWindowShouldDragOnGesture (Ctrl+Cmd+drag anywhere); (c) chosen (c) keeps drag + traffic lights with a flat look; (b) is a global defaults change on the DAW box — untested against Live's modifier-drag shortcuts, so deferred

Pending Work

Immediate Next Steps

  1. Seth: Cmd+Q and relaunch kitty on the Mac; confirm the bar is there and matches the bg.
  2. Resume previous handoff's list: hand Seth docs/manual-checklist.md, install Ableton Live 12, re-run scripts/run.sh --no-tank so the Dock picks up Live.
  3. Audio interface + 15-min AC session test with DAW Focus on (see previous handoff).

Blockers/Open Questions

  • None new. Carried: S4 MK1 macOS controller support unverified; FileVault ON kills ssh mac after reboot until password typed at lid.

Deferred Items

  • defaults write -g NSWindowShouldDragOnGesture -bool true (Linux Alt+drag equivalent) — only if Seth wants the bar gone again; global, so verify against Live first and add it to setup.sh with a defaults backup, not by hand.
  • Carried from previous: SparkFun PPP service, Tailscale GUI login, AeroSpace tiling.

Context for Resuming Agent

Important Context

This session changed ONE repo file and nothing else on the Mac. Read 2026-09-15-194209-mac-setup-shipped.md for the real state of the machine — base setup is DONE and verified; do not reconfigure. If Seth reports kitty still has no bar, he hasn't relaunched it yet (reload via SIGUSR1 does not apply decoration changes). If ssh mac fails, suspect a FileVault reboot first.

Assumptions Made

  • kitty 0.48.2 on the Mac honours macos_titlebar_color background (option has existed for years; not visually verified from steel141).
  • Seth wants a movable window more than a bar-less look (he reported the missing bar as a problem, not the bar as noise).

Potential Gotchas

  • kitty config is last-write-wins: a Linux-section hide_window_decorations yes silently overrides nothing only because a later macOS line existed. Check for other duplicated keys before editing.
  • Don't run full run.sh for a config-only tweak; rsync the file.

Environment State

Tools/Services Used

  • ssh mac (192.168.0.94, key auth). kitty 0.48.2 via Homebrew cask. gitea push.

Active Processes

  • kitty running on the Mac (needs relaunch). Backup launchd agent + sanoid unchanged from previous handoff.

Environment Variables

  • None used this session. (HOMELAB_PASSWORD still needed for run.sh.)
  • Previous handoff: .claude/handoffs/2026-09-15-194209-mac-setup-shipped.md (authoritative for machine state)
  • DECISIONS.md, docs/manual-checklist.md, docs/plans/2026-09-15-mac-setup-plan.md (Task 1 step 3 is where titlebar-only came from)

Security Reminder: Before finalizing, run validate_handoff.py to check for accidental secret exposure.