aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/app/src/fcm/AndroidManifest.xml6
-rw-r--r--android/app/src/main/res/values/strings.xml2
-rw-r--r--android/app/src/webview/AndroidManifest.xml6
-rw-r--r--src/features/nostrlogin.js5
4 files changed, 18 insertions, 1 deletions
diff --git a/android/app/src/fcm/AndroidManifest.xml b/android/app/src/fcm/AndroidManifest.xml
index 71e75b9..640056c 100644
--- a/android/app/src/fcm/AndroidManifest.xml
+++ b/android/app/src/fcm/AndroidManifest.xml
@@ -16,6 +16,12 @@
android:theme="@style/AppTheme"
android:supportsRtl="true"
android:usesCleartextTraffic="false">
+ <!-- the app's half of the association with v3.coinos.io (the site's half
+ is its assetlinks.json): passkeys for the site work in this app only
+ when both name each other -->
+ <meta-data
+ android:name="asset_statements"
+ android:resource="@string/asset_statements" />
<activity
android:name="io.coinos.app.MainActivity"
android:exported="true"
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 8132a82..77fa055 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -12,7 +12,7 @@
<!-- must match the site's /.well-known/assetlinks.json for URL-bar-less TWA -->
<string name="asset_statements">
[{
- \"relation\": [\"delegate_permission/common.handle_all_urls\"],
+ \"relation\": [\"delegate_permission/common.handle_all_urls\", \"delegate_permission/common.get_login_creds\"],
\"target\": { \"namespace\": \"web\", \"site\": \"https://v3.coinos.io\" }
}]
</string>
diff --git a/android/app/src/webview/AndroidManifest.xml b/android/app/src/webview/AndroidManifest.xml
index 0942377..85a6f95 100644
--- a/android/app/src/webview/AndroidManifest.xml
+++ b/android/app/src/webview/AndroidManifest.xml
@@ -14,6 +14,12 @@
android:theme="@style/AppTheme"
android:supportsRtl="true"
android:usesCleartextTraffic="false">
+ <!-- the app's half of the association with v3.coinos.io (the site's half
+ is its assetlinks.json): passkeys for the site work in this app only
+ when both name each other -->
+ <meta-data
+ android:name="asset_statements"
+ android:resource="@string/asset_statements" />
<activity
android:name="io.coinos.app.MainActivity"
android:exported="true"
diff --git a/src/features/nostrlogin.js b/src/features/nostrlogin.js
index 1c227c3..a4cfa24 100644
--- a/src/features/nostrlogin.js
+++ b/src/features/nostrlogin.js
@@ -364,6 +364,11 @@ export function nostrLoginFeature(ctx) {
await run(() => keySigner(sk));
} catch (e) {
if (/derive a wallet key/.test(e.message) || e.message === pass.LOCK_PASSKEY) { ui.nostrLoginError = e.message; render(); return; }
+ // Only "no passkey here" (NotAllowedError, as browsers report it) rolls
+ // into creating one; anything else is a failure to show, not a reason
+ // to make a second passkey (the Beta's "RP ID cannot be validated" went
+ // on to fail a create too, 2026-11-06).
+ if (e && e.name && e.name !== 'NotAllowedError') { ui.nostrLoginError = e.message || String(e); render(); return; }
try {
const sk = await pass.passkeyCreate();
await run(() => keySigner(sk));