From 0d45c4dfbfb43acadd18836c973995548d7dcaba Mon Sep 17 00:00:00 2001 From: Terry Yiu Date: Sun, 6 Apr 2025 20:49:25 -0400 Subject: [PATCH] Fork nostore and bump version to 2.0.0 --- .gitignore | 77 +++++++++++++++++++ Nostore.xcodeproj/project.pbxproj | 76 +++++++++--------- .../contents.xcworkspacedata | 2 +- .../xcschemes/xcschememanagement.plist | 29 ------- README.md | 31 +++----- Shared (App)/PrivacyPolicyView.swift | 2 +- Shared (App)/ViewController.swift | 2 +- Shared (Extension)/Resources/manifest.json | 2 +- iOS (Extension)/Info.plist | 2 - macOS (Extension)/Info.plist | 2 - 10 files changed, 131 insertions(+), 94 deletions(-) delete mode 100644 Nostore.xcodeproj/xcuserdata/ryan.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.gitignore b/.gitignore index 41a6b8b..3acfdff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,80 @@ +# macOS metadata files +.DS_Store + +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + node_modules/ *.build.js Shared (Extension)/Resources/options.build.css diff --git a/Nostore.xcodeproj/project.pbxproj b/Nostore.xcodeproj/project.pbxproj index df1b8a4..d151522 100644 --- a/Nostore.xcodeproj/project.pbxproj +++ b/Nostore.xcodeproj/project.pbxproj @@ -69,10 +69,6 @@ 944A6E04299F2FBB0032C2E3 /* experimental in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E02299F2FBB0032C2E3 /* experimental */; }; 944A6E05299F2FBB0032C2E3 /* experimental in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E02299F2FBB0032C2E3 /* experimental */; }; 944A6E06299F2FBB0032C2E3 /* experimental in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E02299F2FBB0032C2E3 /* experimental */; }; - 944A6E0E299F32070032C2E3 /* wizards in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E0D299F32070032C2E3 /* wizards */; }; - 944A6E0F299F32070032C2E3 /* wizards in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E0D299F32070032C2E3 /* wizards */; }; - 944A6E10299F32070032C2E3 /* wizards in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E0D299F32070032C2E3 /* wizards */; }; - 944A6E11299F32070032C2E3 /* wizards in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E0D299F32070032C2E3 /* wizards */; }; 944A6E13299F39D30032C2E3 /* permission in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E12299F39D30032C2E3 /* permission */; }; 944A6E14299F39D30032C2E3 /* permission in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E12299F39D30032C2E3 /* permission */; }; 944A6E15299F39D30032C2E3 /* permission in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E12299F39D30032C2E3 /* permission */; }; @@ -792,11 +788,12 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; - DEVELOPMENT_TEAM = 5SD834TD9W; + CURRENT_PROJECT_VERSION = 5; + DEVELOPMENT_TEAM = S99A5B637C; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "iOS (Extension)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "nostore Extension"; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -804,12 +801,12 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore.Extension; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore.Extension; PRODUCT_NAME = "Nostore Extension"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -823,11 +820,12 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; - DEVELOPMENT_TEAM = 5SD834TD9W; + CURRENT_PROJECT_VERSION = 5; + DEVELOPMENT_TEAM = S99A5B637C; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "iOS (Extension)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "nostore Extension"; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -835,12 +833,12 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore.Extension; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore.Extension; PRODUCT_NAME = "Nostore Extension"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -857,12 +855,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; - DEVELOPMENT_TEAM = 5SD834TD9W; + CURRENT_PROJECT_VERSION = 5; + DEVELOPMENT_TEAM = S99A5B637C; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "iOS (App)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = Nostore; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIRequiresFullScreen = YES; @@ -873,14 +871,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, "-framework", WebKit, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore; PRODUCT_NAME = Nostore; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -898,12 +896,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; - DEVELOPMENT_TEAM = 5SD834TD9W; + CURRENT_PROJECT_VERSION = 5; + DEVELOPMENT_TEAM = S99A5B637C; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "iOS (App)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = Nostore; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIRequiresFullScreen = YES; @@ -914,14 +912,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, "-framework", WebKit, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore; PRODUCT_NAME = Nostore; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -939,13 +937,14 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = "macOS (Extension)/nostore.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 5SD834TD9W; + DEVELOPMENT_TEAM = S99A5B637C; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "macOS (Extension)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "nostore Extension"; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSHumanReadableCopyright = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -953,12 +952,12 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore.Extension; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore.Extension; PRODUCT_NAME = "Nostore Extension"; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -972,13 +971,14 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = "macOS (Extension)/nostore.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 5SD834TD9W; + DEVELOPMENT_TEAM = S99A5B637C; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "macOS (Extension)/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "nostore Extension"; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSHumanReadableCopyright = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -986,12 +986,12 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore.Extension; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore.Extension; PRODUCT_NAME = "Nostore Extension"; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -1007,9 +1007,9 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "macOS (App)/nostore.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 5SD834TD9W; + DEVELOPMENT_TEAM = S99A5B637C; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Nostore--macOS--Info.plist"; @@ -1021,14 +1021,14 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, "-framework", WebKit, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore; PRODUCT_NAME = Nostore; SDKROOT = macosx; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1043,9 +1043,9 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "macOS (App)/nostore.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4.0.0; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 5SD834TD9W; + DEVELOPMENT_TEAM = S99A5B637C; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Nostore--macOS--Info.plist"; @@ -1057,14 +1057,14 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.2.0; + MARKETING_VERSION = 2.0.0; OTHER_LDFLAGS = ( "-framework", SafariServices, "-framework", WebKit, ); - PRODUCT_BUNDLE_IDENTIFIER = camp.ursus.nostore; + PRODUCT_BUNDLE_IDENTIFIER = xyz.tyiu.nostore; PRODUCT_NAME = Nostore; SDKROOT = macosx; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/Nostore.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Nostore.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a6b5ef9..919434a 100644 --- a/Nostore.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Nostore.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Nostore.xcodeproj/xcuserdata/ryan.xcuserdatad/xcschemes/xcschememanagement.plist b/Nostore.xcodeproj/xcuserdata/ryan.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 1e154e6..0000000 --- a/Nostore.xcodeproj/xcuserdata/ryan.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,29 +0,0 @@ - - - - - SchemeUserState - - Nostore (iOS).xcscheme_^#shared#^_ - - orderHint - 0 - - Nostore (macOS).xcscheme_^#shared#^_ - - orderHint - 1 - - nostore (iOS).xcscheme_^#shared#^_ - - orderHint - 1 - - nostore (macOS).xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/README.md b/README.md index a42de3c..37a7798 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Nostore -**WARNING**: This app is no longer in support. I haven't been a Nostr or Safari user for some time and no longer have the will to maintain this application. When the Apple developer license expires, this app will drop off the App Store. If anyone wishes to fork this app and restart it, you have my blessing. Sorry for any inconvenience. - -This is a [NIP-07][nip07] compatible extension for signing nostr events. +This is a [NIP-07][nip07] compatible extension for signing [nostr][nostr] events. ## Features @@ -11,16 +9,6 @@ This is a [NIP-07][nip07] compatible extension for signing nostr events. - Encrypted direct messages (`nip04.encrypt` and `nip04.decrypt`). - Multiple profiles. -## Installation - -Available at the official [Mac App Store](https://apps.apple.com/us/app/nostore/id1666553677). - -

