Shipwright — local-c203d2
app 6803901837 build local (none) version 44a53643-1738-43ea-ac1d-f5ea877519de state blocked trigger manual DRY-RUN
Stages
| intake | done | |
| metadata | done | |
| screenshots | done | |
| preflight | done | |
| submit | done | |
| watch | pending | |
Metadata (critique loop, 3 state writes)
| name | SnipStash: Clipboard Manager (28) |
|---|
| subtitle | Save Text, Code & Link Vault (28) |
|---|
| keywords | paste,template,draft,widget,shortcut,search,tag,organize,fast,tool,utility,storage,board,type,note (98) |
|---|
| promotionalText | Keep your most-copied links, code, and text templates at your fingertips. Tap to copy back instantly, use handy widgets, and stay 100% private with local storage. (162) |
|---|
description + review notes
Never lose a copied link, code snippet, or block of text again.
SnipStash is the ultimate local clipboard organizer that keeps your most-used text, URLs, code snippets, and files instantly accessible. Designed for developers, sales reps, support staff, and creators, it eliminates the frustration of searching through notes or messages to find that one piece of text you send daily.
Every snippet you copy into the app is safely stored in a clean, searchable vault. Need to reuse something? Simply tap any snippet inside the app to instantly copy it back to your active clipboard with a satisfying haptic confirmation. You can quickly add content directly from the iOS Share Sheet, or tap the smart banner that appears when you open the app with fresh clipboard items.
Organization is effortless. SnipStash utilizes fast on-device heuristics to automatically identify email addresses, phone numbers, URLs, and code blocks, applying smart tags and titles for you. You can pin frequently used items, organize them using custom color-coded tags, and quickly find exactly what you need with full-text search.
Boost your daily productivity further with integrated Home Screen widgets that copy pinned items with a single tap, plus Siri Shortcuts support to save or search your snippets hands-free. Start for free with up to 25 snippets, and upgrade to SnipStash Pro via a monthly subscription or a one-time lifetime purchase to unlock unlimited snippet storage.
Your clipboard is private. SnipStash operates completely offline using SwiftData on-device storage. No accounts are required, no data leaves your device, and there are absolutely no analytics trackers or third-party servers. Your information remains entirely yours.
Terms: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/ Privacy: https://byasb.com/snipstash/privacy
--- review notes ---
No demo account is required to test the app, as all data is stored locally on the device using SwiftData without any external server login.
Steps to test core features:
1. Launch the app. You will see 10 pre-seeded demo snippets populating the list.
2. Tap any snippet in the list. Observe the haptic feedback confirming the item has been copied back to your system clipboard.
3. Copy some text from outside the app, then re-open SnipStash. Tap the "Save clipboard?" banner at the top to save it locally without paste-permission prompts.
4. Go to Settings -> SnipStash Pro to view the StoreKit paywall. Verify that prices load successfully and the "Restore Purchases" button is fully functional.
5. To test the paywall trigger, add 26 snippets to prompt the upgrade option.
Screenshots (gradient)
Preflight — BLOCKED
VERDICT: BLOCKED (dry-run: fixes simulated, re-check skipped)
BLOCKING: contentRightsDeclaration unset (Auto-fix: Simulated)
BLOCKING: version.copyright empty (Auto-fix: Simulated)
BLOCKING: 2026 age-rating fields unanswered (Auto-fix: Simulated)
BLOCKING: No primary category (Auto-fix: Simulated)
BLOCKING: App has no price schedule (Auto-fix: Simulated)
BLOCKING: App availability unset (Auto-fix: Simulated)
BLOCKING: IAP com.utenx.snipstash.pro.lifetime is MISSING_METADATA: no review screenshot (Auto-fix: Simulated)
BLOCKING: Subscription com.utenx.snipstash.pro.monthly is MISSING_METADATA: no review screenshot (Auto-fix: Simulated)
BLOCKING: Review contact/notes missing (Auto-fix: Simulated)
BLOCKING: Version localization missing description, keywords, supportUrl (Auto-fix: Simulated)
BLOCKING: App-info localization missing subtitle, privacyPolicyUrl (Auto-fix: Simulated)
BLOCKING: No APP_IPHONE_67 screenshots (Auto-fix: Simulated)
BLOCKING: No build attached to the version (Auto-fix: Skipped - upload build first)
OPERATOR: Publish App Privacy questionnaire (one click)
OPERATOR: Answer 2026 'regulated medical device' banner (one click)
OPERATOR: Set Paid Applications Agreement, banking, and tax to Active (one click)
OPERATOR: Attach first subscription/IAP via the version page IAP dialog (one click)
WARNING: App Privacy questionnaire must be PUBLISHED (saved ≠ published)
WARNING: 2026 'regulated medical device' banner under App Information — answer No
WARNING: Paid Applications Agreement + banking + tax Active, else StoreKit returns 0 products
WARNING: First subscription/IAP attaches via the version page IAP dialog (reviewSubmissionItems rejects inAppPurchaseV2 in 2026)
No build attached to the version.
17 findings before auto-fix
| BLOCK | content_rights | contentRightsDeclaration unset — surfaces only at reviewSubmissionItems POST | fix_content_rights |
| BLOCK | copyright | version.copyright empty — hidden blocker at submit | fix_copyright |
| BLOCK | age_rating | 2026 age-rating fields unanswered: ['advertising', 'parentalControls', 'lootBox', 'healthOrWellnessTopics', 'ageAssurance', 'messagingAndChat', 'userGeneratedContent', 'gunsOrOtherWeapons'] | fix_age_rating |
| BLOCK | categories | no primary category | fix_categories |
| BLOCK | app_price | app has NO price schedule (new apps ship without one; required even for Free) | fix_app_price |
| BLOCK | app_availability | app availability unset — app would be sold nowhere | fix_app_availability |
| BLOCK | iap_readiness | IAP com.utenx.snipstash.pro.lifetime is MISSING_METADATA: no review screenshot | fix_iap_review_screenshot |
| BLOCK | iap_readiness | subscription com.utenx.snipstash.pro.monthly is MISSING_METADATA: no review screenshot | fix_sub_review_screenshot |
| BLOCK | review_details | review contact/notes missing: ['contactFirstName', 'contactLastName', 'contactPhone', 'contactEmail', 'notes'] (phone needs country code; notes = exact test steps) | fix_review_details |
| BLOCK | version_localization | version localization missing ['description', 'keywords', 'supportUrl'] | fix_metadata |
| BLOCK | version_localization | app-info localization missing ['subtitle', 'privacyPolicyUrl'] | fix_metadata |
| BLOCK | screenshots | no APP_IPHONE_67 screenshots (1320×2868 go here; APP_IPHONE_69 does not exist) | fix_screenshots |
| BLOCK | build | no build attached to the version | fix_attach_build |
| WARN | app_privacy | App Privacy questionnaire must be PUBLISHED (saved ≠ published) | operator |
| WARN | medical_device | 2026 'regulated medical device' banner under App Information — answer No | operator |
| WARN | paid_apps_agreement | Paid Applications Agreement + banking + tax Active, else StoreKit returns 0 products | operator |
| WARN | iap_draft_submission | first subscription/IAP attaches via the version page IAP dialog (reviewSubmissionItems rejects inAppPurchaseV2 in 2026) | operator |
Submission
{
"blocking": [
"contentRightsDeclaration unset \u2014 surfaces only at reviewSubmissionItems POST",
"version.copyright empty \u2014 hidden blocker at submit",
"2026 age-rating fields unanswered: ['advertising', 'parentalControls', 'lootBox', 'healthOrWellnessTopics', 'ageAssurance', 'messagingAndChat', 'userGeneratedContent', 'gunsOrOtherWeapons']",
"no primary category",
"app has NO price schedule (new apps ship without one; required even for Free)",
"app availability unset \u2014 app would be sold nowhere",
"IAP com.utenx.snipstash.pro.lifetime is MISSING_METADATA: no review screenshot",
"subscription com.utenx.snipstash.pro.monthly is MISSING_METADATA: no review screenshot",
"review contact/notes missing: ['contactFirstName', 'contactLastName', 'contactPhone', 'contactEmail', 'notes'] (phone needs country code; notes = exact test steps)",
"version localization missing ['description', 'keywords', 'supportUrl']",
"app-info localization missing ['subtitle', 'privacyPolicyUrl']",
"no APP_IPHONE_67 screenshots (1320\u00d72868 go here; APP_IPHONE_69 does not exist)",
"no build attached to the version"
],
"reason": "preflight BLOCKED",
"submitted": false
}Operator items
- App Privacy questionnaire must be PUBLISHED (saved ≠ published)
- 2026 'regulated medical device' banner under App Information — answer No
- Paid Applications Agreement + banking + tax Active, else StoreKit returns 0 products
- first subscription/IAP attaches via the version page IAP dialog (reviewSubmissionItems rejects inAppPurchaseV2 in 2026)
Events
| 19:16:08 | job created from manual |
| 19:16:09 | no build on this job — preparing the version without attaching a binary |
| 19:17:28 | preflight pass 1: 17 findings, verdict BLOCKED |
| 19:17:30 | auto-fix fix_metadata: ok |
| 19:17:31 | auto-fix fix_metadata: ok |
| 19:17:31 | auto-fix fix_content_rights: ok |
| 19:17:31 | auto-fix fix_copyright: ok |
| 19:17:31 | auto-fix fix_age_rating: ok |
| 19:17:31 | auto-fix fix_categories: ok |
| 19:17:33 | auto-fix fix_app_price: ok |
| 19:17:34 | auto-fix fix_app_availability: ok |
| 19:17:34 | auto-fix fix_review_details: ok |
| 19:17:35 | auto-fix fix_screenshots: ok |
| 19:17:35 | auto-fix fix_attach_build: ok |
| 19:17:35 | auto-fix fix_iap_review_screenshot: ok |
| 19:17:35 | auto-fix fix_sub_review_screenshot: ok |
| 19:18:00 | pipeline finished: blocked |