summaryrefslogtreecommitdiff
path: root/app
AgeCommit message (Collapse)Author
2020-04-18Resolve lint warningsHarsh Shandilya
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-18SshKeygenTask: fix build errorHarsh Shandilya
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-17Update SSH clear passphrase preference to handle HTTPS (#716)Harsh Shandilya
* 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-17AutofillDecryptActivity: Show toast on Main dispatcher (#717)Harsh Shandilya
Without this the activity will crash rather than display the error Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-17Refactor Git related activities (#685)Harsh Shandilya
* 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 4b20371dd42c512a3dd3b759859abb6c1ffd2961. * Revert "temp: disable leakcanary" This reverts commit 2db7d41bd67b79c6dc8c5b359a7b27100379f45f. * 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-17Enable emulator tests (#708)Harsh Shandilya
* github: Enable instrumentation testing in PRs Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Upgrade to Gradle 6.3 Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Remove outdated and broken tests, redo PasswordEntryTest in Kotlin Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Remove now unused test assets Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * github: Disable debug APK uploads in PR testing Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Update .github/workflows/pull_request.yml * Update .github/workflows/pull_request.yml Switching to Ubuntu fails due to the SDK 29 missing. Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-04-16Improve SSH private key validation (#713)Fabian Henneke
* Improve SSH private key validation * Address review comment
2020-04-16See file's metadata to validate SSH key (#709)Diogenes Molinares
* 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-16Reduce build warnings (#712)Fabian Henneke
* Add annotations to and reformat SearchableRepositoryViewModel.kt * Address build warnings other than meaningful deprecations * Deal with warnings in UserPreference.kt
2020-04-15Address review commentsFabian Henneke
2020-04-15Add a switch between Fuzzy and StrictDomain mode to Autofill search viewFabian Henneke
2020-04-15Add support for "work/example.org.gpg" folder layoutFabian Henneke
2020-04-15Respect encrypted username when filling Autofill generated entryFabian Henneke
2020-04-15Match any path component in StrictDomain FilterModeFabian Henneke
2020-04-15Make existing tests buildable againFabian Henneke
2020-04-15Fix crash on Autofill save introduced by #699 (#706)Fabian Henneke
2020-04-15Improve search logic and UI (#703)Fabian Henneke
* Don't list the current directory in search results * Scroll to top result when search term is changed * Match relative path in StrictDomain filter mode * Improve and document DirectoryStructure null handling Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-14Improve Autofill enable UI and flaky browser list (#704)Fabian Henneke
2020-04-14Always refresh password list when navigating back (#701)Fabian Henneke
2020-04-14Don't trigger onMenuItemActionCollapse on navigation (#702)Fabian Henneke
2020-04-14Fix repository corruption by AutofillSaveActivity (#699)Fabian Henneke
2020-04-13Raise targetSdk to 29 (#682)Fabian Henneke
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-13Request WRITE_EXTERNAL_STORAGE for external password repository (#698)Harsh Shandilya
* PasswordStore: request WRITE_EXTERNAL_STORAGE permission instead We wish to be able to write to our password store directory as well. Fixes #697 Fixes #365 Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Reword changelog entry Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-11Switch refactored entities to ViewBinding (#695)Harsh Shandilya
* build: Enable ViewBinding * autofill: oreo: Switch to ViewBinding * PasswordFragment: switch to ViewBinding * AutofillPublisherChangedActivity: use with(binding) { } syntax Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-10Modernize legacy RecyclerView adapters (#694)Fabian Henneke
* 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-08Remove an erroneous check on directory moves (#693)Fabian Henneke
2020-04-07pull translations from transifex (#691)Hussein Al Abry
russian translation at 99%
2020-04-07Modernize file listing and search in AutofillFilterActivity (#683)Fabian Henneke
* 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-06Fix AutofillFilterActivity icons in dark mode (#689)Fabian Henneke
2020-04-06Fix: Make path editable when generating a password (#688)Fabian Henneke
2020-04-05Fix: Make generated entry path editable without suggested username (#687)Fabian Henneke
The path of a new entry created via Autofill should always be editable, even when no username is prefilled (e.g., when generating a new password or saving a form with no detected username field).
2020-03-29Significantly improve app theming (#679)Harsh Shandilya
* 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-29Fix PgpActivity crash on orientation change (#681)Fabian Henneke
Currently, PgpActivity resets or crashes when the orientation (or screen size) changes. Since we do not use separate resources in landscape mode, the easiest and only slightly hacky solution is to tell the system to not recreate the activity in response to these changes.
2020-03-29Don't inflate menu multiple times (#678)Harsh Shandilya
Otherwise you get this insanity https://i.imgur.com/N918NFG.png Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-03-29Workaround and potential fix for search issues (#677)Fabian Henneke
2020-03-28Add "alias" to the username heuristic terms (#676)Fabian Henneke
2020-03-27Let IME button dismiss keyboard during search (#673)Fabian Henneke
The IME search button is currently without function while the PasswordStore SearchView is focused, which means that the keyboard hides part of the search result until back is pressed. This commit makes the IME button function like the back key in this situation, dismissing the keyboard. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-03-27Fix: Restore store scroll position on back press (#670)Fabian Henneke
Restoring the scroll position in the main store fragment is currently broken since the stored state (recyclerView.verticalScrollbarPosition) is always 0 - it is just an enum that governs where the scrollbar is placed on the screen. The fix is to remember the list position of the last fully visible item and scroll to it when restoring the scroll position. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-03-27Fix: Set childCount correctly on recycled rows (#675)Fabian Henneke
The childCount is not set explicitly for empty directories, which means that the childCount of the entry from which the current row was recycled is preserved. This results in empty directories being shown with seemingly random child counts. The fix is to always set text and visibility for the childCount view. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-03-27Un-hack focus gain in folder creation dialog (#672)Fabian Henneke
The current way to let the folder name EditText in the folder creation dialog gain focus is... slightly hacky. This commit proposes a more conceptual solution, which, if it works reliably, could be much easier to maintain.
2020-03-27Improve Autofill heuristic terms (#674)Fabian Henneke
Add "e-mail" and "login" as username terms and sort the lists. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-03-27Make folder creation dialog cancelable (#671)Fabian Henneke
2020-03-26Fix: Commit file after Autofill generate/save (#669)Fabian Henneke
Currently, password files generated via the Autofill generate or save flow are not committed to the Git repository and therefore also not synchronized to the remote. The root cause is that it was missed that PgpActivity relies on PasswordStore to commit the changes when it returns an appropriate result code. The fix is to extract the commit code into the companion object of PasswordStore and call it from AutofillSaveActivity's onActivityResult.
2020-03-26Fix deletion of individual password files (#668)Fabian Henneke
Commit fde8137b (#659) introduced a regression that results in Password Store crashing when the user tries to delete a single password file as opposed to a directory. The root cause is a call of FileUtils.listFiles() on the selected item, which only works for directories. The fix is to work with a list consisting only of the selected item if it happens to be a file.
2020-03-26Fix: Don't apply single-origin mode to native apps (#667)Fabian Henneke
An unwarranted use of the Elivs operator in Form.kt makes it such that the restrictions of single-origin mode also apply to native apps. This commit fixes the bug and also reduces the number of intermediate values that can mask mistakes like this one. It also renames saveFlag to saveFlags in BrowserAutofillSupportInfo since this variable is not limited to contain only a single flag.
2020-03-26Workaround: Prevent fill-in datasets from being shown on Android… (#666)Fabian Henneke
2020-03-25Fix: Properly handle IP addresses and invalid domains in Autofill (#664)Fabian Henneke
Mozilla's getPublicSuffixPlusOne is only meant to be invoked on syntactically valid domain names. In particular, it does not give reasonable results for IP addresses. This commit ensures that the domain passed to getPublicSuffixPlusOne is syntactically valid and not an IP address (the latter is unfortunately considered a domain by the Android validation patterns).
2020-03-25Make preferred directory structure for Autofill configurable (#660)Fabian Henneke
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-25Add "pass" as a hint pattern for password fields (#661)Fabian Henneke
2020-03-25Add more lenient rules that apply only on manual request (#662)Fabian Henneke
Add rules that match password/username fields even if no heuristic matches, but only when the user explicitly requests Autofill. Since there is now a generic way to always trigger Autofill (at least in apps), other rules no longer need to match fields that fail the heuristics. Along the way, the apply functions in AutofillStrategy.kt are renamed to match in order to not conflict with the Kotlin apply() extension function. Furthermore, named parameters are used more widely now to pass around Booleans.