6 Commits

Author SHA1 Message Date
Michael Starke
e985d23fa5 Fixed crash when saving files with ChaCha chipher 2022-02-10 21:36:31 +01:00
Michael Starke
b690d6051e Bumped Version to 0.8 2022-02-10 16:23:33 +01:00
Michael Starke
fe7b4e2746 Added current plugin definitions 2022-02-10 16:05:42 +01:00
Michael Starke
5b211bb519 Xcode updates 2022-02-10 13:56:03 +01:00
Michael Starke
0a6ba80f01 Fixed #1206 that would cancel version browsing in time machine if the key file open panel is shown 2022-02-09 15:53:41 +01:00
Michael Starke
43e667a157 Enabled version browsing when database is locked 2022-02-09 15:52:49 +01:00
8 changed files with 62 additions and 47 deletions

View File

@@ -1,4 +1,4 @@
github "MacPass/KeePassKit" "3.2.0"
github "MacPass/KeePassKit" "3.2.1"
github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa"
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
github "mstarke/HNHUi" "6.0"

View File

@@ -2724,7 +2724,6 @@
4C9328D1273E6A83000DCBEE /* Base */,
4C9328D4273E6A85000DCBEE /* zh-Hans */,
4C9328D6273E6A85000DCBEE /* de */,
69385E36274ACFDF001AB1E9 /* cs */,
);
name = MPTOTPViewController.xib;
sourceTree = "<group>";
@@ -2753,7 +2752,6 @@
isa = PBXVariantGroup;
children = (
4CF14962224B623700D1CE1C /* Base */,
69385E4F274ACFE0001AB1E9 /* cs */,
);
name = Credits.rtf;
sourceTree = "<group>";
@@ -3150,7 +3148,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = "0.8-beta";
CURRENT_PROJECT_VERSION = 0.8.1;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -3206,7 +3204,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = "0.8-beta";
CURRENT_PROJECT_VERSION = 0.8.1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -52,9 +52,9 @@
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="500" height="360"/>
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
<view key="contentView" misplaced="YES" id="2">
<rect key="frame" x="0.0" y="0.0" width="500" height="360"/>
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
@@ -84,7 +84,7 @@ Gw
</connections>
</button>
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
<rect key="frame" x="13" y="40" width="474" height="310"/>
<rect key="frame" x="13" y="40" width="474" height="334"/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="General" identifier="1" id="358">
@@ -281,11 +281,11 @@ Gw
<tabViewItems>
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
<view key="view" id="88i-IZ-Yev">
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="61"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ztz-iY-hWV">
<rect key="frame" x="64" y="73" width="50" height="16"/>
<rect key="frame" x="64" y="23" width="50" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Rounds" id="uUQ-9s-M5E">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -293,7 +293,7 @@ Gw
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8aq-34-rcd">
<rect key="frame" x="120" y="70" width="150" height="21"/>
<rect key="frame" x="120" y="20" width="150" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="150" id="cdb-ED-zB3"/>
</constraints>

View File

@@ -97,7 +97,7 @@
<rect key="frame" x="20" y="26" width="233" height="396"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
<rect key="frame" x="1" y="1" width="231" height="394"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="36" rowSizeStyle="automatic" viewBased="YES" id="137">
<rect key="frame" x="0.0" y="0.0" width="231" height="394"/>
@@ -589,7 +589,7 @@
<rect key="frame" x="20" y="136" width="261" height="163"/>
<clipView key="contentView" id="aDE-WT-YIv">
<rect key="frame" x="1" y="1" width="259" height="161"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="caM-L6-UHC">
<rect key="frame" x="0.0" y="0.0" width="259" height="161"/>
@@ -770,7 +770,7 @@
<rect key="frame" x="0.0" y="0.0" width="290" height="268"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
<rect key="frame" x="1" y="1" width="288" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
<rect key="frame" x="0.0" y="0.0" width="288" height="266"/>
@@ -792,7 +792,7 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
<prototypeCellViews>
<tableCellView identifier="SelectedCell" translatesAutoresizingMaskIntoConstraints="NO" id="196" customClass="MPCustomFieldTableCellView">
<rect key="frame" x="1" y="1" width="227" height="53"/>
<rect key="frame" x="0.0" y="0.0" width="227" height="53"/>
<subviews>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
<rect key="frame" x="3" y="10" width="114" height="21"/>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -16,7 +16,7 @@
<customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<point key="canvasLocation" x="140" y="154"/>
<point key="canvasLocation" x="-229" y="178"/>
</customView>
</objects>
</document>

View File

