Skip to content

macOS: enable network.client entitlement so account sync works#11

Merged
JacobStephens2 merged 1 commit into
mainfrom
fix/macos-network-entitlement-sync
Jun 7, 2026
Merged

macOS: enable network.client entitlement so account sync works#11
JacobStephens2 merged 1 commit into
mainfrom
fix/macos-network-entitlement-sync

Conversation

@JacobStephens2

Copy link
Copy Markdown
Owner

Problem

On macOS the account / listening-time sync feature silently fails: every action ("Email me a link", sign in, sync, delete) ends in Couldn't send the sign-in link. even though the sync server is healthy.

Root cause: the macOS target hard-set the sandbox entitlement

com.apple.security.network.client: false   # "this app never reaches the network"

which was correct for the original white-noise-only app. The listening-time account + sync feature (#7/#8) was added later but this entitlement was never re-enabled, so the App Sandbox blocks every outbound URLSession request. This is the macOS counterpart of the Android INTERNET-permission bug fixed in #10 — the macOS side was missed.

Fix

Set com.apple.security.network.client: true in project.yml and regenerate CascadeMac/Cascade.entitlements. One-line capability flip; no code changes.

Verification

Built from this branch and driven through the real UI against the live sync.cascade.stephens.page:

Step Before After
Request magic link "Couldn't send the sign-in link." ✅ "Check …@… for a sign-in link."
Verify / sign in ✅ Signed in
Cross-device sync pull ✅ Lifetime listening pulled server total (2h 04m)
Delete data ✅ App + server reset to 0
Delete account ✅ Signed out; session token now 401

🤖 Generated with Claude Code

The macOS app set `com.apple.security.network.client: false` ("this app
never reaches the network") — correct for the original white-noise-only
build. The listening-time account/sync feature (the magic-link sign-in +
G-Counter sync to cascade-sync-server) was added afterwards but the
sandbox entitlement was never re-enabled, so under the App Sandbox every
outbound URLSession call fails silently and the UI just shows
"Couldn't send the sign-in link."

Flip the entitlement to true (and regenerate Cascade.entitlements). This
is the macOS counterpart of the Android INTERNET-permission fix (#10).

Verified end-to-end on macOS after the change: magic-link request,
verify/sign-in, cross-device sync pull, delete-data, and delete-account
all work against the live sync server.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@JacobStephens2 JacobStephens2 merged commit 6684089 into main Jun 7, 2026
1 check passed
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