diff --git a/Nostore--macOS--Info.plist b/Nostore--macOS--Info.plist
new file mode 100644
index 0000000..0c67376
--- /dev/null
+++ b/Nostore--macOS--Info.plist
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Nostore.xcodeproj/project.pbxproj b/Nostore.xcodeproj/project.pbxproj
index 9b79922..80646da 100644
--- a/Nostore.xcodeproj/project.pbxproj
+++ b/Nostore.xcodeproj/project.pbxproj
@@ -7,12 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
- 941B03B3296FA90400CA291E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941B03B2296FA90400CA291E /* AppDelegate.swift */; };
- 941B03B5296FA90400CA291E /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941B03B4296FA90400CA291E /* SceneDelegate.swift */; };
- 941B03B8296FA90400CA291E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 941B03B6296FA90400CA291E /* LaunchScreen.storyboard */; };
- 941B03BB296FA90400CA291E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 941B03B9296FA90400CA291E /* Main.storyboard */; };
- 941B03C4296FA90400CA291E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941B03C3296FA90400CA291E /* AppDelegate.swift */; };
- 941B03C7296FA90400CA291E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 941B03C5296FA90400CA291E /* Main.storyboard */; };
941B03CE296FA90400CA291E /* Nostore Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 941B03CD296FA90400CA291E /* Nostore Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
941B03D8296FA90400CA291E /* Nostore Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 941B03D7296FA90400CA291E /* Nostore Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
941B03DE296FA90400CA291E /* Main.html in Resources */ = {isa = PBXBuildFile; fileRef = 941B0399296FA90300CA291E /* Main.html */; };
@@ -71,30 +65,32 @@
941B04342978CDF900CA291E /* Icon-16.png in Resources */ = {isa = PBXBuildFile; fileRef = 941B042F2978CDF900CA291E /* Icon-16.png */; };
941B04352978CDF900CA291E /* Icon-64.png in Resources */ = {isa = PBXBuildFile; fileRef = 941B04302978CDF900CA291E /* Icon-64.png */; };
941B04362978CDF900CA291E /* Icon-64.png in Resources */ = {isa = PBXBuildFile; fileRef = 941B04302978CDF900CA291E /* Icon-64.png */; };
- 944A6DD32988BA200032C2E3 /* permission.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD22988BA200032C2E3 /* permission.html */; };
- 944A6DD42988BA200032C2E3 /* permission.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD22988BA200032C2E3 /* permission.html */; };
- 944A6DD62988BD230032C2E3 /* permission.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD52988BD230032C2E3 /* permission.js */; };
- 944A6DD72988BD230032C2E3 /* permission.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD52988BD230032C2E3 /* permission.js */; };
- 944A6DD92988D7900032C2E3 /* permission.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD82988D7900032C2E3 /* permission.build.js */; };
- 944A6DDA2988D7900032C2E3 /* permission.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DD82988D7900032C2E3 /* permission.build.js */; };
- 944A6DE02991DFC60032C2E3 /* delegation_wizard.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DDC2991DFC60032C2E3 /* delegation_wizard.build.js */; };
- 944A6DE12991DFC60032C2E3 /* delegation_wizard.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DDC2991DFC60032C2E3 /* delegation_wizard.build.js */; };
- 944A6DE22991DFC60032C2E3 /* delegation_wizard.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DDD2991DFC60032C2E3 /* delegation_wizard.js */; };
- 944A6DE32991DFC60032C2E3 /* delegation_wizard.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DDD2991DFC60032C2E3 /* delegation_wizard.js */; };
- 944A6DE52991E4550032C2E3 /* delegation_wizard.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE42991E4550032C2E3 /* delegation_wizard.html */; };
- 944A6DE62991E4550032C2E3 /* delegation_wizard.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE42991E4550032C2E3 /* delegation_wizard.html */; };
- 944A6DEA299682EF0032C2E3 /* experimental.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE7299682EF0032C2E3 /* experimental.html */; };
- 944A6DEB299682EF0032C2E3 /* experimental.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE7299682EF0032C2E3 /* experimental.html */; };
- 944A6DEC299682EF0032C2E3 /* experimental.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE8299682EF0032C2E3 /* experimental.js */; };
- 944A6DED299682EF0032C2E3 /* experimental.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE8299682EF0032C2E3 /* experimental.js */; };
- 944A6DEE299682EF0032C2E3 /* experimental.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE9299682EF0032C2E3 /* experimental.build.js */; };
- 944A6DEF299682EF0032C2E3 /* experimental.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DE9299682EF0032C2E3 /* experimental.build.js */; };
- 944A6DF3299975A70032C2E3 /* event_log.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF0299975A70032C2E3 /* event_log.html */; };
- 944A6DF4299975A70032C2E3 /* event_log.html in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF0299975A70032C2E3 /* event_log.html */; };
- 944A6DF5299975A70032C2E3 /* event_log.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF1299975A70032C2E3 /* event_log.build.js */; };
- 944A6DF6299975A70032C2E3 /* event_log.build.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF1299975A70032C2E3 /* event_log.build.js */; };
- 944A6DF7299975A70032C2E3 /* event_log.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF2299975A70032C2E3 /* event_log.js */; };
- 944A6DF8299975A70032C2E3 /* event_log.js in Resources */ = {isa = PBXBuildFile; fileRef = 944A6DF2299975A70032C2E3 /* event_log.js */; };
+ 944A6E03299F2FBB0032C2E3 /* experimental in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E02299F2FBB0032C2E3 /* experimental */; };
+ 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 */; };
+ 944A6E16299F39D30032C2E3 /* permission in Resources */ = {isa = PBXBuildFile; fileRef = 944A6E12299F39D30032C2E3 /* permission */; };
+ 944A6E39299F46270032C2E3 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E38299F46270032C2E3 /* MainView.swift */; };
+ 944A6E3A299F46270032C2E3 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E38299F46270032C2E3 /* MainView.swift */; };
+ 944A6E3F299F46D30032C2E3 /* NostoreApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E3E299F46D30032C2E3 /* NostoreApp.swift */; };
+ 944A6E40299F46D30032C2E3 /* NostoreApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E3E299F46D30032C2E3 /* NostoreApp.swift */; };
+ 944A6E4329A081950032C2E3 /* PrivacyPolicyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4229A081950032C2E3 /* PrivacyPolicyView.swift */; };
+ 944A6E4429A081950032C2E3 /* PrivacyPolicyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4229A081950032C2E3 /* PrivacyPolicyView.swift */; };
+ 944A6E4629A11C3A0032C2E3 /* GettingStartiPhone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4529A11C3A0032C2E3 /* GettingStartiPhone.swift */; };
+ 944A6E4729A11C3A0032C2E3 /* GettingStartiPhone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4529A11C3A0032C2E3 /* GettingStartiPhone.swift */; };
+ 944A6E4929A11C640032C2E3 /* GettingStartediPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4829A11C640032C2E3 /* GettingStartediPad.swift */; };
+ 944A6E4A29A11C640032C2E3 /* GettingStartediPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4829A11C640032C2E3 /* GettingStartediPad.swift */; };
+ 944A6E4C29A11C770032C2E3 /* GettingStartedmacOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4B29A11C770032C2E3 /* GettingStartedmacOS.swift */; };
+ 944A6E4D29A11C770032C2E3 /* GettingStartedmacOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944A6E4B29A11C770032C2E3 /* GettingStartedmacOS.swift */; };
+ 9471E91F29A470C700EA623B /* event_history in Resources */ = {isa = PBXBuildFile; fileRef = 9471E91E29A470C700EA623B /* event_history */; };
+ 9471E92029A470C700EA623B /* event_history in Resources */ = {isa = PBXBuildFile; fileRef = 9471E91E29A470C700EA623B /* event_history */; };
948C69D9297F887600FB3574 /* options.html in Resources */ = {isa = PBXBuildFile; fileRef = 948C69D8297F887600FB3574 /* options.html */; };
948C69DA297F887600FB3574 /* options.html in Resources */ = {isa = PBXBuildFile; fileRef = 948C69D8297F887600FB3574 /* options.html */; };
948C69DD297F88A200FB3574 /* options.css in Resources */ = {isa = PBXBuildFile; fileRef = 948C69DB297F88A200FB3574 /* options.css */; };
@@ -107,6 +103,8 @@
948C69E6297F8BA600FB3574 /* options.build.css in Resources */ = {isa = PBXBuildFile; fileRef = 948C69E4297F8BA600FB3574 /* options.build.css */; };
948C69E82982DFE900FB3574 /* background.html in Resources */ = {isa = PBXBuildFile; fileRef = 948C69E72982DFE900FB3574 /* background.html */; };
948C69E92982DFE900FB3574 /* background.html in Resources */ = {isa = PBXBuildFile; fileRef = 948C69E72982DFE900FB3574 /* background.html */; };
+ 94AD34CD29A32458008BFFF4 /* TipsAndTricks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94AD34CC29A32458008BFFF4 /* TipsAndTricks.swift */; };
+ 94AD34CE29A32458008BFFF4 /* TipsAndTricks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94AD34CC29A32458008BFFF4 /* TipsAndTricks.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -168,14 +166,8 @@
941B03A9296FA90400CA291E /* popup.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = popup.css; sourceTree = ""; };
941B03AA296FA90400CA291E /* popup.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = popup.js; sourceTree = ""; };
941B03AF296FA90400CA291E /* Nostore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Nostore.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 941B03B2296FA90400CA291E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 941B03B4296FA90400CA291E /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
- 941B03B7296FA90400CA291E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 941B03BA296FA90400CA291E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
941B03BC296FA90400CA291E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
941B03C1296FA90400CA291E /* Nostore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Nostore.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 941B03C3296FA90400CA291E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 941B03C6296FA90400CA291E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
941B03C8296FA90400CA291E /* nostore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = nostore.entitlements; sourceTree = ""; };
941B03CD296FA90400CA291E /* Nostore Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Nostore Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
941B03D2296FA90400CA291E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -195,24 +187,23 @@
941B042E2978CDF900CA291E /* Icon-32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-32.png"; sourceTree = ""; };
941B042F2978CDF900CA291E /* Icon-16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-16.png"; sourceTree = ""; };
941B04302978CDF900CA291E /* Icon-64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-64.png"; sourceTree = ""; };
- 944A6DD22988BA200032C2E3 /* permission.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = permission.html; sourceTree = ""; };
- 944A6DD52988BD230032C2E3 /* permission.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = permission.js; sourceTree = ""; };
- 944A6DD82988D7900032C2E3 /* permission.build.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = permission.build.js; sourceTree = ""; };
- 944A6DDC2991DFC60032C2E3 /* delegation_wizard.build.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = delegation_wizard.build.js; sourceTree = ""; };
- 944A6DDD2991DFC60032C2E3 /* delegation_wizard.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = delegation_wizard.js; sourceTree = ""; };
- 944A6DE42991E4550032C2E3 /* delegation_wizard.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = delegation_wizard.html; sourceTree = ""; };
- 944A6DE7299682EF0032C2E3 /* experimental.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = experimental.html; sourceTree = ""; };
- 944A6DE8299682EF0032C2E3 /* experimental.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = experimental.js; sourceTree = ""; };
- 944A6DE9299682EF0032C2E3 /* experimental.build.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = experimental.build.js; sourceTree = ""; };
- 944A6DF0299975A70032C2E3 /* event_log.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = event_log.html; sourceTree = ""; };
- 944A6DF1299975A70032C2E3 /* event_log.build.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = event_log.build.js; sourceTree = ""; };
- 944A6DF2299975A70032C2E3 /* event_log.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = event_log.js; sourceTree = ""; };
+ 944A6E02299F2FBB0032C2E3 /* experimental */ = {isa = PBXFileReference; lastKnownFileType = folder; path = experimental; sourceTree = ""; };
+ 944A6E0D299F32070032C2E3 /* wizards */ = {isa = PBXFileReference; lastKnownFileType = folder; path = wizards; sourceTree = ""; };
+ 944A6E12299F39D30032C2E3 /* permission */ = {isa = PBXFileReference; lastKnownFileType = folder; path = permission; sourceTree = ""; };
+ 944A6E38299F46270032C2E3 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; };
+ 944A6E3E299F46D30032C2E3 /* NostoreApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NostoreApp.swift; sourceTree = ""; };
+ 944A6E4229A081950032C2E3 /* PrivacyPolicyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyPolicyView.swift; sourceTree = ""; };
+ 944A6E4529A11C3A0032C2E3 /* GettingStartiPhone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GettingStartiPhone.swift; sourceTree = ""; };
+ 944A6E4829A11C640032C2E3 /* GettingStartediPad.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GettingStartediPad.swift; sourceTree = ""; };
+ 944A6E4B29A11C770032C2E3 /* GettingStartedmacOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GettingStartedmacOS.swift; sourceTree = ""; };
+ 9471E91E29A470C700EA623B /* event_history */ = {isa = PBXFileReference; lastKnownFileType = folder; path = event_history; sourceTree = ""; };
948C69D8297F887600FB3574 /* options.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = options.html; sourceTree = ""; };
948C69DB297F88A200FB3574 /* options.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = options.css; sourceTree = ""; };
948C69DC297F88A200FB3574 /* options.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = options.js; sourceTree = ""; };
948C69E1297F891F00FB3574 /* options.build.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = options.build.js; sourceTree = ""; };
948C69E4297F8BA600FB3574 /* options.build.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = options.build.css; sourceTree = ""; };
948C69E72982DFE900FB3574 /* background.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = background.html; sourceTree = ""; };
+ 94AD34CC29A32458008BFFF4 /* TipsAndTricks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipsAndTricks.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -266,6 +257,13 @@
941B039E296FA90300CA291E /* ViewController.swift */,
941B039F296FA90400CA291E /* Assets.xcassets */,
941B0398296FA90300CA291E /* Resources */,
+ 944A6E38299F46270032C2E3 /* MainView.swift */,
+ 944A6E3E299F46D30032C2E3 /* NostoreApp.swift */,
+ 944A6E4229A081950032C2E3 /* PrivacyPolicyView.swift */,
+ 944A6E4529A11C3A0032C2E3 /* GettingStartiPhone.swift */,
+ 944A6E4829A11C640032C2E3 /* GettingStartediPad.swift */,
+ 944A6E4B29A11C770032C2E3 /* GettingStartedmacOS.swift */,
+ 94AD34CC29A32458008BFFF4 /* TipsAndTricks.swift */,
);
path = "Shared (App)";
sourceTree = "";
@@ -294,18 +292,10 @@
941B03A2296FA90400CA291E /* Resources */ = {
isa = PBXGroup;
children = (
- 944A6DF1299975A70032C2E3 /* event_log.build.js */,
- 944A6DF0299975A70032C2E3 /* event_log.html */,
- 944A6DF2299975A70032C2E3 /* event_log.js */,
- 944A6DE9299682EF0032C2E3 /* experimental.build.js */,
- 944A6DE7299682EF0032C2E3 /* experimental.html */,
- 944A6DE8299682EF0032C2E3 /* experimental.js */,
- 944A6DE42991E4550032C2E3 /* delegation_wizard.html */,
- 944A6DDC2991DFC60032C2E3 /* delegation_wizard.build.js */,
- 944A6DDD2991DFC60032C2E3 /* delegation_wizard.js */,
- 944A6DD82988D7900032C2E3 /* permission.build.js */,
- 944A6DD52988BD230032C2E3 /* permission.js */,
- 944A6DD22988BA200032C2E3 /* permission.html */,
+ 9471E91E29A470C700EA623B /* event_history */,
+ 944A6E12299F39D30032C2E3 /* permission */,
+ 944A6E0D299F32070032C2E3 /* wizards */,
+ 944A6E02299F2FBB0032C2E3 /* experimental */,
948C69E4297F8BA600FB3574 /* options.build.css */,
948C69E1297F891F00FB3574 /* options.build.js */,
948C69DB297F88A200FB3574 /* options.css */,
@@ -343,10 +333,6 @@
941B03B1296FA90400CA291E /* iOS (App) */ = {
isa = PBXGroup;
children = (
- 941B03B2296FA90400CA291E /* AppDelegate.swift */,
- 941B03B4296FA90400CA291E /* SceneDelegate.swift */,
- 941B03B6296FA90400CA291E /* LaunchScreen.storyboard */,
- 941B03B9296FA90400CA291E /* Main.storyboard */,
941B03BC296FA90400CA291E /* Info.plist */,
);
path = "iOS (App)";
@@ -355,8 +341,6 @@
941B03C2296FA90400CA291E /* macOS (App) */ = {
isa = PBXGroup;
children = (
- 941B03C3296FA90400CA291E /* AppDelegate.swift */,
- 941B03C5296FA90400CA291E /* Main.storyboard */,
941B03C8296FA90400CA291E /* nostore.entitlements */,
);
path = "macOS (App)";
@@ -519,13 +503,14 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 944A6E0E299F32070032C2E3 /* wizards in Resources */,
941B03E0296FA90400CA291E /* Icon.png in Resources */,
- 941B03B8296FA90400CA291E /* LaunchScreen.storyboard in Resources */,
+ 944A6E03299F2FBB0032C2E3 /* experimental in Resources */,
941B03DE296FA90400CA291E /* Main.html in Resources */,
941B03E4296FA90400CA291E /* Script.js in Resources */,
941B03E8296FA90400CA291E /* Assets.xcassets in Resources */,
- 941B03BB296FA90400CA291E /* Main.storyboard in Resources */,
941B03E2296FA90400CA291E /* Style.css in Resources */,
+ 944A6E13299F39D30032C2E3 /* permission in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -535,9 +520,11 @@
files = (
941B03E1296FA90400CA291E /* Icon.png in Resources */,
941B03E3296FA90400CA291E /* Style.css in Resources */,
- 941B03C7296FA90400CA291E /* Main.storyboard in Resources */,
+ 944A6E0F299F32070032C2E3 /* wizards in Resources */,
941B03E5296FA90400CA291E /* Script.js in Resources */,
+ 944A6E14299F39D30032C2E3 /* permission in Resources */,
941B03E9296FA90400CA291E /* Assets.xcassets in Resources */,
+ 944A6E04299F2FBB0032C2E3 /* experimental in Resources */,
941B03DF296FA90400CA291E /* Main.html in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -546,35 +533,27 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 944A6DEE299682EF0032C2E3 /* experimental.build.js in Resources */,
+ 9471E91F29A470C700EA623B /* event_history in Resources */,
+ 944A6E10299F32070032C2E3 /* wizards in Resources */,
941B0413297110F100CA291E /* background.build.js in Resources */,
- 944A6DE22991DFC60032C2E3 /* delegation_wizard.js in Resources */,
- 944A6DE52991E4550032C2E3 /* delegation_wizard.html in Resources */,
+ 944A6E15299F39D30032C2E3 /* permission in Resources */,
948C69E82982DFE900FB3574 /* background.html in Resources */,
- 944A6DEA299682EF0032C2E3 /* experimental.html in Resources */,
948C69DF297F88A200FB3574 /* options.js in Resources */,
- 944A6DD32988BA200032C2E3 /* permission.html in Resources */,
948C69DD297F88A200FB3574 /* options.css in Resources */,
- 944A6DD92988D7900032C2E3 /* permission.build.js in Resources */,
941B03F2296FA90400CA291E /* background.js in Resources */,
948C69E2297F891F00FB3574 /* options.build.js in Resources */,
941B03F8296FA90400CA291E /* popup.css in Resources */,
941B04292977A28700CA291E /* Icon-128.png in Resources */,
- 944A6DF3299975A70032C2E3 /* event_log.html in Resources */,
941B04182971138F00CA291E /* nostr.build.js in Resources */,
941B042C2978CD8E00CA291E /* iOS-Icon-1024.png in Resources */,
941B03F6296FA90400CA291E /* popup.html in Resources */,
941B040D296FAD6900CA291E /* nostr.js in Resources */,
- 944A6DE02991DFC60032C2E3 /* delegation_wizard.build.js in Resources */,
- 944A6DF5299975A70032C2E3 /* event_log.build.js in Resources */,
+ 944A6E05299F2FBB0032C2E3 /* experimental in Resources */,
941B03EE296FA90400CA291E /* images in Resources */,
941B03F0296FA90400CA291E /* manifest.json in Resources */,
- 944A6DD62988BD230032C2E3 /* permission.js in Resources */,
941B04312978CDF900CA291E /* Icon-32.png in Resources */,
941B041A2971139000CA291E /* content.build.js in Resources */,
941B041C2971139000CA291E /* popup.build.js in Resources */,
- 944A6DF7299975A70032C2E3 /* event_log.js in Resources */,
- 944A6DEC299682EF0032C2E3 /* experimental.js in Resources */,
941B03EC296FA90400CA291E /* _locales in Resources */,
941B04222977A25700CA291E /* Icon-512.png in Resources */,
948C69E5297F8BA600FB3574 /* options.build.css in Resources */,
@@ -592,35 +571,27 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 944A6DEF299682EF0032C2E3 /* experimental.build.js in Resources */,
+ 9471E92029A470C700EA623B /* event_history in Resources */,
+ 944A6E11299F32070032C2E3 /* wizards in Resources */,
941B0414297110F100CA291E /* background.build.js in Resources */,
- 944A6DE32991DFC60032C2E3 /* delegation_wizard.js in Resources */,
- 944A6DE62991E4550032C2E3 /* delegation_wizard.html in Resources */,
+ 944A6E16299F39D30032C2E3 /* permission in Resources */,
948C69E92982DFE900FB3574 /* background.html in Resources */,
- 944A6DEB299682EF0032C2E3 /* experimental.html in Resources */,
948C69E0297F88A200FB3574 /* options.js in Resources */,
- 944A6DD42988BA200032C2E3 /* permission.html in Resources */,
948C69DE297F88A200FB3574 /* options.css in Resources */,
- 944A6DDA2988D7900032C2E3 /* permission.build.js in Resources */,
941B03F3296FA90400CA291E /* background.js in Resources */,
948C69E3297F891F00FB3574 /* options.build.js in Resources */,
941B03F9296FA90400CA291E /* popup.css in Resources */,
941B042A2977A28700CA291E /* Icon-128.png in Resources */,
- 944A6DF4299975A70032C2E3 /* event_log.html in Resources */,
941B04192971138F00CA291E /* nostr.build.js in Resources */,
941B042D2978CD8E00CA291E /* iOS-Icon-1024.png in Resources */,
941B03F7296FA90400CA291E /* popup.html in Resources */,
941B040E296FAD6900CA291E /* nostr.js in Resources */,
- 944A6DE12991DFC60032C2E3 /* delegation_wizard.build.js in Resources */,
- 944A6DF6299975A70032C2E3 /* event_log.build.js in Resources */,
+ 944A6E06299F2FBB0032C2E3 /* experimental in Resources */,
941B03EF296FA90400CA291E /* images in Resources */,
941B03F1296FA90400CA291E /* manifest.json in Resources */,
- 944A6DD72988BD230032C2E3 /* permission.js in Resources */,
941B04322978CDF900CA291E /* Icon-32.png in Resources */,
941B041B2971139000CA291E /* content.build.js in Resources */,
941B041D2971139000CA291E /* popup.build.js in Resources */,
- 944A6DF8299975A70032C2E3 /* event_log.js in Resources */,
- 944A6DED299682EF0032C2E3 /* experimental.js in Resources */,
941B03ED296FA90400CA291E /* _locales in Resources */,
941B04232977A25700CA291E /* Icon-512.png in Resources */,
948C69E6297F8BA600FB3574 /* options.build.css in Resources */,
@@ -641,9 +612,14 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 944A6E3F299F46D30032C2E3 /* NostoreApp.swift in Sources */,
+ 944A6E4629A11C3A0032C2E3 /* GettingStartiPhone.swift in Sources */,
+ 94AD34CD29A32458008BFFF4 /* TipsAndTricks.swift in Sources */,
+ 944A6E4C29A11C770032C2E3 /* GettingStartedmacOS.swift in Sources */,
941B03E6296FA90400CA291E /* ViewController.swift in Sources */,
- 941B03B3296FA90400CA291E /* AppDelegate.swift in Sources */,
- 941B03B5296FA90400CA291E /* SceneDelegate.swift in Sources */,
+ 944A6E4329A081950032C2E3 /* PrivacyPolicyView.swift in Sources */,
+ 944A6E39299F46270032C2E3 /* MainView.swift in Sources */,
+ 944A6E4929A11C640032C2E3 /* GettingStartediPad.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -651,8 +627,14 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 944A6E3A299F46270032C2E3 /* MainView.swift in Sources */,
+ 944A6E40299F46D30032C2E3 /* NostoreApp.swift in Sources */,
+ 94AD34CE29A32458008BFFF4 /* TipsAndTricks.swift in Sources */,
+ 944A6E4729A11C3A0032C2E3 /* GettingStartiPhone.swift in Sources */,
941B03E7296FA90400CA291E /* ViewController.swift in Sources */,
- 941B03C4296FA90400CA291E /* AppDelegate.swift in Sources */,
+ 944A6E4D29A11C770032C2E3 /* GettingStartedmacOS.swift in Sources */,
+ 944A6E4A29A11C640032C2E3 /* GettingStartediPad.swift in Sources */,
+ 944A6E4429A081950032C2E3 /* PrivacyPolicyView.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -696,30 +678,6 @@
name = Main.html;
sourceTree = "";
};
- 941B03B6296FA90400CA291E /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 941B03B7296FA90400CA291E /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
- 941B03B9296FA90400CA291E /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 941B03BA296FA90400CA291E /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 941B03C5296FA90400CA291E /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 941B03C6296FA90400CA291E /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -906,14 +864,13 @@
DEVELOPMENT_TEAM = 5SD834TD9W;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "iOS (App)/Info.plist";
- INFOPLIST_KEY_CFBundleDisplayName = nostore;
+ INFOPLIST_KEY_CFBundleDisplayName = Nostore;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
- INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -948,14 +905,13 @@
DEVELOPMENT_TEAM = 5SD834TD9W;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "iOS (App)/Info.plist";
- INFOPLIST_KEY_CFBundleDisplayName = nostore;
+ INFOPLIST_KEY_CFBundleDisplayName = Nostore;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
- INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1056,15 +1012,15 @@
DEVELOPMENT_TEAM = 5SD834TD9W;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_CFBundleDisplayName = nostore;
+ INFOPLIST_FILE = "Nostore--macOS--Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = Nostore;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
- INFOPLIST_KEY_NSMainStoryboardFile = Main;
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
- MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MACOSX_DEPLOYMENT_TARGET = 13.0;
MARKETING_VERSION = 0.1.0;
OTHER_LDFLAGS = (
"-framework",
@@ -1092,15 +1048,15 @@
DEVELOPMENT_TEAM = 5SD834TD9W;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_CFBundleDisplayName = nostore;
+ INFOPLIST_FILE = "Nostore--macOS--Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = Nostore;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
- INFOPLIST_KEY_NSMainStoryboardFile = Main;
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
- MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MACOSX_DEPLOYMENT_TARGET = 13.0;
MARKETING_VERSION = 0.1.0;
OTHER_LDFLAGS = (
"-framework",
diff --git a/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json b/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json
index eb87897..004700a 100644
--- a/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json
+++ b/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -1,6 +1,15 @@
{
"colors" : [
{
+ "color" : {
+ "color-space" : "display-p3",
+ "components" : {
+ "alpha" : "1.000",
+ "blue" : "0.665",
+ "green" : "0.271",
+ "red" : "0.509"
+ }
+ },
"idiom" : "universal"
}
],
diff --git a/Shared (App)/Assets.xcassets/bigicon.imageset/Contents.json b/Shared (App)/Assets.xcassets/bigicon.imageset/Contents.json
new file mode 100644
index 0000000..0bd89f4
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/bigicon.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "Icon-512.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/bigicon.imageset/Icon-512.png b/Shared (App)/Assets.xcassets/bigicon.imageset/Icon-512.png
new file mode 100644
index 0000000..0c1d663
Binary files /dev/null and b/Shared (App)/Assets.xcassets/bigicon.imageset/Icon-512.png differ
diff --git a/Shared (App)/Assets.xcassets/iPad/Contents.json b/Shared (App)/Assets.xcassets/iPad/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPad/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/Contents.json
new file mode 100644
index 0000000..065632c
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "ipad-menu.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/ipad-menu.png b/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/ipad-menu.png
new file mode 100644
index 0000000..cd76e62
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPad/ipad-menu.imageset/ipad-menu.png differ
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/Contents.json
new file mode 100644
index 0000000..ec66df3
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "ipad-popup.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/ipad-popup.png b/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/ipad-popup.png
new file mode 100644
index 0000000..66efa6d
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPad/ipad-popup.imageset/ipad-popup.png differ
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/Contents.json
new file mode 100644
index 0000000..2397099
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "ipad-url-bar.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/ipad-url-bar.png b/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/ipad-url-bar.png
new file mode 100644
index 0000000..300eb8e
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPad/ipad-url-bar.imageset/ipad-url-bar.png differ
diff --git a/Shared (App)/Assets.xcassets/iPhone/Contents.json b/Shared (App)/Assets.xcassets/iPhone/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPhone/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/Contents.json
new file mode 100644
index 0000000..4146c0a
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "iphone-menu.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/iphone-menu.png b/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/iphone-menu.png
new file mode 100644
index 0000000..a3f67b2
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPhone/iphone-menu.imageset/iphone-menu.png differ
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/Contents.json
new file mode 100644
index 0000000..6898ffe
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "iphone-popup.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/iphone-popup.png b/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/iphone-popup.png
new file mode 100644
index 0000000..3fdd012
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPhone/iphone-popup.imageset/iphone-popup.png differ
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/Contents.json b/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/Contents.json
new file mode 100644
index 0000000..815953d
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "iphone-url-bar.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/iphone-url-bar.png b/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/iphone-url-bar.png
new file mode 100644
index 0000000..0419634
Binary files /dev/null and b/Shared (App)/Assets.xcassets/iPhone/iphone-url-bar.imageset/iphone-url-bar.png differ
diff --git a/Shared (App)/Assets.xcassets/macOS/Contents.json b/Shared (App)/Assets.xcassets/macOS/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/macOS/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/Contents.json b/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/Contents.json
new file mode 100644
index 0000000..84b8a6e
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "default-popup.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/default-popup.png b/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/default-popup.png
new file mode 100644
index 0000000..8c95877
Binary files /dev/null and b/Shared (App)/Assets.xcassets/macOS/macos-default-popup.imageset/default-popup.png differ
diff --git a/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/Contents.json b/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/Contents.json
new file mode 100644
index 0000000..4a58aa7
--- /dev/null
+++ b/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "toolbar-inactive.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/toolbar-inactive.png b/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/toolbar-inactive.png
new file mode 100644
index 0000000..bf1d30d
Binary files /dev/null and b/Shared (App)/Assets.xcassets/macOS/macos-toolbar-inactive.imageset/toolbar-inactive.png differ
diff --git a/Shared (App)/GettingStartediPad.swift b/Shared (App)/GettingStartediPad.swift
new file mode 100644
index 0000000..13012a0
--- /dev/null
+++ b/Shared (App)/GettingStartediPad.swift
@@ -0,0 +1,62 @@
+//
+// GettingStartediPad.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/18/23.
+//
+
+import SwiftUI
+
+struct GettingStartediPad: View {
+ var body: some View {
+ ScrollView {
+ Text("Getting Started")
+ .font(.largeTitle)
+ .foregroundColor(.accentColor)
+ Text("iPad")
+ .font(.title)
+ .foregroundColor(.accentColor)
+ Text("")
+ Text("""
+Upon installation of the app, go to **Settings -> Safari -> Extensions** and enable **Nostore**. Open Safari and look in the toolbar, where you will see the \(Image(systemName: "puzzlepiece.extension")) icon:
+""")
+ .padding([.horizontal, .top], 20)
+
+ Image("ipad-url-bar")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("You will be greeted by a menu like below:").padding([.top], 20)
+
+ Image("ipad-menu")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("""
+The **Nostore** logo is gray, indicating the extension is inactive for this site, and must be activated first. Click on the button, and give Nostore permission to access the current site. Now the Nostore logo will appear in color, and you can click it again to access the extension.
+""").multilineTextAlignment(.leading)
+ .padding([.horizontal, .top], 20)
+
+ Image("ipad-popup")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("You have a default profile (with a random key) setup to start. Click the **Settings** button to configure your own keys, if you have them.").padding([.top, .bottom], 20)
+ }
+ }
+}
+
+struct GettingStartediPad_Previews: PreviewProvider {
+ static var previews: some View {
+ GettingStartediPad()
+ }
+}
diff --git a/Shared (App)/GettingStartedmacOS.swift b/Shared (App)/GettingStartedmacOS.swift
new file mode 100644
index 0000000..d1e348f
--- /dev/null
+++ b/Shared (App)/GettingStartedmacOS.swift
@@ -0,0 +1,56 @@
+//
+// GettingStartedmacOS.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/18/23.
+//
+
+import SwiftUI
+
+struct GettingStartedmacOS: View {
+ var body: some View {
+ ScrollView {
+ Text("Getting Started")
+ .font(.largeTitle)
+ .foregroundColor(.accentColor)
+ Text("macOS")
+ .font(.title)
+ .foregroundColor(.accentColor)
+ Text("")
+ Text("Upon installation of the app, open Safari. Click on the **Safari menu -> Settings... -> Extensions tab** and activate the **Nostore** extension. You will now see the Nostore icon in your Safari toolbar. For example:")
+ .padding([.horizontal, .top], 20)
+
+ Image("macos-toolbar-inactive")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("""
+On the right, you can see the Nostore logo, and it is gray (or **inactive**). This means that it does not have permission to access the current website.
+
+The first time you visit a Nostr client, you will need to click the icon to give Nostore permission to access the site.
+
+Once active, the icon will become colored and you can select it again, where you will be greeted with a similar popup:
+""").multilineTextAlignment(.leading)
+ .padding([.horizontal, .top], 20)
+
+ Image("macos-default-popup")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("You have a default profile (with a random key) setup to start. Click the **Settings** button to configure your own keys, if you have them.").padding([.top, .bottom], 20)
+ }
+
+ }
+}
+
+struct GettingStartedmacOS_Previews: PreviewProvider {
+ static var previews: some View {
+ GettingStartedmacOS()
+ }
+}
diff --git a/Shared (App)/GettingStartiPhone.swift b/Shared (App)/GettingStartiPhone.swift
new file mode 100644
index 0000000..a4a1ab9
--- /dev/null
+++ b/Shared (App)/GettingStartiPhone.swift
@@ -0,0 +1,60 @@
+//
+// GettingStartediPhone.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/18/23.
+//
+
+import SwiftUI
+
+struct GettingStartediPhone: View {
+ var body: some View {
+ ScrollView {
+ Text("Getting Started")
+ .font(.largeTitle)
+ .foregroundColor(.accentColor)
+ Text("iPhone")
+ .font(.title)
+ .foregroundColor(.accentColor)
+ Spacer(minLength: 20.0)
+ Text("Upon installation of the app, goto **Settings -> Safari -> Extension** and enable the **Nostore** extension. Then open Safari and look in the toolbar, where you will see the \(Image(systemName: "textformat.size")) icon:")
+ .padding([.horizontal, .top], 20)
+
+ Image("iphone-url-bar")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("You will be greeted by a menu like below:").padding([.top], 20)
+
+ Image("iphone-menu")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("""
+The **Nostore** logo is gray, indicating the extension is inactive for this site, and must be activated first. Click on the button, and give Nostore permission to access the current site. Now the Nostore logo will appear in color, and you can click it again to access the extension.
+""").multilineTextAlignment(.leading)
+ .padding([.horizontal, .top], 20)
+
+ Image("iphone-popup")
+ .resizable()
+ .scaledToFit()
+ .frame(maxWidth: 512)
+ .border(Color.accentColor, width: 2)
+ .padding([.top])
+
+ Text("You have a default profile (with a random key) setup to start. Click the **Settings** button to configure your own keys, if you have them.").padding([.top, .bottom], 20)
+ }
+ }
+}
+
+struct GettingStartediPhone_Previews: PreviewProvider {
+ static var previews: some View {
+ GettingStartediPhone()
+ }
+}
diff --git a/Shared (App)/MainView.swift b/Shared (App)/MainView.swift
new file mode 100644
index 0000000..2d0fadf
--- /dev/null
+++ b/Shared (App)/MainView.swift
@@ -0,0 +1,65 @@
+//
+// HelloView.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/17/23.
+//
+
+import SwiftUI
+
+struct MainView: View {
+ var body: some View {
+ VStack {
+ NavigationStack {
+ Image("bigicon").resizable().frame(width: 150.0, height: 150.0)
+ Text("Nostore").font(.title)
+ Text("A Safari Nostr Extension").font(.title2)
+ NavigationLink("Privacy Policy") {
+ PrivacyPolicyView()
+ }
+ #if macOS
+ .buttonStyle(.link)
+ #endif
+ .padding(.all, 3.0)
+
+ NavigationLink("Getting Started: iPhone") {
+ GettingStartediPhone()
+ }
+ #if macOS
+ .buttonStyle(.link)
+ #endif
+ .padding(.all, 3.0)
+
+ NavigationLink("Getting Started: iPad") {
+ GettingStartediPad()
+ }
+ #if macOS
+ .buttonStyle(.link)
+ #endif
+ .padding(.all, 3.0)
+
+ NavigationLink("Getting Started: MacOS") {
+ GettingStartedmacOS()
+ }
+ #if macOS
+ .buttonStyle(.link)
+ #endif
+ .padding(.all, 3.0)
+
+ NavigationLink("Tips and Tricks") {
+ TipsAndTricks()
+ }
+ #if macOS
+ .buttonStyle(.link)
+ #endif
+ .padding(.all, 3.0)
+ }
+ }
+ }
+}
+
+struct MainView_Previews: PreviewProvider {
+ static var previews: some View {
+ MainView()
+ }
+}
diff --git a/Shared (App)/NostoreApp.swift b/Shared (App)/NostoreApp.swift
new file mode 100644
index 0000000..fe44d57
--- /dev/null
+++ b/Shared (App)/NostoreApp.swift
@@ -0,0 +1,20 @@
+//
+// File.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/17/23.
+//
+
+import SwiftUI
+
+@main
+struct NostoreApp: App {
+ var body: some Scene {
+ WindowGroup("Nostore") {
+ MainView()
+ }
+ #if macOS
+ .defaultSize(width: 400, height: 500)
+ #endif
+ }
+}
diff --git a/Shared (App)/PrivacyPolicyView.swift b/Shared (App)/PrivacyPolicyView.swift
new file mode 100644
index 0000000..8b1dbb4
--- /dev/null
+++ b/Shared (App)/PrivacyPolicyView.swift
@@ -0,0 +1,32 @@
+//
+// SwiftUIView.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/17/23.
+//
+
+import SwiftUI
+
+struct PrivacyPolicyView: View {
+ var body: some View {
+ ScrollView {
+ Text("Privacy Policy")
+ .font(.largeTitle)
+ .foregroundColor(.accentColor)
+ Spacer(minLength: 20)
+ Text("""
+**Nostore** is developed in the spirit of Nostr.
+
+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).
+""").multilineTextAlignment(.leading)
+ }.padding(.all)
+ }
+}
+
+struct PrivacyPolicyView_Previews: PreviewProvider {
+ static var previews: some View {
+ PrivacyPolicyView()
+ }
+}
diff --git a/Shared (App)/TipsAndTricks.swift b/Shared (App)/TipsAndTricks.swift
new file mode 100644
index 0000000..4a440b1
--- /dev/null
+++ b/Shared (App)/TipsAndTricks.swift
@@ -0,0 +1,41 @@
+//
+// SwiftUIView.swift
+// Nostore
+//
+// Created by Ryan Breen on 2/19/23.
+//
+
+import SwiftUI
+
+struct TipsAndTricks: View {
+ var body: some View {
+ ScrollView {
+ Text("Tips and Tricks")
+ .font(.largeTitle)
+ .foregroundColor(.accentColor)
+ Spacer(minLength: 20.0)
+ Text("Try a few of these:")
+ .frame(maxWidth: .infinity, alignment: .leading)
+ Spacer(minLength: 20)
+ Text("""
+1. You can have multiple profiles, each corresponding to a different key.
+
+2. Click **Event History** in settings to see a list of all events signed by the extension.
+
+3. Each client has its own set of permissions. You can review them at any time in **Settings**. They are organized by application host.
+
+4. Clicking the event text in the **Event History** will copy a the raw event JSON.
+
+5. If you have authorized the extension to talk to the client, but still don't see a special extension login button on the site, try hitting refresh on the site. The client may not recognize the extension code until you do that.
+""")
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .padding([.horizontal], 25)
+ }.padding(.all)
+ }
+}
+
+struct Tipsandtricks_Previews: PreviewProvider {
+ static var previews: some View {
+ TipsAndTricks()
+ }
+}
diff --git a/Shared (Extension)/Resources/background.js b/Shared (Extension)/Resources/background.js
index 4fde090..7084efb 100644
--- a/Shared (Extension)/Resources/background.js
+++ b/Shared (Extension)/Resources/background.js
@@ -15,8 +15,8 @@ import {
getPermission,
setPermission,
feature,
-} from './utils';
-import { saveEvent } from './db';
+} from './utilities/utils';
+import { saveEvent } from './utilities/db';
const storage = browser.storage.local;
const log = msg => console.log('Background: ', msg);
@@ -51,6 +51,8 @@ browser.runtime.onMessage.addListener((message, _sender, sendResponse) => {
return createDelegation(message.payload);
case 'calcPubKey':
return Promise.resolve(getPublicKey(message.payload));
+ case 'npubEncode':
+ return Promise.resolve(nip19.npubEncode(message.payload));
// window.nostr
case 'getPubKey':
@@ -116,7 +118,7 @@ async function ask(uuid, { kind, host, payload }) {
});
let tab = await browser.tabs.getCurrent();
let p = await browser.tabs.create({
- url: `/permission.html?${qs.toString()}`,
+ url: `/permission/permission.html?${qs.toString()}`,
openerTabId: tab.id,
});
prompt.tabId = p.id;
diff --git a/Shared (Extension)/Resources/event_log.html b/Shared (Extension)/Resources/event_history/event_history.html
similarity index 76%
rename from Shared (Extension)/Resources/event_log.html
rename to Shared (Extension)/Resources/event_history/event_history.html
index d53c538..d353cb6 100644
--- a/Shared (Extension)/Resources/event_log.html
+++ b/Shared (Extension)/Resources/event_history/event_history.html
@@ -5,9 +5,9 @@
-
-
- Event Log
+
+
+ Event History