Commit graph

153 commits

Author SHA1 Message Date
Fabian Henneke
d192ab2d9a
Work around Chrome Autofill issue (#921) 2020-07-07 20:32:57 +05:30
Harsh Shandilya
5d170249cd
Major UI overhaul and the introduction of a new icon (#920)
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-07-07 19:18:24 +05:30
Fabian Henneke
ca9c951a53
Fill OTP fields with SMS codes (#900)
* Fill OTP fields with SMS codes

* Allow SMS OTP fill also for web origins

* Introduce free and nonFree build variants

* Fix up workflow

* Improve layout and feature detection

* Workflow changes

* Add Changelog entry

* github: update release workflow for nonFree/Free split

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* Switch to lifecycleScope

* github: make snapshot deploy free variant

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-07-02 13:49:32 +02:00
Harsh Shandilya
5e74507d5b
Allow importing TOTP configuration through QR codes (#903)
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-06-30 19:21:49 +05:30
Harsh Shandilya
063c1a1144
Reintroduce TOTP support (#890)
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-06-29 12:08:59 +05:30
Diogenes Molinares
0a4bcc57f5
Avoid destination's file outside repository (#861) 2020-06-18 19:49:31 +05:30
Diogenes Molinares
23b488a8eb
Add support for category renaming (#854)
* rename category

* changed CHANGELOG

* IDE Refactor

* Address review comments

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* change Stack to List and fix bug when empty category name

* create intermediate folders

* little fixes and KDoc added

* Reuse existing move code

* change button Cancel => Skip

* use canonicalPath to confirm destination inside repository

* change error message

* update KDoc

* show different error to user

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
Co-authored-by: Fabian Henneke <fabian@henneke.me>
Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-06-18 14:07:26 +02:00
Fabian Henneke
33b3f54921
Refactor password generation (#860)
* Refactor password generation

* Update Extensions.kt

* Update app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>

* Address review comments

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-06-18 12:04:33 +02:00
Harsh Shandilya
8ff37e953f
Improve bulk deletion and password move flow (#855)
Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-06-17 18:35:46 +05:30
Diogenes Molinares
faff735a08
Properly support password renaming (#852)
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-06-14 15:01:43 +05:30
Harsh Shandilya
d8231e112a
Break down PGP Activity into focused sections (#776) 2020-06-12 20:28:15 +05:30
Fabian Henneke
2fa03e3fa0
Allow custom public suffixes for Autofill (#841)
Adds a preference that allows the user to specify domains that are then
treated as additional public suffixes for the purposes of Autofill.
2020-06-09 13:45:23 +02:00
Harsh Shandilya
5a34f444c2
Completely revamp decrypted password screen (#817)
* Completely revamp decrypted password screen

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* update changelog

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-05-31 10:12:31 +02:00
Fabian Henneke
2428d4c0de
Switch password authentication over to SSHJ (#811)
* Switch password authentication over to SSHJ

* Address review comments and refactor further
2020-05-30 19:39:17 +02:00
Harsh Shandilya
e7463ec24c
Remove HOTP/TOTP support (#806) 2020-05-28 22:42:13 +05:30
Fabian Henneke
de4ce44531 Add specific error messages to GitServerConfigActivity 2020-05-14 12:00:30 +02:00
Fabian Henneke
698499ba6d
treewide: Reformat XML resources again (#774) 2020-05-14 00:22:49 +05:30
Harsh Shandilya
c0332c42ff
treewide: fix copyright template and apply to all files (#773)
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-05-13 21:01:41 +05:30
Harsh Shandilya
b16620b55c
Add setting for fallback username (#772)
* PasswordEntry: remove useless annotations

Turns out VisibleForTesting only applies for documentation purposes. Boo >:(

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* PasswordEntry: silence locale warning

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* Add setting for fallback username

Fixes #763

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-05-11 22:13:03 +02:00
Harsh Shandilya
4c461fb174
Introduce no-auth mode for connections (#768)
Fixes #758
Fixes #526
2020-05-08 20:50:04 +05:30
Harsh Shandilya
69e887f3d8
Better handle non-git repositories (#756) 2020-05-03 01:39:16 +05:30
Harsh Shandilya
8cada17bcb
Add toggle for debug logging (#745) 2020-04-25 20:34:33 +05:30
Harsh Shandilya
f89d5c282f
Improve UX around settings items (#744)
Fixes #461
2020-04-25 16:53:40 +05:30
Harsh Shandilya
73695e2493
auth: redo implementation with a cleaner and simpler API surface (#741) 2020-04-24 15:00:33 +05:30
Harsh Shandilya
bee20ac44a
Better detect uninitialized repositories and offer to clone (#738)
* 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>
2020-04-24 02:05:07 +05:30
Harsh Shandilya
3d8cea5966
Improve permission handling logic (#732)
* Improve permission handling logic

Ensure we always ask for storage permissions when required

* Refactor storage permission checks and invert return value

* PasswordStore: improve permission grant flow

* strings: slightly reword permission grant request message

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

Co-authored-by: Fabian Henneke <fabian@henneke.me>
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-22 21:57:52 +05:30
Harsh Shandilya
e6ea5f6a08
PasswordStore: onboard users to Oreo autofill
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-21 18:39:00 +05:30
Harsh Shandilya
17385892cb
PasswordFragment: Replace fab options with descriptive bottom sheet
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-19 14:11:19 +05:30
Harsh Shandilya
beaec159e8
Update SSH clear passphrase preference to handle HTTPS (#716)
* Update SSH clear passphrase preference to handle HTTPS

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* Address review comments

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* Address review comments

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>

* Explicitly set preference to visible if it can do anything

* Address review comments

Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-04-17 20:12:48 +02:00
Harsh Shandilya
b94b52a42d
Refactor Git related activities (#685)
* 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>
2020-04-17 18:36:07 +05:30
Fabian Henneke
8b4751f825
Improve SSH private key validation (#713)
* Improve SSH private key validation

* Address review comment
2020-04-16 18:34:55 +05:30
Diogenes Molinares
f269bc7d28
See file's metadata to validate SSH key (#709)
* See file's metadata to validate SSH key

* See file's metadata to validate SSH key

* change exception to throw and refactoring

* catch IOException and IllegalArgumentException as equal

* run ./gradlew spotlessApply

* Apply suggestions from code review

* validate BEGIN, END markers and size != 0

* Apply suggestions from code review

* Update app/src/main/java/com/zeapo/pwdstore/UserPreference.kt

* Don't throw on SSH key import failure

* Style nits

* Codestyle and copy nits

Co-authored-by: Fabian Henneke <fabian@henneke.me>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-16 17:21:24 +05:30
Fabian Henneke
7cd6f1d1cf Add a switch between Fuzzy and StrictDomain mode to Autofill search view 2020-04-15 22:47:41 +05:30
Fabian Henneke
ec8bcae8fa
Improve Autofill enable UI and flaky browser list (#704) 2020-04-14 11:43:57 +02:00
Fabian Henneke
575ef84726
Modernize legacy RecyclerView adapters (#694)
* 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>
2020-04-10 16:48:42 +05:30
Fabian Henneke
e3a49e2632
Modernize file listing and search in AutofillFilterActivity (#683)
* WIP: Modernize file listing and search

* Refactor

* Implement fuzzy search

* Improve ViewModel API and introduce Adapter

* Integrate new search into AutofillFilterActivity and dedebounce

* Improve no results layout

* Reformat

* Highlight origin in FileBased directory structure

* Extract highlighting logic into DirectoryStructure

* Trim whitespace before searching

* Remove debug logging

* Remove more debug logging

* Organize imports

* Remove imports

* Update app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt

Co-Authored-By: Harsh Shandilya <me@msfjarvis.dev>

* Address review comments

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-07 02:26:52 +05:30
Harsh Shandilya
bc463f3c64
Significantly improve app theming (#679)
* Update CHANGELOG

* Use outlined box style in folder creation dialog

* Add user-facing choice for app theme

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-03-29 20:03:50 +05:30
Fabian Henneke
fde16c60f4
Make preferred directory structure for Autofill configurable (#660)
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
2020-03-25 18:13:04 +01:00
Fabian Henneke
bebe434683
Add support for Oreo Autofill (#653)
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>
2020-03-24 14:03:40 +01:00
Harsh Shandilya
98e9f6734a
Revise copy (#656)
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-03-21 17:44:13 +05:30
Aditya Wasan
65b8e77f92
Show snackbar when git repo is not initialized (#651)
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
2020-03-07 21:54:34 +05:30
Harsh Shandilya
73058d10a8
Resolve various memory leaks (#637)
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>
2020-03-05 21:05:50 +05:30
glowinthedark
947e41105b
Add xkpasswd-style password generator (#633)
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-03-01 02:16:31 +05:30
Gigahawk
9255583f2d
Better UI flow (#630)
* 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>
2020-02-20 11:49:09 +05:30
Harsh Shandilya
f295e97de6
Allow creating folders (#623)
* 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>
2020-01-28 01:49:37 +05:30
Gigahawk
c129fb347e Add full path open in autofill dialog (#609) (#610)
Fixes #609
2020-01-21 09:18:39 +05:30
Harsh Shandilya
1f158c5ca6
Add option to show hidden folders (#571)
* Add option to show hidden folders

Fixes #446

* Simplify filtering

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-11-13 11:34:57 +05:30
Aditya Wasan
9acad2abf6 Convert java files to kotlin (#570)
* 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>
2019-11-13 00:55:56 +05:30
Harsh Shandilya
5df7be10b5
Authenticator: Allow using PIN/password/pattern as fallbacks
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-27 18:21:19 +05:30
Harsh Shandilya
cdf45bc323
Add setting to save OpenKeychain auth keyid (#554)
* Add setting to save OpenKeychain auth keyid

* Hide pref not disable

Co-Authored-By: Reagan Sanders <vexofp@gmail.com>
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-27 00:14:42 +05:30