diff --git a/External/Crashlytics.framework/Versions/A/Crashlytics b/External/Crashlytics.framework/Versions/A/Crashlytics
index aa001c2b..1230b7e0 100644
Binary files a/External/Crashlytics.framework/Versions/A/Crashlytics and b/External/Crashlytics.framework/Versions/A/Crashlytics differ
diff --git a/External/Crashlytics.framework/Versions/A/Resources/Info.plist b/External/Crashlytics.framework/Versions/A/Resources/Info.plist
index bf21197c..60ba0760 100644
--- a/External/Crashlytics.framework/Versions/A/Resources/Info.plist
+++ b/External/Crashlytics.framework/Versions/A/Resources/Info.plist
@@ -7,7 +7,7 @@
CFBundleExecutable
Crashlytics
CFBundleIdentifier
- com.crashlytics.sdk.mac
+ com.crashlytics.ios
CFBundleInfoDictionaryVersion
6.0
CFBundleName
@@ -15,16 +15,16 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 2.1.2
+ 2.1.7
CFBundleSupportedPlatforms
- macosx
+ iPhoneOS
CFBundleVersion
- 9
+ 26
DTPlatformName
- macosx
+ iphoneos
MinimumOSVersion
- 10.6
+ 4.0
diff --git a/External/Crashlytics.framework/run b/External/Crashlytics.framework/run
index 09c7c04a..d2c28068 100755
Binary files a/External/Crashlytics.framework/run and b/External/Crashlytics.framework/run differ
diff --git a/External/LoveLyndir b/External/LoveLyndir
index adab69df..97eafd9b 160000
--- a/External/LoveLyndir
+++ b/External/LoveLyndir
@@ -1 +1 @@
-Subproject commit adab69df05840d94a3f2f883251869d6cb352b0e
+Subproject commit 97eafd9b59f84bd9e3fc3cb4313df8b3c034e766
diff --git a/External/Pearl b/External/Pearl
index 081c2dec..9e41cebe 160000
--- a/External/Pearl
+++ b/External/Pearl
@@ -1 +1 @@
-Subproject commit 081c2dec20b3638694a5ad20cd2fddccdb298447
+Subproject commit 9e41cebeba085fce2bbae2592d52bbfd740f9ffb
diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj
index c3a06497..71e50721 100644
--- a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj
+++ b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
- CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
+ CODE_SIGN_IDENTITY = "Mac Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
@@ -1960,12 +1960,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
- CODE_SIGN_IDENTITY = "Mac Developer";
- "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer: Maarten Billemont (DWGU95U4ZD)";
COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
INFOPLIST_FILE = "MasterPassword-Info.plist";
- PROVISIONING_PROFILE = "9AEC6040-D157-4526-8CA9-FF0254B3A4A5";
SKIP_INSTALL = NO;
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
};
@@ -1977,12 +1974,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
- CODE_SIGN_IDENTITY = "Mac Developer";
- "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer: Maarten Billemont (DWGU95U4ZD)";
COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
INFOPLIST_FILE = "MasterPassword-Info.plist";
- PROVISIONING_PROFILE = "2A46D0C9-E5F0-4C52-BCC6-96434A0D1C1B";
SKIP_INSTALL = NO;
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
};
@@ -2009,7 +2003,7 @@
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
- CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
+ CODE_SIGN_IDENTITY = "Mac Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
@@ -2075,12 +2069,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
- CODE_SIGN_IDENTITY = "Mac Developer";
- "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application: Maarten Billemont (HL3Q45LX9N)";
COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
INFOPLIST_FILE = "MasterPassword-Info.plist";
- PROVISIONING_PROFILE = "170D83FD-18FE-4A05-B13C-8D16876480C6";
SKIP_INSTALL = NO;
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
};
diff --git a/MasterPassword/ObjC/iOS/MPGuideViewController.h b/MasterPassword/ObjC/iOS/MPGuideViewController.h
index c55481b0..e5d76e9c 100644
--- a/MasterPassword/ObjC/iOS/MPGuideViewController.h
+++ b/MasterPassword/ObjC/iOS/MPGuideViewController.h
@@ -10,6 +10,7 @@
@interface MPGuideViewController : UIViewController
+@property(weak, nonatomic) IBOutlet UISearchBar *searchBar;
@property(weak, nonatomic) IBOutlet UIView *siteNameTip;
@property(weak, nonatomic) IBOutlet UIView *contentTip;
@property(weak, nonatomic) IBOutlet UILabel *contentTipText;
diff --git a/MasterPassword/ObjC/iOS/MPGuideViewController.m b/MasterPassword/ObjC/iOS/MPGuideViewController.m
index 4eeeeec3..1d68c338 100644
--- a/MasterPassword/ObjC/iOS/MPGuideViewController.m
+++ b/MasterPassword/ObjC/iOS/MPGuideViewController.m
@@ -64,6 +64,7 @@
// Via setup
self.smallPlayButton.hidden = YES;
+ self.searchBar.text = nil;
self.siteNameTip.alpha = 0;
self.content.alpha = 0;
self.content.frame = CGRectSetHeight( self.content.frame, 180 );
@@ -81,6 +82,7 @@
// Via segue
self.largePlayButton.hidden = YES;
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 1;
self.content.alpha = 1;
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
@@ -147,6 +149,7 @@
if (self.currentTick < 5) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = nil;
self.siteNameTip.alpha = 1;
self.content.alpha = 0;
self.content.frame = CGRectSetHeight( self.content.frame, 180 );
@@ -159,6 +162,7 @@
}
else if (self.currentTick < 10) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 1;
@@ -171,6 +175,7 @@
}
else if (self.currentTick < 15) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 1;
@@ -185,6 +190,7 @@
}
else if (self.currentTick < 20) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
@@ -199,6 +205,7 @@
}
else if (self.currentTick < 25) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 0;
@@ -212,6 +219,7 @@
}
else if (self.currentTick < 30) {
[UIView animateWithDuration:0.5 animations:^{
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 0;
@@ -230,6 +238,7 @@
self.currentTick = 0;
[UIView animateWithDuration:0.5 animations:^{
[self.smallPlayButton setImage:[UIImage imageNamed:@"icon_play"] forState:UIControlStateNormal];
+ self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 1;
self.content.alpha = 1;
self.contentTip.alpha = 1;
diff --git a/MasterPassword/ObjC/iOS/MPUnlockViewController.h b/MasterPassword/ObjC/iOS/MPUnlockViewController.h
index a048c9e9..d8d236a5 100644
--- a/MasterPassword/ObjC/iOS/MPUnlockViewController.h
+++ b/MasterPassword/ObjC/iOS/MPUnlockViewController.h
@@ -7,6 +7,7 @@
//
#import
+#import "LLGitTip.h"
@interface MPUnlockViewController : UIViewController
@@ -26,6 +27,8 @@
@property(strong, nonatomic) IBOutlet UILongPressGestureRecognizer *targetedUserActionGesture;
@property(weak, nonatomic) IBOutlet UIView *uiContainer;
@property(weak, nonatomic) IBOutlet UIView *shareContainer;
+@property(weak, nonatomic) IBOutlet UIView *tipsTipContainer;
+@property(weak, nonatomic) IBOutlet LLGitTip *gitTipButton;
@property(weak, nonatomic) IBOutlet UIWebView *newsView;
@property(weak, nonatomic) IBOutlet UIView *emergencyGeneratorContainer;
@property(weak, nonatomic) IBOutlet UITextField *emergencyName;
diff --git a/MasterPassword/ObjC/iOS/MPUnlockViewController.m b/MasterPassword/ObjC/iOS/MPUnlockViewController.m
index 282b71b3..58143131 100644
--- a/MasterPassword/ObjC/iOS/MPUnlockViewController.m
+++ b/MasterPassword/ObjC/iOS/MPUnlockViewController.m
@@ -12,6 +12,7 @@
#import "MPiOSAppDelegate.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Store.h"
+#import "LLGitTip.h"
@interface MPUnlockViewController()
@@ -127,6 +128,7 @@
- (void)viewDidLoad {
+ self.gitTipButton.iTunesID = [MPConfig get].iTunesID;
self.avatarToUserOID = [NSMutableDictionary dictionaryWithCapacity:3];
[self.avatarsView addGestureRecognizer:self.targetedUserActionGesture];
@@ -230,6 +232,7 @@
self.uiContainer.alpha = 0;
self.shareContainer.alpha = 0;
self.spinner.alpha = 0;
+ self.tipsTipContainer.alpha = 0;
[super viewWillAppear:animated];
}
@@ -249,6 +252,8 @@
if (finished)
[UIView animateWithDuration:1 animations:^{
self.shareContainer.alpha = 1;
+ if ([MPConfig get].firstVersionRun)
+ self.tipsTipContainer.alpha = 1;
}];
}];
diff --git a/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard b/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard
index 1e3025f5..f34dfcd0 100644
--- a/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard
+++ b/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard
@@ -1,5 +1,5 @@
-
+
@@ -470,15 +470,15 @@ Your passwords will be AES-encrypted with your master password.
-
+
-
+
-
+
119-20:51:52 MPiOSAppDelegate.m:36 | INFO : Initializing TestFlight
@@ -508,7 +508,7 @@ Your passwords will be AES-encrypted with your master password.
-
+
@@ -524,7 +524,7 @@ Your passwords will be AES-encrypted with your master password.
-
+
@@ -1575,182 +1575,34 @@ You can use the words in the background for inspiration in finding a memorable m
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1831,7 +1852,7 @@ You can use the words in the background for inspiration in finding a memorable m
-
+
@@ -1849,20 +1870,21 @@ You can use the words in the background for inspiration in finding a memorable m
-
-
+
+
- Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well.
+ Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well.
-Thanks to the special way Master Password works, your site passwords don't need to be sent to Apple.
-If you set a custom password, it will be encrypted before it is saved to the cloud.
+Note that even without iCloud syncing, you can make your passwords available from any device by simply creating the same user on all your devices. Enabling iCloud is mainly benefitial to keep the list of sites you use in sync on all your devices.
+
+Only site names and custom passwords are sent to iCloud. Passwords are encrypted with your master password and illegible by Apple or any interceptor.
-
-
+
+
@@ -2428,7 +2450,7 @@ If you set a custom password, it will be encrypted before it is saved to the clo
-
+
@@ -2701,7 +2723,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
-
+
@@ -2883,7 +2905,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
• Use the short site name (eg. apple.com), don't include the prefix (eg. www).
- • Use generated passwords. If you ever lose your user or phone, recreating the user will resurrect them from thin air.
+ • Use generated passwords, avoid custom passwords. If you ever lose your user or phone, recreating the user will resurrect them from thin air.
@@ -2910,6 +2932,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
+
@@ -2937,7 +2960,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
-
+
@@ -2955,8 +2978,8 @@ You can make passwords for anything, like email addresses, sites or real-world t
-
-
+
+
The right balance between security and convenience is often very personal.
@@ -2968,8 +2991,8 @@ However, it means that anyone who finds your device unlocked can do the same.
-
-
+
+
@@ -3038,9 +3061,9 @@ However, it means that anyone who finds your device unlocked can do the same.
-
+
-
+
\ No newline at end of file