Skip to content

docs: add CONTRIBUTING.md note on dev-signing permission resets#276

Open
MufeezQadri wants to merge 1 commit into
zachlatta:mainfrom
MufeezQadri:docs/dev-signing-permissions-note
Open

docs: add CONTRIBUTING.md note on dev-signing permission resets#276
MufeezQadri wants to merge 1 commit into
zachlatta:mainfrom
MufeezQadri:docs/dev-signing-permissions-note

Conversation

@MufeezQadri

@MufeezQadri MufeezQadri commented Jul 18, 2026

Copy link
Copy Markdown

Summary

  • Building from source signs the app ad-hoc by default (no matching CODESIGN_IDENTITY in the keychain). Ad-hoc signatures have no stable subject, so macOS invalidates Accessibility/Microphone/Screen Recording grants on every rebuild — the permission can silently stop applying even though System Settings may still show a stale entry for it.
  • Adds a CONTRIBUTING.md documenting the fix: create a local self-signed code-signing certificate named FreeFlow Dev (matching the Makefile's default CODESIGN_IDENTITY) so rebuilds keep a stable signing identity and macOS remembers permission grants across rebuilds.

Motivation

Hit this directly while building and running FreeFlow Dev from source — the dictation hotkey silently did nothing because Accessibility trust was reset by every rebuild. Documenting it so other contributors building from source don't have to re-diagnose the same thing.

Test plan

  • Verified locally: make clean && make with no signing identity present produces an ad-hoc-signed app (codesign -dv shows adhoc flag, hotkey does nothing after granting Accessibility).
  • Created a self-signed FreeFlow Dev Code Signing certificate, reran make clean && makecodesign -dv now shows Authority=FreeFlow Dev with no adhoc flag, and the Accessibility grant persists across a subsequent rebuild.
  • Maintainer review of doc placement/wording.

Summary by CodeRabbit

  • Documentation
    • Added contribution guidance for building and running the project locally.
    • Added macOS troubleshooting steps for managing permissions across rebuilds.
    • Documented how to create a stable development signing identity.

Building from source with the default ad-hoc signature causes macOS
to invalidate Accessibility/Microphone/Screen Recording grants on
every rebuild, since ad-hoc signatures have no stable identity. Add a
CONTRIBUTING.md explaining how to create a local self-signed
"FreeFlow Dev" code-signing certificate so rebuilds keep a stable
identity and permission grants persist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Added contribution documentation covering local project execution and macOS permission-reset troubleshooting caused by ad-hoc code signing.

Changes

Contribution Guidance

Layer / File(s) Summary
Local development and macOS troubleshooting
CONTRIBUTING.md
Adds make run instructions and steps for creating and verifying a stable FreeFlow Dev self-signed certificate on macOS.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PR’s main change: adding CONTRIBUTING.md guidance about dev-signing and macOS permission resets.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Line 13: Update the signing guidance in CONTRIBUTING.md to accurately state
that Makefile passes CODESIGN_IDENTITY directly to codesign and does not
automatically fall back to ad-hoc signing. Document the explicit
CODESIGN_IDENTITY=- invocation if ad-hoc signing is intended, or implement the
missing fallback in the Makefile.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: cc312a02-3396-403b-9ced-3df006ec467e

📥 Commits

Reviewing files that changed from the base of the PR and between 1de2c2f and 8dc8397.

📒 Files selected for processing (1)
  • CONTRIBUTING.md

Comment thread CONTRIBUTING.md

### Accessibility (or Microphone/Screen Recording) permission keeps disappearing after every rebuild

If you build from source without a matching signing identity in your keychain, `make` falls back to an ad-hoc signature. Ad-hoc signatures have no stable subject, so macOS treats every rebuild as a new, different app — any Accessibility/Microphone/Screen Recording grant you gave the previous build silently stops applying, even though System Settings may still show an old, now-stale entry.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
rg -n 'CODESIGN_IDENTITY|codesign|--sign' Makefile

Repository: zachlatta/freeflow

Length of output: 481


🏁 Script executed:

#!/bin/bash
set -eu
cat -n CONTRIBUTING.md | sed -n '1,40p'
echo
rg -n 'ad-hoc|CODESIGN_IDENTITY\s*=\s*-|fallback.*ad-hoc|codesign.*sign' .

Repository: zachlatta/freeflow

Length of output: 3014


Clarify the signing behavior here. Makefile passes CODESIGN_IDENTITY straight to codesign; it does not automatically switch to ad-hoc signing when the identity is missing. If ad-hoc is intended, document the explicit CODESIGN_IDENTITY=- path or add that fallback in Makefile.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` at line 13, Update the signing guidance in CONTRIBUTING.md
to accurately state that Makefile passes CODESIGN_IDENTITY directly to codesign
and does not automatically fall back to ad-hoc signing. Document the explicit
CODESIGN_IDENTITY=- invocation if ad-hoc signing is intended, or implement the
missing fallback in the Makefile.

Source: MCP tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant