[FIXED] Deadlock when NSUserDefaultsDidChange is handled on the main queue when the main queue is waiting for the persistence queue.
[FIXED] Logging of cloudEnabled.
[REMOVED] Debug NSLogs.
[UPDATED] Log out when user is no longer available.
[UPDATED] Re-enabled cloud store switching using new USM store enumeration facilities.
[UPDATED] Lower log level for test and crash logs so we can see why stuff fails.
[IMPROVED] Fading of share/tip delayed, nicer effect.
[FIXED] No automatic re-login when store changes and saveKey is YES for the current user.
[UPDATED] Misc UI improvements.
[REMOVED] Unassigned app icons and launch images.
[FIXED] Counter should default to 1, not 0.
[FIXED] Some issues with the status bar in the MPMainViewController.
[UPDATED] AppIcons and LaunchImages converted to asset catalog.
[ADDED] New iOS 7 size app icon images.
[IMPROVED] Removed password logic out of MPEntities so that it can be backgrounded without relying on the persistence layer staying up.
[IMPROVED] Some workload removed from the main thread.
[UPDATED] Show users and sites in cloud stores of log VC.
[ADDED] Ability to turn off iCloud if corruption happens.
[ADDED] When switching iCloud on/off, provide user the option to migrate his current sites.
[ADDED] Ability to get to settings & logs from unlock VC.
[ADDED] More verbose log printing when trace enabled.
[ADDED] More exception handling on application launch; we can't allow any of this to keep us from being able to open the emergency generator.
[UPDATED] Only apply UI theming on iOS 6-.
[ADDED] Modern way of hiding the status bar on iOS 7.
[UPDATED] Fixed some warnings by explicitly type-casting NSNotFound checks.
[UPDATED] Fixed some Xcode 5 warnings by doing project configuration improvements.
[ADDED] Mac: Open at Login.
[UPDATED] Mac: Mark users menu item when no user selected.
[ADDED] Mac: Toggle open-at-login and enable-cloud from initial window.
[ADDED] On first start, show the status item by highlighting and opening it.
[UPDATED] Using RHStatusItemView for status item so we can highlight it programmatically.
[FIXED] Activate app on startup so apps window shows.
[ADDED] NSAlert when trying to open password window with no user selected.
[UPDATED] Crisper menu icon.
[ADDED] Window to advertise iOS app.
[FIXED] Under some conditions, quit didn't work reliably.
[UPDATED] Mac UI improvements.
[UPDATED] Mac Executable Name 'Master Password'.
[FIXED] Don't unset saveKey when loading the key fails.
This causes saveKey to fail as soon as it's synced to a device that hasn't saved the key yet.
[FIXED] A bunch of threading violation issues with thread-confined MOCs.
[FIXED] Import of ubiquity changes was using wrong delegate method and MOC.
[FIXED] Password type change broken when password type causes a class change.
[IMPROVED] Fancier animation of emergency generator appearance.
[MOVED] iOS code from MPAppDelegate_Shared to MPiOSAppDelegate.
[FIXED] Perform MOC saving in MOC perform blocks.
[FIXED] Mac: Activate app when showing password window and not active.
[FIXED] Hide overlay while corruption dialog is up.
[FIXED] Hide corruption dialog when reloading store.
[ADDED] Migration to file-based StoreUUID.
[IMPROVED] Cleaner, more modular, migration code.
[FIXED] Don't hook activation to show password window: too annoying when focus shifts.
[FIXED] Don't set the active user when just importing ubiquity changes, it causes a log-out.
[ADDED] Mac: Ability to rebuild iCloud.
[REMOVED] Mac: wasRunning logic to avoid password window appearance on first activation.
[FIXED] Mac: Retrieve siteName from main thread.
[FIXED] Deselect new user avatar if MOC is unavailable when tapping it.
[FIXED] Position of avatars & spinner on iPhone 5.
[IMPROVED] Issue button in review dialog.
[MOVED] Creation of new elements moved to shared code.
[FIXED] When switching user, unset active key.
[FIXED] Synchronize content calculation to avoid race issues while typing.
[ADDED] Ability to create new sites.
[FIXED] Unset active element when hitting backspace or escape.
[FIXED] Add extensions to Icon as well to CFBundleIconFiles because Xcode doesn't seem to listen to the Apple docs.
[FIXED] Removed newsstand metadata: this is not a newsstand app.
[ADDED] Safer store migration: don't delete the old store, allowing the client to downgrade.
[ADDED] Log checkpoints and send to TestFlight too.
[FIXED] Describe booleans as YES/NO, not 1/0.
[ADDED] Log Inspector, shake on preference screen to open log.
[ADDED] Trace Mode: Log at trace level.
[FIXED] Log messages weren't being recorded for inclusion in feedback.
[FIXED] More careful Core Data threading and context usage.
[FIXED] iOS bug when migrating, now using USM's copy migration.
[ADDED] Better handling of store changes while in Main VC and Element List VCs.
[UPDATED] TestFlight.
[FIXED] Mac: References to MPAppDelegate that should be OS-independant now use MPAppDelegate_Shared.
[FIXED] Mac: Threading and content UI updates.
[FIXED] iOS: Spinner was showing when going back to unlock VC.
[ADDED] Ability to change style of password window.
[FIXED] Some window activation oddities (WIP).
[UPDATED] Renamed executable iOS/Mac specific in the hopes of helping with IDE conflicts.
[FIXED] Don't create a moc when the main moc is unset.
[FIXED] Load the MPUserEntity into the moc when doing selectUser:
[FIXED] Remove KVO on activeUserObjectID, isn't used anymore. Instead, override setActiveUser:
[FIXED] Don't show the password window on launch.
[FIXED] Don't force unlock of the key whenever unset - only when the window pops.
[REMOVED] Migration - this app is not ready for explicit migration, additionally, this block appears to cause a lock-up of the PSC.
[ADDED] Initial page-flip animation on opening of other apps VC to make it clear to the user that pages can be flipped.
[ADDED] Copying of password from emergency generator.
[ADDED] Marquee animate the bottom tip to also hint about the emergency generator.
[ADDED] Emergency Generator!
[ADDED] Easier method for just using the master password algorithm bare.
[UPDATED] Pictograms in action popup and centering of text.
[UPDATED] Made activeUser access follow same pattern as activeElement which makes it more clear what the thread model is like.
[FIXED] Save after update of all elements.
[UPDATED] Tool tips hidden in IB now; makes it less cluttered.
[FIXED] Dismissing view controllers when logging out.
[UPDATED] Simplified AllSites VC in IB (removed the unused navVC).
[UPDATED] Outdated sites are now shown in the AllSites VC.
[ADDED] An update-all-sites button when showing outdated sites in the AllSites VC.
[REMOVED] Search scopes.
[ADDED] Sorting elements by recency and usage count now.
[FIXED] Initial positioning of help container.
[ADDED] Setup VC for rememberLogin.
[FIXED] Setup wasn't showing up on app load.
[FIXED] More temporary moc fixes and main thread fixes.
[IMPROVED] Guide now plays an introduction animation.
[FIXED] Setup iCloud switch is now functional.
[FIXED] Pass along temporary mocs, they appear to be stored __weak in the object and we can't rely on them not being nil.
[ADDED] Setup flow for initially setting the iCloud preference.
[ADDED] New guide.
[IMPROVED] Hierarchy and flow of unlock -> main.
[IMPROVED] Migration code cleanup.
[FIXED] When local store migration fails, fall back to opening the old local store if possible.
[FIXED] Better migration of cloud preferences.
[FIXED] Better checking of when to perform cloud store migration.
[FIXED] Always migrate the local store, even when the cloud store is enabled.
[UPDATED] Removed the loading indicator in favor of a loading overlay.
[UPDATED] Sorted the file references lexicographically.
[FIXED] Moved migration into the persistence queue by performing it on willLoadStore.
[FIXED] Re-enabled cloud after migration.
[UPDATED] Allow rebuilding the old cloud store if it got deleted locally.
[FIXED] Properties in categories aren't synthesized. Using fancy new PearlAssociateObjectProperty from Pearl now to make a fake property.
[FIXED] Show overlay on UI thread.
[FIXED] ONLY_ACTIVE_ARCH = NO because weird codesign errors happen on second build with it set to YES.
modified: External/Pearl
[ADDED] A more generic element listing controller, now used by the
search controller and all elements listing controller.
[IMPROVED] Improved change detection and UI handling in the element
listing controllers.
[FIXED] Bug with previewing generated password types for
non-generated elements.
[ADDED] Display the password type when searching for sites.
[ADDED] Indicate the strength of a password type by time to crack.
[ADDED] Display a password prediction below each password type on
the type selection screen.
[MOVED] Moved the Short type below the Basic type because it's less
secure.
[FIXED] Some font regression bugs.
[UPDATE] Font of element content and loginName to Source Code Pro for
improved legibility and distinguishment between O and 0.
[REMOVED] Unused fonts from the bundle to save space.
[FIXED] Set lastUsed when creating a new site since elements can't
be saved without that value set.
[UPDATED] Configuration for tinting of status bar.
Doesn't work yet with the custom navbar container image:
Should check if last row of that image's pixels isn't too
dark. iOS 6 apparently averages it for the tint color.
[ADDED] Modal VC to show all sites.
[UPDATED] All sites button on search bar now uses bookmark button.
[REMOVED] Query string hack for search results button.
[REMOVED] Facebook SDK.
[ADDED] Social framework integration for Twitter & Facebook.
[MOVED] User migration warning state moved into MainVC, out of
data model.
[UPDATED] Major overhaul of Core Data integration. Multiple contexts
and making sure we're on the right thread and the right
context even for read access.
[FIXED] Some iOS 6 deprecation fixes.
[FIXED] Some VC rotation issues.
[FIXED] Mac: Locking shouldn't unset the active user.
[IMPROVED] Mac: Behavior of auto-completing site-name field improved.
[ADDED] Mac: Alert when MP is incorrect when unlocking.
[FIXED] Working migration of old store to new store.
[FIXED] We shouldn't be holding references to CoreData objects anywhere.
In that light, the user NSMenuItems have been fixed.
[MOVED] Extract user migration out of iOS specific codebase.
[UPDATED] iCloud persistence manager.
[ADDED] Mac: Hotkey for signing the user out.
[IMPROVED] Mac: Menu item handling and usability.
[FIXED] Behavior of the Mac menu item and appearance of the password
window.
[ADDED] Disabling menu items while not usable and explaining
disabled items with tooltips.
[UPDATED] Facebook integration bumped for iOS 6.
[FIXED] Bringing Mac version back up to date. Compiles again and
runs with UI bugs.
[ADDED] Mac: User selection.
[FIXED] On iOS5, the app crashed because gesture recognizers of a
scrollview were being replaced. Now properly adding the
desired gesture recognizer to the scroll view preserving the
existing gesture recognizers.
[IMPROVED] Use correct device identifier for TestFlight depending on
whether we're in AdHoc mode or not.
[FIXED] Crash when sending nil config values to Localytics.
[FIXED] Sending email with no recipient caused a crash.
[FIXED] Duplicate persistence coordinator.
[UPDATED] Crashlytics and Localytics SDKs.
[UPDATED] Don't continue the Localytics session when device locked.
[UPDATED] Put Localytics communication on HTTPS for confidentiality.
[ADDED] Tagging screens in Localytics.
[FIXED] Login name copies content instead of login name.
[IMPROVED] Font of password and login name improved for better
differentiation between capital and lower-case letters.
[REMOVED] Cleaned up some check points that weren't really useful.
[ADDED] Added a few new checkpoints with new functionality.
[ADDED] An "other apps" page that introduces Gorillas and DeBlock.
[IMPROVED] Help is now toggled with a drag handle instead of an action
button.
[ADDED] Fade effect to unlock view.
[UPDATED] Signing profiles.
[FIXED] A rare bug that caused the search bar to remain first responder without making it take input or dismissable (hopefully fixed, at least).
[UPDATED] A nil type is never OK. Crash early if it is so.
[UPDATED] Set crashlytics identifiers using its userIdentifier and userName property for good metadata.
[FIXED] Make sure the MOC has a PSC with stores when returning it.
[FIXED] Don't reset the store for just any open error! Only if it's actually incompatible.
[IMPROVED] Remove timestamps from Crashlytics and TestFlight logs, they already provide them.
[FIXED] Avoid crashes in some odd cases where there's no type set.
[FIXED] Import fixes:
- Wait for MOC to become available.
- Progress UI while working.
- Import files exported with a different master password.
- Core Data crashes.
[RENAMED] Site's User name -> Login name.
[FIXED] Core Data crashes related to using entities from old MOCs.
[FIXED] Importing stored content when not logged in with the same key.
[FIXED] Holding entities is a bad idea when MOCs can change. Holding ObjectIDs instead now.
[REMOVED] Disable TestFlight for release, it doesn't work anyway.
[FIXED] Properly handle unlock screen when there is no MOC yet.
[FIXED] Some log statements format strings & arguments.
[IMPROVED] Don't block when MOC is not yet ready, just return nil.
[IMPROVED] Outdated tip links to info, icon links to site search.
[IMPROVED] Minor improvements to error handling during import.
[FIXED] Don't recalculate key for each entry in import list.
[FIXED] Use correct fetch request to find user entity for import.
[FIXED] Properly schedule all use of MOC with performBlock*
[ADDED] Use undoManager to revert failed import changes.
[ADDED] Word wall: Show some random dictionary words while user
thinks of a new master password to give him some
inspiration.
[IMPROVED] Only select user after he choose to reset.
[IMPROVED] Ugly backdrops in the guide images cleaned up.
[FIXED] Export of sites should now include a password version field.
[FIXED] Filename to save exported passwords into should use day of
the month instead of day of the year.
[FIXED] No search predicate was set when search scope button wasn't
set. As a result, sites from other users showed up.
[IMPROVED] A master password key is now better abstracted in an object.
[IMPROVED] A master password algorithm is now better astracted in an
object.
[ADDED] Elements now have a specific algorithm version.
[ADDED] Automatic/explicit migration of elements.
[ADDED] Searching outdated elements.
[ADDED] Allow saving a user name per site. This is an optional
addition, toggled by tapping the new settings icon.
Obviously user names can't be recovered after loss.
[ADDED] Versioning and explicit migration to MPElementEntity.
[ADDED] Upgrade button in case the element needs explicit migration.
[ADDED] Messages in Crashlytics and TestFlight logs upon
initialization so we can easily see it worked and what the
client's versioning looks like.
[IMPROVED] Only show firstRun UI tooltips once.
[IMPROVED] Automatically select the latest user upon load of unlock.
[IMPROVED] Automatically select the user when his password is reset.
[IMPROVED] Hide active element when logging a user out.
[ADDED] "version" to MPElementEntity.
[ADDED] Tool tip, a tip that points at the content tool.
[ADDED] Upgrade tool, a tool used for upgrading outdated elements.
[ADDED] Page controller in guide to see where in the guide you are.
[ADDED] FontReplacer to be able to "use" Exo from IB (by
substituting "Futura").
[FIXED] A crash when loading the main VC because of the reset
password gesture recogniser.
[IMPROVED] Font in tables to standard system fonts.
[IMPROVED] Guide content positioning and sizing making space for pager.
[IMPROVED] Use action sheets instead of alerts when showing destructive
action choices.
[IMPROVED] Make tappable regions at least 44x44pt.
[IMPROVED] Title/message for alert/sheets.
[FIXED] Importing of mpsites with passwords showing for
stored password types.
[FIXED] Don't try to show mail composition dialog when the user has
no mail account configured. This will crash. Instead,
show a friendly popup explaining things.
[IMPROVED] Message of password export emails.
[FIXED] Hierarchy of MPUnlockVC so password field becomes touchable.
[ADDED] Ability to reset a master password from the unlock screen.
[FIXED] Manually retain objects that live next to a VC in a
storyboard within the VC to avoid an OS bug.
[FIXED] Visibility of the deleteTip.
[ADDED] An index to the FAQ.
[IMPROVED] Improved and expanded the FAQ a bit more.
[REMOVED] Apptentive is now implemented by a standard iOS mail
composer window and can optionally include logs.
[IMPROVED] Better inf-level logging of what's going on.
[AUDITED] Made sure no personal is going out through inf+ levels.
[UPDATED] Guide updated with UI changes.
[FIXED] Don't animate pushing the unlock VC when appearance of main
VC is not animated (eg. application startup).
[FIXED] rememberKey -> rememberLogin in settings bundle.
[REMOVED] saveKey from settings bundle.
[UPDATED] Removed lock from the Default image; show a dummy avatar
instead.
[FIXED] Don't forget key when signing out.
[ADDED] User preference for default password type.
[RENAMED] Secure type to Maximum Security.
[FIXED] Logging bug in password generation.
[ADDED] Confirmation popup after new user creation.
[UPDATED] Crashlytics.
[IMPROVED] Sending logs and configuration to crashlytics, added
sendDebugInfo option that allows the user to choose to send
more info. Now also sending a device identifier.
[ADDED] Avatar selection dialog when a new user is created.
[UPDATED] Algorithm updated to reflect advice from randombit.net
cryptography list:
- Add in a salt (user name) to defeat rainbow tables.
- Add in a fixed string to scope the algorithm and avoid
colliding with someone else's similar or identical
algorithm (also helps protect against precalculated
rainbow tables).
- Use HMAC instead of plain SHA to avoid SHA weaknesses.
The old implementation wasn't vulnerable to extension
attacks or other known weaknesses, but HMAC is a safer
choice and will bring up less suspicion.
- Prefix strings by length as an extra precautionary
measure against possible bugs in hash functions.
[ADDED] A new password type: Secure password. 20 characters, not
word-based, very high entropy.
[FIXED] UI bugs and improvements with the avatar display and
password checking state display.
[FIXED] Unlock screen.
[FIXED] Internal fixes.
[ADDED] Avatar selection in preferences.
[ADDED] Implementation of the other preferences.
[IMPROVED] UI of unlock and preferences screens.
[REMOVED] Stop using apptentive for rating questions. Pearl's
built-in functionality seems nicer and more basic.
[ADDED] Some more tool-tips to help the user, to be shown on first
run only.
[FIXED] The site name tip wasn't showing anymore.
[FIXED] Some language and formatting in help.html.
[IMPROVED] Make persistence more lazy to avoid UI blocks.
[IMPROVED] Use "Master Password" as CFBundleDisplayName at runtime. No
home-screen length restrictions there.
[FIXED] Inform Apptentive of significant events.
[FIXED] Immediately open the application on the password entry view
if the key is forgotten instead of revealing the internals
in a blink.
[FIXED] Clean up the UI better when switching between master
passwords.
[ADDED] Ask spelling confirmation when a master password is used
that doesn't have any known sites yet.
[ADDED] iPad HD quality icon.
[IMPROVED] Artworks re-generated, downscale improved, convertImages
improved.
[IMPROVED] Small guide text improvements.
[UPDATED] Help texts updated for current operation and UI.
[IMPROVED] MP-15: Audit and improve log messages.
[ADDED] If an element's counter is 0, generate a time-based OTP
instead. The OTP changes every 5 minutes.
[UPDATED] Change TestFlight preprocessor toggles to
TESTFLIGHT_SDK_VERSION.
[IMPROVED] Change logic behind shared MPAppDelegate to inheritance,
allowing for the common files to implement methods that the
platform-specific class can override.
[IMPROVED] Handling and checking of config changes.
[ADDED] iCloud config toggle, allowing a user to turn on and off
the iCloud store.
[IMPROVED] Explanation of iCloud.
[UPDATED] Check TARGET_OS_IPHONE instead of
__IPHONE_OS_VERSION_MIN_REQUIRED.
[UPDATED] A few TestFlight checkpoints names have been updated.
[ADDED] A few new TestFlight checkpoints for new features.
[ADDED] Warn the user when he's not using iCloud and allow him to
switch back to iCloud.
[FIXED] Migration problems should be fixed non-interactively: The
main thread may well be unavailable which means we may not
be able to actually get a message through to the user. This
would dead-lock the migration problem recovery.
[ADDED] Importing mpsites exports.
[RENAMED] keyHashHex -> keyID.
[RENAMED] Calculated -> Generated.
[FIXED] iOS: Dismiss mail VC when done with it.
[FIXED] iOS: Properly hide content tip icons when a content tip is
shown while one with an icon is still active.
[FIXED] iOS: Settings bundle was using old keys.
[ADDED] OS X: Lots of warning checks when compiling.
[ADDED] OS X: Ability to enable and disable iCloud.
[ADDED] OS X: Support for rememberKey & saveKey.
[UPDATED] storeKey -> saveKey: makes more sense to people.
[IMPROVED] OS X: Password display window fancier.
[UPDATED] Moved shared MPAppDelegate code into separate files
depending on the code's responsibility.
[UPDATED] iCloud implementation removed in favor of
iCloudStoreManager's managed implementation.
[FIXED] iCloud configuration made AppStore friendly.
[UPDATED] Pearl to ARC.
[FIXED] Crash related to persistence changes that caused UI updates
while other UI changes were ongoing.
[IMPROVED] Real description of MPElementEntities and use content
whenever the password is requested.
[IMPROVED] iOS: Handling of search result fetching and table reloading.
[ADDED] OS X: A status item to activate the MP window.
[ADDED] OS X: A global hotkey (cmd-ctrl-p) to activate the MP
window.
[ADDED] OS X: Make the MP window dismissable by hitting Esc.
[ADDED] OS X: Copy the site content by hitting Enter.
[FIXED] OS X: Make the password field first responder.
[FIXED] OS X: Don't pop the password window multiple times if the
application gets activated while the key isn't set yet.
[IMPROVED] OS X: Remove the MP icon from the dock.
[REMOVED] OS X: Disabled ability to add new sites from OS X until I
have time to implement it properly without causing
duplicates etc.
[MOVED] iCloud and Core Data support was centralised to iOS and OS X
to make sure both platforms always use the same container
configuration.
[FIXED] iCloud sync problems.
[REMOVED] iCloud KV is not used/needed.
[ADDED] Crashlytics, Localytics.
[IMPROVED] Async TestFlight takeOff.
[REMOVED] TestFlight token hidden.
[FIXED] Warnings, mostly to do with sign conversions.
[ADDED] Warning messages whenever site's password changes, allowing
the user to cancel the operation.
[ADDED] Make password counter resettable by holding down on the
counter increment button.
[FIXED] Schedule all UI-changing methods on the main thread. Fixes
some UI bugs.
[FIXED] Attempt to calculate password for deleted element.
[FIXED] MP-6: Close open alert when switching sites.
[FIXED] MP-7: Remind user to change site's password when creating a
new site.
[ADDED] OS X: Master password input and changing.
[ADDED] OS X: Autocompletion by searching Core Data for previously
used sites.
[ADDED] OS X: Working password generation for sites.
[FIXED] Bad ciphering on little endian machines: Convert bytes to
network endian before using them as numbers.
[FIXED] Opening of Core Data store when iCloud is unavailable.
[MOVED] Key logic now in a common class extension on MPAppDelegate
so it can be shared between iOS and OS X apps.
[MOVED] MPConfig for sharing between iOS and OS X apps.
[CHANGED] keyphrase -> key.
[FIXED] Switching between guide and unlock screen.
[ADDED] Sign out button in action so you can sign in with a
different master password.
[REMOVED] Change password from MPConfig. There are better facilities
for this now.
[FIXED] Image names in the lockscreen.
[UPDATED] TestFlight SDK updated to 0.8.3
[ADDED] Log >=info messages to TestFlight
[ADDED] Hide status bar while locked.
[ADDED] Show all sites when search results icon is tapped.
[IMPROVED] Search table cells.
[ADDED] Fancy master password input screen.
[FIXED] Key size of stored passwords.
[FIXED] Several UI fixes.
[FIXED] The counter wasn't correctly added to the cipherKey.
[IMPROVED] Site style improvements.
[UPDATED] Site algorithm explanation update.
[FIXED] Lock keychain items while device is locked.
[ADDED] Implemented Device-Private passwords by storing them in the
keychain.
[ADDED] Implemented encryption for stored passwords.