Skip to content

Repository files navigation

FullKeyboardAccess

A demo iOS app for testing Full Keyboard Access (FKA). It mirrors the top-level tabs of the production Emergency app, with no real data — every row is hardcoded. Three uses:

  1. Reproducing FKA bugs in isolation from production complexity.
  2. Prototyping new FKA patterns (e.g. FocusHaloLayer variants, FKAButton) before upstreaming.
  3. Serving as a clean reference app the team can run.

Get the project

Two ways to get this repo onto your Mac without learning Git:

  • Easiest: install Claude Code (see Setting up Claude Code below), then ask Claude to grab the project: "Download the FullKeyboardAccess GitHub repo into ~/{your_local_directory}." Claude checks whether your Mac has git and uses git clone if so; otherwise it falls back to curl + unzip (both built into macOS by default). No git knowledge required.
  • No-tools alternative: on the GitHub repo page, click the green Code button → Download ZIP, then unzip wherever you like. You won't get future updates — re-download when needed.

Compatibility

Xcode 26.x or newer required. One target deploys to iOS 26.2 for the cell-skip bug repro, so the iOS 26 SDK is non-negotiable. Check your Xcode version:

xcodebuild -version

Don't have Xcode 26.x? Install or update via the Mac App Store (free with an Apple ID).

Point releases (26.0, 26.1, 26.2, …) all work — ThunderTable is a local Swift package built from source, so Swift module-compatibility issues across Xcode versions don't apply.

Setting up Claude Code

If you've never used Claude Code before:

  1. Install it. Most 3SC teammates already have Claude Code installed — skip if you do. Two options:

    • Desktop app (easiest if you're not comfortable in Terminal): download from claude.com/claude-code — Mac and Windows builds.
    • Terminal (CLI): run npm install -g @anthropic-ai/claude-code, then run claude in any folder.
  2. Sign in. Skip if you're already signed in to Claude Code. On first launch, Claude Code will open your browser to authenticate with your Anthropic account.

  3. Open this project. Point Claude Code at the repo folder:

    • Desktop app: choose the FullKeyboardAccess folder when prompted.
    • CLI: cd into this repo, then run claude.

Claude reads CLAUDE.md automatically at the start of every session here, so it already knows the project's build setup, conventions, and what you can ask for. You don't need to paste any setup instructions yourself.

Working with Claude Code

Once Claude Code is running in this repo, paste any of these prompts to get started:

  • "Build and run the app on a simulator."
  • "Verify focus order on the Locations tab."
  • "Reproduce the iOS 26 cell-skip bug."

Claude handles xcodebuild, simulator selection, keystroke injection, and screenshots for you. See CLAUDE.md for the full phrasebook and rules.

Permission prompts you'll see

Claude Code asks for your permission the first time it runs any command. The commands you'll see most often in this repo are all safe to approve for QA work on your own Mac:

Command What it does
xcodebuild … Compiles the iOS app. Local-only; just produces build artifacts.
xcrun simctl … Controls the iOS Simulator (boot, install, launch, screenshot). Local-only.
open -a Simulator Opens or focuses the iOS Simulator app. Harmless.
osascript … Sends keystrokes to the frontmost app (Claude brings the Simulator forward first).
git … Runs Git operations (clone, checkout, status, etc.). Local-only by default.
curl … Downloads files from URLs (used to grab the repo as a ZIP).
unzip … Extracts ZIP archives.

If you see any other command you're not sure about, paste it back to Claude and ask "is this safe?" — Claude will explain before running it.

Enabling Full Keyboard Access in the Simulator

Walkthrough video: docs/fka-setup.mp4. Or follow the steps below.

CleanShot.2026-05-25.at.04.34.02.-.01.mp4

  1. Launch the iOS Simulator (open -a Simulator).
  2. Inside the simulator: Settings → Accessibility → Keyboards → Full Keyboard Access → toggle ON.
  3. (Optional) If pressing Ctrl+Tab doesn't move focus between elements, your Mac isn't forwarding the Ctrl key to the Simulator. Fix: in the same Full Keyboard Access screen, open Commands → Move to next item and re-record the shortcut as Option+Tab.

Run on an iOS 26.x simulator runtime — current FKA work targets that OS.

For the full verification procedure (keystroke injection, screenshots), see FKA_VERIFICATION.md.

Troubleshooting

Symptom Cause / fix
"Cannot open project / unsupported version" in Xcode Your Xcode is below 26.x. Upgrade.
No such module 'ThunderTable' SPM didn't resolve. In Xcode: File → Packages → Reset Package Caches, or close and reopen the project.
Simulator keystrokes do nothing during FKA verification Full Keyboard Access isn't enabled in the Simulator (re-check the steps above).

Key files

  • CLAUDE.md — project guide read by Claude Code at every session start.
  • FKA_PATTERNS.md — comprehensive FKA pattern catalog.
  • FKA_VERIFICATION.md — keystroke + screenshot verification procedure.
  • docs/superpowers/specs/ — active design specs for the tab-port work.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages