free-claude-code/scripts
Ali Khokhar c5239619be
Some checks are pending
Post merge / Warm dependency cache (ubuntu-latest) (push) Waiting to run
Post merge / Warm dependency cache (windows-latest) (push) Waiting to run
Post merge / Warm dependency cache (macos-26) (push) Waiting to run
Post merge / Warm dependency cache (macos-26-intel) (push) Waiting to run
Post merge / Warm dependency cache (macos-latest) (push) Waiting to run
Post merge / Publish to PyPI (push) Waiting to run
patch: Fix macOS app menu-bar launch identity (#2095)
## Why

Fixes #2092. Launching the macOS app through its shell wrapper replaces
the app executable with Python. AppKit then sees Python's bundle instead
of Free Claude Code, and the menu-bar item can have a zero-height window
even though pystray reports it visible.

## How

- Run the installed uv-managed Python runtime inside a native app
executable, preserving the app's bundle identity and main thread. Enable
UTF-8 and retain the tool environment for imports and child processes.
- Build arm64 and x86_64 launchers during release staging and include
both in the existing wheel and source distribution. Select the launcher
matching the installed Python architecture.
- Create and ad-hoc sign the app through a Python installer helper.
Validate its runtime, stage replacements, preserve foreign apps and
Desktop entries, and recognize existing FCC ownership markers during
upgrades and uninstall.
- Add native macOS coverage for bundle identity, visible menu-bar
geometry, server lifecycle, duplicate launches, child processes, and
reinstall. Add Windows and Linux source-distribution rebuild checks and
require these jobs in CI.




<!-- greptile_comment -->

<!-- greptile_summary -->

<h2><a
href="https://app.greptile.com/api/retrigger?id=81926736"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/RetriggerDark.svg?v=2"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"><img
alt="Retrigger"
src="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"
align="right"></picture></a><a
href="https://app.greptile.com/alishahryar1/github/Alishahryar1/free-claude-code/-/pull/2095"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/ViewInGreptileDark.svg?v=2"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/ViewInGreptile.svg?v=2"><img
alt="View in Greptile"
src="https://greptile-static-assets.s3.amazonaws.com/badges/ViewInGreptile.svg?v=2"
align="right"></picture></a>Confidence Score: 5/5</h2>

<!-- greptile-impact-verdict --> No outstanding findings prevent
merging.

<details open><summary><h3>Summary</h3></summary>

The PR replaces the macOS shell launcher with a native executable that
keeps Free Claude Code's app identity while running its installed Python
environment.
- The macOS app keeps its identity while running the desktop app.
- Release packages carry native launchers for both Mac architectures.
- CI checks the native Mac app on Intel and Apple silicon.
</details>

<!-- greptile_confidence_score:5 -->

<sub>Reviews (2) · Last reviewed commit: ["Restore POSIX uv reuse
regression
covera..."](b50bb8449e)
· [Reviewed by
Greptile](https://www.greptile.com/?utm_source=greptile_review&utm_medium=github&utm_campaign=review_public&utm_content=alishahryar1/free-claude-code)</sub>

<!-- /greptile_comment -->
2026-10-15 18:24:22 -07:00
..
macos patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
update patch: bind updates to the selected FCC release (#2076) 2026-10-14 01:12:13 -07:00
build_macos_launcher.py patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
check_version_policy.py patch: Automate release versions and GitHub Releases (#1903) 2026-09-25 14:21:55 -07:00
ci.ps1 patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
ci.sh patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
ci_shards.py patch: add configurable pytest and Playwright CI shards (#2068) 2026-10-12 21:23:29 -07:00
install-muse.ps1 Fix Windows Muse installation with empty PATH entries (#1729) 2026-09-08 22:50:06 -07:00
install.ps1 patch: bind updates to the selected FCC release (#2076) 2026-10-14 01:12:13 -07:00
install.sh patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
publish_release.py patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
uninstall-muse.ps1 Fix Windows Muse installation with empty PATH entries (#1729) 2026-09-08 22:50:06 -07:00
uninstall.ps1 patch: Add fcc-doctor and simplify bug reports (#1906) 2026-09-25 21:00:15 -07:00
uninstall.sh patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00
validate_release.py patch: Fix macOS app menu-bar launch identity (#2095) 2026-10-15 18:24:22 -07:00