Skip to content

Commit 76980a2

Browse files
vveerrggclaude
andcommitted
docs: update CLAUDE.md and Apple submission guide for v1.5.6
- Updated version to v1.5.6, noted iOS + macOS pending review - Added Safari/App Store build commands and bundle ID info to CLAUDE.md - Updated screenshot section with correct dimensions and simulators - Added archive build procedure (xcodebuild archive from CLI) - Documented bundle ID alignment (com.nostrkey for both platforms) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 90c1e5e commit 76980a2

2 files changed

Lines changed: 87 additions & 20 deletions

File tree

CLAUDE.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ NostrKey browser extension — cross-browser Nostr key management, encrypted vau
77
NostrKey is **the hand that holds the baseball card**. It manages your private keys, signs events, encrypts data, and connects you to your NostrKeep relay and npub.bio identity. Free, open source (MIT), forked from ursuscamp/nostore.
88

99
## Current Version
10-
v1.5.5 — Live on Chrome Web Store, Android (Google Play), iOS (App Store submission in progress)
10+
v1.5.6 — Live on Chrome Web Store, Android (Google Play). iOS + macOS Safari submitted to App Store (pending review, 2026-03-03).
1111

1212
## Tech Stack
1313
- Vanilla JS (Alpine.js was removed)
@@ -49,13 +49,40 @@ NIP-01, NIP-04 (deprecated), NIP-07, NIP-19, NIP-44, NIP-46, NIP-49, NIP-78
4949
src/ # Extension source (JS, CSS, HTML)
5050
dev/apple/ # Xcode project (Safari/iOS wrapper)
5151
dev/qa/ # QA automation (screenshot capture/resize)
52+
dev/qa/screenshots/ # App Store screenshots (gitignored except HOWTO.md)
53+
HOWTO.md # Full screenshot capture procedure
54+
macos/ # 2560x1600 (8 screenshots)
55+
iphone/ # 1284x2778 (8 screenshots)
56+
ipad/ # 2048x2732 (8 screenshots)
5257
distros/ # Build output (gitignored)
5358
docs/ # Website, privacy, terms
59+
docs/test.html # Extension test page (nostrkey.com/test)
5460
docs_project_info/ # Project docs (testing, submission, vision)
5561
build.js # esbuild config
5662
tailwind.config.js # Tailwind config
5763
```
5864

65+
## Safari / App Store Build
66+
```bash
67+
# Archive for macOS
68+
xcodebuild archive -project dev/apple/NostrKey.xcodeproj \
69+
-scheme "NostrKey (macOS)" -configuration Release \
70+
-archivePath dev/qa/archives/NostrKey-macOS.xcarchive
71+
72+
# Archive for iOS
73+
xcodebuild archive -project dev/apple/NostrKey.xcodeproj \
74+
-scheme "NostrKey (iOS)" -configuration Release \
75+
-destination "generic/platform=iOS" \
76+
-archivePath dev/qa/archives/NostrKey-iOS.xcarchive
77+
78+
# Upload via Xcode Organizer → Distribute App → App Store Connect
79+
```
80+
81+
**Bundle IDs** (must match across platforms for unified listing):
82+
- App: `com.nostrkey`
83+
- Extension: `com.nostrkey.Extension`
84+
- Team: `H48PW6TC25`
85+
5986
## Architecture
6087
Extension uses background service worker + sidepanel UI. Mobile apps (iOS/Android) wrap this in dual-WebView architecture with native bridges (IOSBridge.swift / AndroidBridge.kt).
6188

docs_project_info/APPLE-APP-STORE-SUBMISSION.md

Lines changed: 59 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,41 @@ Apple requires you to declare data practices in App Store Connect. Select:
7979

8080
### Screenshots
8181

82-
#### macOS (required)
83-
- At least 1 screenshot
84-
- Recommended sizes: 2880x1800, 1280x800
85-
- Show: profile management, signing flow, vault, security settings
82+
Screenshots are captured showing the Safari extension on nostrkey.com/test.
83+
Full capture procedure in `dev/qa/screenshots/HOWTO.md`.
84+
Screenshots stored locally in `dev/qa/screenshots/` (gitignored).
8685

87-
#### iOS (required if supporting iPhone/iPad)
88-
- 6.7" display: 1290x2796
89-
- 6.5" display: 1284x2778 or 1242x2688
90-
- Show: popup interface, key management, permission dialog
86+
#### macOS (2560x1600) — 8 screenshots
87+
Captured by resizing Safari to 1280x800 via AppleScript, then `screencapture` + `sips` crop.
88+
```bash
89+
osascript -e 'tell application "Safari" to set bounds of front window to {0, 0, 1280, 800}'
90+
screencapture dev/qa/screenshots/macos/locked-vault.png
91+
sips --cropOffset 50 0 --cropToHeightWidth 1600 2560 dev/qa/screenshots/macos/locked-vault.png
92+
```
93+
94+
#### iPhone (1284x2778) — 8 screenshots
95+
Simulator: **iPhone 13 Pro Max** (ID: `1C222EE7-DC03-486E-8608-5B16310259E5`)
96+
```bash
97+
xcrun simctl io 1C222EE7 screenshot dev/qa/screenshots/iphone/locked-vault.png
98+
```
99+
100+
**WRONG simulators (rejected):** iPhone 17 Pro Max (1320x2868), iPhone 14 Pro Max (1290x2796).
101+
102+
#### iPad (2048x2732) — 8 screenshots
103+
Simulator: **iPad Pro 12.9-inch 6th gen** (ID: `D80D7F11-B50B-4169-81C4-3026C8538765`)
104+
```bash
105+
xcrun simctl io D80D7F11 screenshot dev/qa/screenshots/ipad/locked-vault.png
106+
```
107+
108+
#### Screenshot Set (same 8 screens on each platform)
109+
1. `locked-vault.png` — Extension locked, password prompt
110+
2. `unlocked-vault.png` — Profile with QR code
111+
3. `vault.png` — Encrypted Vault, API Keys, Nostr Keys
112+
4. `apps.png` — App permissions
113+
5. `relays.png` — Relay connections
114+
6. `settings.png` — Security, Sync, Advanced
115+
7. `signing-prompt.png` — Permission Request (Allow/Deny)
116+
8. `signed-event.png` — Signed event JSON result
91117

92118
### Preview Video (optional)
93119
- Up to 30 seconds
@@ -130,19 +156,33 @@ No account or login is needed — the extension generates keys locally.
130156
# 1. Build the Safari extension source
131157
npm run build:all
132158

133-
# 2. Open in Xcode
134-
open dev/apple/NostrKey.xcodeproj
135-
136-
# 3. In Xcode:
137-
# - Select "Any Mac" or "Any iOS Device" as destination
138-
# - Product → Archive
139-
# - Window → Organizer → Distribute App → App Store Connect
159+
# 2. Archive macOS
160+
xcodebuild archive \
161+
-project dev/apple/NostrKey.xcodeproj \
162+
-scheme "NostrKey (macOS)" \
163+
-configuration Release \
164+
-archivePath dev/qa/archives/NostrKey-macOS.xcarchive
165+
166+
# 3. Archive iOS
167+
xcodebuild archive \
168+
-project dev/apple/NostrKey.xcodeproj \
169+
-scheme "NostrKey (iOS)" \
170+
-configuration Release \
171+
-destination "generic/platform=iOS" \
172+
-archivePath dev/qa/archives/NostrKey-iOS.xcarchive
173+
174+
# 4. Upload via Xcode Organizer
175+
# Window → Organizer → select archive → Distribute App → App Store Connect
140176
```
141177

142-
### Signing
178+
### Signing & Bundle IDs
143179
- Requires Apple Developer certificate (distribution)
144-
- Bundle ID should match App Store Connect entry
145-
- Enable "Safari Web Extension" capability
180+
- Team ID: `H48PW6TC25`
181+
- **Bundle IDs must match across iOS and macOS for unified listing:**
182+
- App: `com.nostrkey` (both platforms)
183+
- Extension: `com.nostrkey.Extension` (both platforms)
184+
- Previously macOS used `com.nostrkey.plugin` — was changed to `com.nostrkey` on 2026-03-03
185+
- Automatic signing with "Apple Distribution: Humanjava Enterprises (H48PW6TC25)"
146186

147187
## Submission Checklist
148188

@@ -200,5 +240,5 @@ open dev/apple/NostrKey.xcodeproj
200240

201241
---
202242

203-
*Last updated: February 22, 2026*
243+
*Last updated: March 3, 2026*
204244
*Published by Humanjava Enterprises Inc*

0 commit comments

Comments
 (0)