@@ -170,7 +170,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
NSLocalizedRecoverySuggestionErrorKey : NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION", ""),
NSLocalizedRecoveryOptionsErrorKey : @[ NSLocalizedString(@"CHANGE_PASSWORD_WITH_DOTS", ""), NSLocalizedString(@"CANCEL", "") ],
NSRecoveryAttempterErrorKey : recovery
};
};
if(outError != NULL) {
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo];
}
@@ -423,17 +423,17 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
[passwordInputController requestPasswordWithMessage:NSLocalizedString(@"EXTERN_CHANGE_OF_MASTERKEY", @"The master key was changed by an external program!")
cancelLabel:NSLocalizedString(@"ABORT_MERGE_KEEP_MINE", @"Button label to abort a merge on a file with changed master key!")
completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
if(!didCancel) {
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init];
[compositeKey addKey:[KPKKey keyWithPassword:password]];
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
}
// just return yes regardless since we will display the sheet again if needed!
return YES;
}];
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
if(!didCancel) {
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init];
[compositeKey addKey:[KPKKey keyWithPassword:password]];
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
}
// just return yes regardless since we will display the sheet again if needed!
return YES;
}];
sheet.contentViewController = passwordInputController;
[self.windowForSheet beginSheet:sheet completionHandler:^(NSModalResponse returnCode) { /* nothing to do, rest is done in other handler! */ }];
}
@@ -714,9 +714,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
newGroup.title = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group");
newGroup.iconId = MPIconFolder;
KPK_SCOPED_DISABLE_UNDO_END;
[newGroup addToGroup:parent];
[newGroup.undoManager setActionName:NSLocalizedString(@"NEW_GROUP", "Action name for a newly created group")];
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddGroupNotification
@@ -851,12 +851,12 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
}
[self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_ACTION_NAME", @"Action name for duplicating entries"), self.selectedEntries.count]];
if(lastDuplicate) {
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
object:self
userInfo:@{ MPDocumentEntryKey: lastDuplicate }];
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
object:self
userInfo:@{ MPDocumentEntryKey: lastDuplicate }];
}
}
- (void)duplicateGroup:(id)sender {
for(KPKGroup *group in self.selectedGroups) {
@@ -890,6 +890,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
KPKGroup *targetGroup = targetGroups.count == 1 ? targetGroups.firstObject : nil;
if(self.encrypted || self.isReadOnly) {
if(anItem.action == @selector(revertDocumentToSaved:) ||
anItem.action == @selector(browseDocumentVersions:)) {
return YES;
}
return NO;
}

View File

@@ -41,7 +41,7 @@ NSString *const MPPathControlDidSetURLNotification = @"MPPathControlDidSetURLNot
- (instancetype)initWithCoder:(NSCoder *)coder {
/* FIXME: this doesn't work well anymore. Need more work, see: https://www.mikeash.com/pyblog/custom-nscells-done-right.html */
self = [super initWithCoder:coder];
self.delegate = self;
self.delegate = self;
[self _setupCell];
return self;
}
@@ -68,11 +68,24 @@ NSString *const MPPathControlDidSetURLNotification = @"MPPathControlDidSetURLNot
if([self.delegate respondsToSelector:@selector(pathControl:willDisplayOpenPanel:)]) {
[self.delegate pathControl:self willDisplayOpenPanel:panel];
}
[panel beginWithCompletionHandler:^(NSModalResponse result) {
if(result == NSModalResponseOK) {
self.URL = panel.URLs.firstObject;
}
}];
// fall back to modal sheet when browsing Versions. Otherwise we would get kicked out of the TimeMachien UI
// #1206 See Unable to use Time Machine function when have a KeyFile
// Setting NSDocumentRevisionsDebugMode=1 will prevent TimeMachien from exiting even when the openPanel is not shown as sheet
NSDocument *document = self.window.windowController.document;
if(document.isInViewingMode) {
[panel beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse result) {
if(result == NSModalResponseOK) {
self.URL = panel.URLs.firstObject;
}
}];
}
else {
[panel beginWithCompletionHandler:^(NSModalResponse result) {
if(result == NSModalResponseOK) {
self.URL = panel.URLs.firstObject;
}
}];
}
}
- (void)pathControl:(NSPathControl *)pathControl willDisplayOpenPanel:(NSOpenPanel *)openPanel {

View File

@@ -2,13 +2,13 @@
{
"name": "AutotypeURL",
"description": "Extract URLs from Browsers to enhance Global Autotype",
"download": "https://github.com/MacPass/AutotypeURL/releases/download/1.0/AutotypeURL-1.0.mpplugin.zip",
"download": "https://github.com/MacPass/AutotypeURL/releases/download/1.3/AutotypeURL-1.3.mpplugin.zip",
"source": "https://github.com/MacPass/AutotypeURL",
"currentVersion": "1.0",
"currentVersion": "1.3",
"bundleIdentifier": "com.hicknhacksoftware.AutotypeURL",
"compatibilty" : [
{
"pluginVersion": "1.0",
"pluginVersion": "1.*",
"minimumHostVersion" : "0.7.10"
}
]