feat(aasa): add applinks block for Universal Links#11
Merged
Conversation
Adds the `applinks` block to the existing AASA file so iOS recognizes `https://roadflare.app/share/d/<npub>` and `/share/r/<npub>` URLs as deep-link targets for the RoadFlare app (App ID 6Y98438M9X.com.roadflare.RoadFlare). The existing `webcredentials` integration (Sign in with Apple Passwords) is preserved unchanged. This is the production prerequisite for [variablefate/roadflare-ios#113](variablefate/roadflare-ios#113) — the `applinks:roadflare.app` entitlement is a no-op until Apple's CDN can fetch a valid AASA from this domain. Once this lands and the next App Store build ships, tapping a roadflare.app share URL anywhere on iOS (Messages, Mail, etc.) opens the app directly with the Add Driver sheet pre-filled, with the share page as the natural fallback when the app isn't installed. ## Path components - `/share/d/*` — driver share. Routes to the iOS `Add Driver` flow via the existing `AppState.handleIncomingUserActivity` handler. - `/share/r/*` — rider share. Same routing today (parser is npub-segment-agnostic); scope reserved here for when a dedicated rider-side iOS surface ships. Other paths on roadflare.app (`/`, `/privacy`, `/terms`, etc.) remain web-only — they are not in the `components` filter and will continue to open in Safari as expected. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Owner
Author
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
AASA components evaluate first-match-wins in array order. Modern `components` `*` wildcard semantics are ambiguously documented for `/` handling, so be explicit: prepend exclude rules for any path deeper than the single npub segment (e.g. `/share/d/foo/bar`), which the site doesn't render anyway. Defensive — the iOS app's `DriverQRCodeParser` already no-ops on non-npub URLs, so the prior overcapture risk was a graceful silent failure. This makes the AASA spell out the intended scope instead of leaning on Apple's wildcard interpretation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Production prerequisite for variablefate/roadflare-ios#113 (Universal Links). Adds the `applinks` block to the existing `.well-known/apple-app-site-association` so iOS recognizes share URLs as deep-link targets.
Diff
```diff
{
"webcredentials": {
"apps": [
"6Y98438M9X.com.roadflare.RoadFlare"
]
}
}
```
Single file, 11 insertions, 0 deletions. `webcredentials` block (Sign in with Apple Passwords) preserved unchanged.
App ID confirmed
Team ID `6Y98438M9X` + Bundle ID `com.roadflare.RoadFlare` matches:
Path scope
Serving
GitHub Pages serves `.well-known/` files at the right URL with `Content-Type: application/json` by default (no MIME-type alias needed for the AASA's extensionless name). The repo already has a `.nojekyll` file, so the `.well-known/` directory isn't filtered by Jekyll. Confirmed the existing webcredentials AASA is reachable today, which validates the serving pipeline.
Verification (after merge + DNS propagation)
Apple's CDN caches AASA aggressively. Existing installs may need `Settings → Developer → Associated Domains Development` to re-fetch during testing; new installs pull fresh.
🤖 Generated with Claude Code