Polish the repo for public release - #8
Merged
Merged
Conversation
The README opened with a note about the state of the main branch and listed internal service classes as features - documentation for someone reading the source, not for someone who just downloaded the app. It now leads with what InputPilot does, how to install it, and why it needs Input Monitoring, with build and architecture notes moved below a divider. Adds CHANGELOG.md (1.0.0 and 1.0.1), SECURITY.md stating exactly what the app reads, stores and sends for a permission this sensitive, CONTRIBUTING.md including the traps we hit today (Xcode owns the TCC identity; changing KeyboardDeviceKey.id breaks existing mappings), and a feature request template. Moves the pre-release audit to docs/ with a note marking it historical, and documents the manual + fallback for Macs that do not populate the Input Monitoring list.
There was a problem hiding this comment.
Pull request overview
This PR polishes the repository for a public-facing release by rewriting the README for end users and adding/curating the standard project documentation expected for a shipped macOS app (privacy/security, changelog, contributing guidance, and issue templates).
Changes:
- Rewrites
README.mdwith install/use/troubleshooting guidance, badges, and a “Development” section. - Adds new repo docs (
SECURITY.md,CHANGELOG.md,CONTRIBUTING.md) and a feature request issue template. - Moves/labels the pre-release audit as a historical record under
docs/.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| SECURITY.md | Adds a security/privacy statement and vulnerability reporting guidance. |
| README.md | Replaces the README with an end-user-first install/use/troubleshooting guide plus development notes. |
| docs/pre-release-audit.md | Marks the audit as a historical record and updates cross-links. |
| CONTRIBUTING.md | Adds contributor guidance for setup, PR expectations, and key design constraints. |
| CHANGELOG.md | Introduces a changelog covering 1.0.0 and 1.0.1. |
| .github/ISSUE_TEMPLATE/feature_request.md | Adds a feature request issue template. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - the device that sent it (vendor ID, product ID, transport, product name, location) | ||
| - whether the key was a modifier | ||
|
|
||
| Nothing else leaves that callback. No key code, no character, no typed text exists anywhere in the app — not in memory, not on disk, not in the debug log. |
|
|
||
| Settings and keyboard mappings live in `UserDefaults`: which input source belongs to which keyboard, your fallbacks, the pause timestamp, and a schema migration flag. That is all. | ||
|
|
||
| The debug log is an in-memory ring buffer of at most 200 entries, holding device identifiers, permission state, input source names, and errors. It is never written to disk unless you explicitly export it, and export runs the text through a redaction pass that strips any field resembling key codes, typed text, characters, or app contents — defence in depth for a log that should never contain them in the first place. |
| - `Fallbacks`: global fallback and quick action to use current source | ||
| - `Conflicts`: invalid mappings with `Fix...` action | ||
| - `Keyboard Device Mappings`: mapping, per-device fallback, forget device | ||
| It never reads what you type. The HID callback extracts exactly two things — the device that sent the event, and whether the key was a modifier — and nothing else is kept. There is no key code, no character, no text, anywhere in the app. Nothing is sent off your Mac: the only network traffic is the update check, and the only third-party dependency is the Sparkle updater. |
| ## Development | ||
|
|
||
| Run tests: | ||
| Building from source needs **Xcode 26** or newer (the project uses the Xcode 16+ project format and a Swift 6.2 toolchain). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Now that 1.0.1 is out, the repository is the first thing a visitor sees. This makes it read like a released project rather than a work in progress.
README
Rewritten for the reader who just downloaded the app: what it does and why, install steps, the reason it needs Input Monitoring and what it does with that access, features in plain language, settings reference, and troubleshooting. Build instructions, architecture, testing and release notes moved below a divider under Development.
Adds badges (latest release, macOS version, CI, licence) and documents the manual + fallback for Macs that do not populate the Input Monitoring list — which we hit ourselves and which users will too.
New documents
KeyboardDeviceKey.idis the persisted mapping key so changing it silently breaks existing usersHousekeeping
AUDIT.md→docs/pre-release-audit.md, marked as a historical record so it is not mistaken for open workAll relative links verified to resolve.