* PasswordRepository: more comprehensive check for valid repository
* PasswordFragment: Give 'repo uninitialized' Snackbar some purpose in life
* GitOperationActivity: finish immediately when an unhandled request code is used
* PasswordFragment: Make uninitialized repo Snackbar indefinite
* spotless
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Refactor git logic into separate parts
* Extract hardcoded strings
* Add KDoc to updateHostname, remove unused field
* Cleanups
* Fix dialog message
* Wire in repository clone flow
* spotless
* Remove unused method
* Cleanup GitActivity
- Rename to GitOperationActivity.
- Ensure identityBuilder is always closed regardless of what fragment uses it.
- Remove hardcoded "Operation" strings and replace with REQUEST_ARG_OP.
- Apply a transparent theme to GitOperationActivity make the UI less jarring.
* Tweak some stupidly worded dialog messages
As pointed out in #629, these strings are shoddily worded and do not express any clear intent to the
user, leaving them confused and angry.
* GitOperationActivity: wrap Context to ensure right theme is used
* spotless
* undo build.gradle change
* Use correct parent theme, remove now useless wrapping
* GitServerConfigActivity: fix repository clone flow
* temp: disable leakcanary
framework leaks on Samsung are pissing me off
* Make system bars transparent in git activity
* Tweak HTTPS password layout
* Unhardcode wrong passphrase string
* Store SSH passphrase in EncryptedSharedPreferences
Also revamp the dialog to look a bit better
* Implement support for remembering HTTPS password
Fixes#521
* Try to patch HTTPS remote creation logic
* Update security-crypto
* Clear saved passphrase/password on auth failure
* Revert "Update security-crypto"
Broken on R DP2.1
This reverts commit 4b20371dd4.
* Revert "temp: disable leakcanary"
This reverts commit 2db7d41bd6.
* Update CHANGELOG
* Remove spacer
* Remove useless override
* Wrap git server activity in a ScrollView
* GitOperation: always finish calling activity when dialogs are dismissed
* Wipe saved password/passphrase when hostname changes
* Don't commit prefs updates
* Don't call listFiles excessively
* Finish activity after saving configuration
* Make ConnectionMode and Protocol enum classes
* Change SSH key passphrase key, don't wipe on host change
* Reimplement BaseGitActivity.updateUrl (was updateHostname)
* Use SharedPreferences.edit KTX extension
* Disable inapplicable connection modes depending on scheme
* BaseGitActivity: annotate onDestroy with CallSuper
We'll leak the identityBuilder connection otherwise
* Move input hack for AlertDialog into an extension function
We re-use this in many places
* Fix protocol/mode toggle issue and consistenly name options
* Fix a crash when opening GitServerConfigActivity without a repo
* Fix OpenKeychain callbacks by moving onActivityResult to BaseGitActivity
* Run spotlessApply
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Fabian Henneke <fabian@henneke.me>
* Modernize legacy RecyclerView adapters
Introduces new adapters based on the SearchableRepositoryViewModel and
using androidx.recyclerview.selection for multiselection support.
The following positive effects in behavior are observable to end-users:
- Search and navigation actions are executed on IO threads.
- RecyclerViews are now animated during searches (but not navigations).
- Exact scroll position is restored when navigating back.
- The ActionBar title is updated with the current folder name.
The following negative effects may warrant attention:
- Support for the "always search from root" setting has been removed.
- Due to a limitation of the fast scroll dependency, using the scroller
may result in unwanted multiselections. If this is not fixed in the
library, native fast scroller capabilities could be used, but these
are more limited in appearance and to not offer popups.
* Fix lint
* Fix FastScroller/SelectionTracker incompatibility
* Immediately react to settings changes
* List directory entries when search term is blank
* Use isEmpty() instead of == ""
* Replace adapter inheritance with builders and fix selection drags
* Remove dividers in password lists
* Run spotlessApply
* Use a more logical string in action mode
* Commonize and constify path bundle key
* Make lambda parameter name explicit
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Some users keep their password files in a directory structure such as:
/example.org/john@doe.org.gpg
while others prefer the style:
/example.org/john@doe.org/password.gpg
This commit adds a setting that allows to switch between the two. All Autofill
operations, such as search, match, generate and save, respect this setting.
Note: The first style seems to be the most widely used and is therefore kept as
the default. The second style is mentioned on the official Pass website at:
https://www.passwordstore.org/#organization
Adds support for the Autofill feature first available in Android Oreo.
In compatible apps and browsers, login forms are automatically detected and
the user is presented with options to fill or generate credentials. In most apps
and certain browsers, the service will also offer to create new Password Store
entries from credentials entered into login forms.
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
This migrates the clipboard clear logic into a foreground service that allows us to also provide a notification that runs the clear task immediately on click, rather than wait for the timeout.
Co-authored-by: Aditya Wasan <adityawasan55@gmail.com>
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Filter against entire pathname when searching
* Add option to directly open search dialog on start
* Replace basic search filter with fuzzy search
* Update CHANGELOG
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Open search in onResume, force search icon to always show
* Add option to always search from root directory
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
* Introduce EmitExpandableTransformationBehaviour
* Implement expand transition
* More folder work
* Add icons and tweak layout clipping
Rishi again with the icon rescue
* Theming rework
* Dont set tag
* Update list and commit after creating folder
* Fix theme issues
* Add dialog title
* Fix hint text color
* Remove commit method
* Cleanup
* Update CHANGELOG
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
Co-authored-by: Aditya Wasan <adityawasan55@gmail.com>
* Break SshKeyGen into multiple files
* Use tinted material button
* Convert PasswordStore to kotlin
* Remove SshKeyGen
* Remove explicit imports and other tweaks
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
* [WIP] Initial biometric authentication support
* Redirect decryption app shortcut to go through LaunchActivity
* UserPreference: Clear existing shortcuts when toggling password auth
Clears out any auth-bypassed entries that exist
* Fix hilarious copypasta derp
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
Caveats:
- The openpgp preference had to be removed because the open-intents developers are too lazy to update their libraries. Over the coming weeks I will be reimplementing a local solution for this instead.
- The autofill dialog is broken but I since it is being worked on in #410 already I'm not going to bother fixing it.
* Add 'SHOW EXTRA CONTENT' button.
* Show the extra content after clicking the 'SHOW EXTRA CONTENT' button.
* Change the regular button to a toggle button and add text for hiding extra contents.
* Change the implementaton of showing/hiding extra contents to accomodate using a toggle button.
* Add padding to the top of the button.
* use storage access framework
* UserPreference: Add back warning about using SDCard root directory
* UserPreference: Fix IDE warnings
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
* Clipboard now is cleared after manual copy
* Spanish translation added
* Spanish translations for commit messages updated
* Now can generate passwords free of lowercase (for example only numbers, uppercase or symbols)
Also it makes sure that uppercase is included when the generated char is ambiguous and discarded
* Clipboard now is cleared after manual copy
* Spanish translation added
* Spanish translations for commit messages updated
* Validation of value 0 in general_show_time before start timer
The clear_after_copy preference is disabled according with that value.
* Like clear_after_copy, clear_clipboard_20x now depends on the value of general_show_time too
* use full password path in add/edit git commit message
* commit strings are format strings
* use format strings in other languages
* use move/rename commit message
* Display HOTP code if password contains HOTP secret, unify HOTP and TOTP code
* Add ability to show HOTP instead of showing every decrypt
* Fix off by 1 error
* fix return intent logic so that edits and HOTP increments are properly committed
* fix linting errors
* Fix broken logic for case when a password is created
* add ability to choose if password entry will be updated on HOTP code calculation
* Fix clear clipboard 20 times
As described in issue #419 there was a bug when clearing clipboard 20 times because from "0" to "< 19" there are 19 numbers, not 20. 19 is never reached because of "less than" operator. This could be also fixed by changing the operator from "=" to "<=" but I think is better to change the number of times to 20.
* Fixed clear clipboard 20 times hint
Fixed the hint to match what really happens, consecutive numbers are stored in the clipboard 20 times.
* Fix totp elements layout
* Add missing rule
* Make username copy button invisible by default
* Fix totp copy button string
* Don't show username fields if not set
* show age for passwords in detail view
Implements #330.
This fetches the latest commit where the respective password file was
changed from the current HEAD and outputs the relative time since
the last change on the decrypt page.
* Move lastChanged logic out of PgpActivity
This nicely encapsulates the lastChanged logic (and thus separates it
from dependencies like git). The last changed date is now passed as a
timestamp using the Intent's extra info.