Skip to content

Polish the repo for public release - #8

Merged
LucaGerlich merged 1 commit into
mainfrom
docs/public-polish
Aug 18, 2026
Merged

Polish the repo for public release#8
LucaGerlich merged 1 commit into
mainfrom
docs/public-polish

Conversation

@LucaGerlich

Copy link
Copy Markdown
Owner

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

  • CHANGELOG.md — 1.0.0 and 1.0.1, including the audit fixes that landed before the first release
  • SECURITY.md — exactly what the app reads, stores and transmits, plus the supply chain and how to report a vulnerability privately. Warranted for an app that asks for Input Monitoring
  • CONTRIBUTING.md — setup, PR expectations, and the traps that cost us time today: Xcode owns the TCC identity when it launches the app, and KeyboardDeviceKey.id is the persisted mapping key so changing it silently breaks existing users
  • Feature request issue template

Housekeeping

  • AUDIT.mddocs/pre-release-audit.md, marked as a historical record so it is not mistaken for open work
  • Repository topics and homepage set on GitHub

All relative links verified to resolve.

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.
Copilot AI lite review requested due to automatic review settings August 18, 2026 19:09
@LucaGerlich
LucaGerlich merged commit 9ab0f85 into main Aug 18, 2026
2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.md with 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.

Comment thread SECURITY.md
- 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.
Comment thread SECURITY.md

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.
Comment thread README.md
- `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.
Comment thread README.md
## 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).
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.

2 participants