- - App Store Download - -

- ## Usage Click the Nostore extension icon in the Safari toolbar, there should be a default profile with a new, random private key. @@ -29,7 +17,9 @@ Feel free to change the name and edit the key with your personal nostr key. Crea ## Acknowledgements -Thanks to fiatjiaf for envisioning nostr, but also for creating [nostr-tools][nostr-tools] and the [nos2x][nos2x] extension, which I referenced liberally when stumped during development of this extension. +Thanks to [ursuscamp][ursuscamp] for creating Nostore, which this project was forked at version 1.2.0 (c8458140e69dd30b35a31043daedcb88872a270e) and has since been archived. + +Thanks to [fiatjaf][fiatjaf] for envisioning nostr, but also for creating [nostr-tools][nostr-tools] and the [nos2x][nos2x] extension, which was referenced liberally when stumped during development of this extension. ## Privacy @@ -37,19 +27,22 @@ This extension does not collect any user data, or transmit any data over a netwo ## Development -1. Open the project in XCode. +1. Open the project in Xcode. 2. Open project folder in terminal. 3. Run `npm install` to install the dependencies. 4. Run `npm run watch` to watch and build the necessary extension files. 5. Run `npm run watch-tailwind` to watch and build the pages with tailwinds CSS. -6. After every rebuild, execute Run in XCode to deploy the latest changes to Safari. +6. After every rebuild, execute Run in Xcode to deploy the latest changes to Safari. If you do not see the Nostore extension in your Safari toolbar, you need to activate unsigned extensions and Nostore: -1. Safari menu -> Settings -> Advanced -> Show Develop menu in menu bar. -2. In Develop menu, select Allow Unsigned Extension. -3. Click Extension tab in Settings, activate Nostore. +1. Safari menu -> Settings -> Advanced -> Show features for web developers. +2. Click the Developer tab in Settings, select Allow unsigned extensions. +3. Click the Extensions tab in Settings, activate Nostore. +[nostr]: https://github.com/nostr-protocol +[ursuscamp]: https://github.com/ursuscamp +[fiatjaf]: https://github.com/fiatjaf [nip07]: https://github.com/nostr-protocol/nips/blob/master/07.md [nostr-tools]: https://github.com/nbd-wtf/nostr-tools [nos2x]: https://github.com/fiatjaf/nos2x diff --git a/Shared (App)/PrivacyPolicyView.swift b/Shared (App)/PrivacyPolicyView.swift index 8b1dbb4..c07385c 100644 --- a/Shared (App)/PrivacyPolicyView.swift +++ b/Shared (App)/PrivacyPolicyView.swift @@ -19,7 +19,7 @@ struct PrivacyPolicyView: View { You, the user, own your data. The developers of this app collect no data, anonymous or otherwise. -This code of this application is fully auditable and available on our [GitHub page](https://github.com/ursuscamp/nostore). +This code of this application is fully auditable and available on our [GitHub page](https://github.com/tyiu/nostore). """).multilineTextAlignment(.leading) }.padding(.all) } diff --git a/Shared (App)/ViewController.swift b/Shared (App)/ViewController.swift index 2f938ec..6b6ff49 100644 --- a/Shared (App)/ViewController.swift +++ b/Shared (App)/ViewController.swift @@ -16,7 +16,7 @@ import SafariServices typealias PlatformViewController = NSViewController #endif -let extensionBundleIdentifier = "camp.ursus.nostore.Extension" +let extensionBundleIdentifier = "xyz.tyiu.nostore.Extension" class ViewController: PlatformViewController, WKNavigationDelegate, WKScriptMessageHandler { diff --git a/Shared (Extension)/Resources/manifest.json b/Shared (Extension)/Resources/manifest.json index c15df40..2ff3675 100644 --- a/Shared (Extension)/Resources/manifest.json +++ b/Shared (Extension)/Resources/manifest.json @@ -3,7 +3,7 @@ "default_locale": "en", "name": "__MSG_extension_name__", "description": "__MSG_extension_description__", - "version": "1.0", + "version": "2.0.0", "icons": { "48": "images/icon-48.png", "96": "images/icon-96.png", diff --git a/iOS (Extension)/Info.plist b/iOS (Extension)/Info.plist index 56a3ef0..9ee504d 100644 --- a/iOS (Extension)/Info.plist +++ b/iOS (Extension)/Info.plist @@ -2,8 +2,6 @@ - ITSAppUsesNonExemptEncryption - NSExtension NSExtensionPointIdentifier diff --git a/macOS (Extension)/Info.plist b/macOS (Extension)/Info.plist index 56a3ef0..9ee504d 100644 --- a/macOS (Extension)/Info.plist +++ b/macOS (Extension)/Info.plist @@ -2,8 +2,6 @@ - ITSAppUsesNonExemptEncryption - NSExtension NSExtensionPointIdentifier