Android application compatible with ZX2C4's Pass command line application

Overview

Password Store

GitHub workflow Backers on Open Collective Sponsors on Open Collective

Download

Get it on Google Play Get it on F-Droid

Documentation

We're in the process of rewriting our documentation from scratch, and the work-in-progress state can be seen here. See the wiki for the old documentation.

Contributing

Want to contribute? See if you can find an issue you wanna close, then send a PR!

Interested in helping to translate Password Store? Contribute here!

Wanna test development builds to find bugs and offer feedback? Read the release channels documentation to get access!

Community

Ways to get in touch:

  • Github issues: Use it if you have a bug report, or you want to submit a feature request.
  • GitHub Discussions: Use it if you do not understand something, or want to discuss a feature request in more detail with all community members before pitching it to maintainers.

Contributors

This project exists thanks to all the people who contribute.

Opencollective

Backers

Thank you to all our backers! 🙏 [Become a backer]

Backers

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website.[Become a sponsor]

Triplebyte Applicative GmbH ScrapingBee Become a Sponsor

Google Play and the Google Play logo are trademarks of Google LLC.

Comments
  • Request for documentation - setting up my mobile phone with git repo on my laptop

    Request for documentation - setting up my mobile phone with git repo on my laptop

    Is your feature request related to a problem? Please describe. This is not a feature request. I am trying to understand how to do something and not sure where to start and what steps I should take to achieve it.

    Describe the solution you'd like I would like to have a step by step for achieving a simple task.

    Describe alternatives you've considered I installed OpenKeyChain but I don't know what to do with it and how it fits into the workflow.

    Additional context I set up pass on my ubuntu laptop by following the steps below:

    gpg2 --full-gen-key
    pass init [email protected]
    sudo apt-get install openssh-client openssh-server
    git init --bare ~/pass-repo
    pass git init
    pass git remote add origin ssh://oren@localhost:/home/oren/pass-repo
    pass git push origin master
    

    I would also like to have my phone working with pass. Someone on another issue suggestion following:

    You need an OpenPGP provider (like OpenKeyChain) to supply the keys used to encrypt your passwords and an SSH key to access your git repo for syncing (or use passwords for that). The SSH key can be generated by the app (public part has to be added to ~/.ssh/authorized_keys on your laptop then) or imported from somewhere else.

    But I don't understand what to do. Can someone provide step by steps instructions for setting up my mobile phone with password store? I want my phone to read and save from and to the git repository on my laptop.

    opened by oren 109
  • [BUG] Versions 1.4.0 and 1.5.0 not updated on F-Droid

    [BUG] Versions 1.4.0 and 1.5.0 not updated on F-Droid

    F-Droid lists 1.3.3 as the latest version: https://f-droid.org/packages/com.zeapo.pwdstore/

    It seems the build metadata is not up to date. I don't know if this file is maintained by this project, or whether someone from F-Droid keeps it up to date.

    opened by dutchgecko 64
  • [BUG] symlinks are clobbered by the app

    [BUG] symlinks are clobbered by the app

    Describe the bug A password will fail to decrypt if it is a soft link as opposed to a normal file.

    To Reproduce Steps to reproduce the behavior:

    1. Create a password that's a soft link to an existing password using ln -s <passwd>.gpg softlink.gpg
    2. Pull the repository on device
    3. Try to decrypt the password
    4. See error

    Expected behavior Password is decrypted and shown in the UI

    Device information (please complete the following information):

    • Device: Google Pixel 2
    • OS: Android R DP1
    • App version 1.6.0-SNAPSHOT

    Additional context

    Relevant log snippet

    E  onError getErrorId: 0
    E  onError getMessage: No valid OpenPGP encrypted or signed data found!
    
    C-bug E-medium P-high A-Git S-unassigned 
    opened by msfjarvis 59
  • Can't open entries. Alt title: Xiaomi is trash

    Can't open entries. Alt title: Xiaomi is trash

    Hey, Recently I have created new password and since then I am not able to open any of it.

    On the list of password I tap any of them and the app shows password view for like a 0.05 second and then goes back to password list. It does not ask for password to decrypt.

    I tried to change time of password show, but that didn't help.

    What could happen?

    Logcat
    :/ # logcat | grep com.zeapo.pwdstore
    05-28 00:32:59.317  1315  1315 D AccessibilityManagerService: Ignoring non-encryption-aware service ComponentInfo{com.zeapo.pwdstore/com.zeapo.pwdstore.autofill.AutofillService}
    05-28 00:33:01.450  1315  3079 V ProcessedPackagesJournal:    + com.zeapo.pwdstore
    05-28 00:33:01.578  1315  1397 D Boost   : hostingType=service, hostingName=com.zeapo.pwdstore/.autofill.AutofillService, callerPackage=android, isSystem=true, isBoostNeeded=false.
    05-28 00:33:01.579  1315  1397 I ActivityManager: Start proc 3218:com.zeapo.pwdstore/u0a145 for service com.zeapo.pwdstore/.autofill.AutofillService caller=android
    05-28 00:33:02.949  1315  1397 D Boost   : hostingType=service, hostingName=org.sufficientlysecure.keychain/.remote.OpenPgpService2, callerPackage=com.zeapo.pwdstore, isSystem=false, isBoostNeeded=false.
    05-28 00:33:02.954  1315  1397 I ActivityManager: Start proc 3614:org.sufficientlysecure.keychain:remote_api_2/u0a146 for service org.sufficientlysecure.keychain/.remote.OpenPgpService2 caller=com.zeapo.pwdstore
    05-28 09:18:53.153  2397  2397 I Timeline: Timeline: Activity_launch_request time:2851807 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:18:53.153  1315  3530 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:18:53.568  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:2852222
    05-28 09:18:57.458  3218  3218 I Timeline: Timeline: Activity_launch_request time:2856112 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:18:57.459  1315  5460 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:18:59.088  1315  2546 D PerfShielderService: com.zeapo.pwdstore|com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore|409|2856246475002|294|0|4
    05-28 09:18:59.089  3132 15251 W MiuiPerfServiceClient: interceptAndQueuing:3218|com.zeapo.pwdstore|409|294|unknown|null|com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore|2856246475002|Slow main thread|4
    05-28 09:18:59.267  3218  3218 I Timeline: Timeline: Activity_launch_request time:2857921 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:18:59.268  1315  1339 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:19:00.308  3218  3218 I Timeline: Timeline: Activity_launch_request time:2858962 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:19:00.309  1315  1339 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:19:01.672  3218  3218 I Timeline: Timeline: Activity_launch_request time:2860326 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:19:01.673  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:19:08.817  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5af5505 token=Token{44cc87c ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:19:08.821  1315  1842 W MiuiGesturePointerEventListener: add win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:19:09.351  1315  1842 W MiuiGesturePointerEventListener: resetClipWindow: w: Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:19:09.352  1315  1842 W MiuiGesturePointerEventListener: destroy surface for win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} successfully
    05-28 09:23:04.278  2397  2397 I Timeline: Timeline: Activity_launch_request time:3102932 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:23:04.279  1315  4903 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:23:04.781  3218  3218 W Looper  : Slow Looper: Activity com.zeapo.pwdstore/.PasswordStore is 455ms late (wall=20ms running=0ms ClientTransaction{ lifecycleRequest=android.app.servertransaction.ResumeActivityItem }) because of 42 msg, msg 1 took 190ms (late=3013ms h=com.android.internal.os.HandlerCaller$MyHandler w=3), msg 26 took 184ms (late=1481ms h=com.android.internal.os.HandlerCaller$MyHandler w=3)
    05-28 09:23:05.143  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3103798
    05-28 09:23:05.724  3218  3218 I Timeline: Timeline: Activity_launch_request time:3104378 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:05.725  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:06.662  3218  3218 I Timeline: Timeline: Activity_launch_request time:3105316 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:06.662  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:07.233  3218  3218 I Timeline: Timeline: Activity_launch_request time:3105887 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:07.234  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:07.777  3218  3218 I Timeline: Timeline: Activity_launch_request time:3106431 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:07.777  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:08.330  3218  3218 I Timeline: Timeline: Activity_launch_request time:3106984 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:08.330  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:08.863  3218  3218 I Timeline: Timeline: Activity_launch_request time:3107517 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:08.863  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:10.781  3218  3218 I Timeline: Timeline: Activity_launch_request time:3109435 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:10.782  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:11.432  3218  3218 I Timeline: Timeline: Activity_launch_request time:3110086 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:11.432  1315  4903 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:14.968  3218  3218 I Timeline: Timeline: Activity_launch_request time:3113622 intent:Intent { cmp=com.zeapo.pwdstore/.SelectFolderActivity (has extras) }
    05-28 09:23:14.969  1315  2861 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.SelectFolderActivity (has extras)} from uid 10145
    05-28 09:23:15.478  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{73c9969 u0 com.zeapo.pwdstore/.SelectFolderActivity t5420} time:3114132
    05-28 09:23:17.345  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3115999
    05-28 09:23:18.408  3218  3218 I Timeline: Timeline: Activity_launch_request time:3117062 intent:Intent { cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:18.409  1315 17524 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:20.490  1315  4903 W NotificationService: Toast already killed. pkg=com.zeapo.pwdstore callback=android.app.ITransientNotification$Stub$Proxy@53a3b5e
    05-28 09:23:21.370  3218  3218 I Timeline: Timeline: Activity_launch_request time:3120024 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:21.370  1315 17524 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:21.907  3218  3218 I Timeline: Timeline: Activity_launch_request time:3120561 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:21.908  1315  3530 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:22.451  3218  3218 I Timeline: Timeline: Activity_launch_request time:3121105 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:22.452  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:26.210  3218  3218 I Timeline: Timeline: Activity_launch_request time:3124865 intent:Intent { cmp=com.zeapo.pwdstore/.git.GitActivity (has extras) }
    05-28 09:23:26.211  1315  5709 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.git.GitActivity (has extras)} from uid 10145
    05-28 09:23:26.712  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{6bf13f4 u0 com.zeapo.pwdstore/.git.GitActivity t5420} time:3125366
    05-28 09:23:40.325  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3138979
    05-28 09:23:42.304  3218  3218 I Timeline: Timeline: Activity_launch_request time:3140958 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:42.304  1315 12752 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:43.289  3218  3218 I Timeline: Timeline: Activity_launch_request time:3141943 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:23:43.289  1315 12752 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:23:46.622  3218  3218 I Timeline: Timeline: Activity_launch_request time:3145276 intent:Intent { cmp=com.zeapo.pwdstore/.git.GitActivity (has extras) }
    05-28 09:23:46.623  1315  6665 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.git.GitActivity (has extras)} from uid 10145
    05-28 09:23:47.113  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{3617496 u0 com.zeapo.pwdstore/.git.GitActivity t5420} time:3145767
    05-28 09:24:01.550  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3160204
    05-28 09:24:02.521  3218  3218 I Timeline: Timeline: Activity_launch_request time:3161175 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:02.522  1315  8633 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:32.078  3218  3218 I Timeline: Timeline: Activity_launch_request time:3190732 intent:Intent { cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:32.079  1315  3370 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:32.532  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{269115e u0 com.zeapo.pwdstore/.crypto.PgpActivity t5420} time:3191186
    05-28 09:24:39.616  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3198270
    05-28 09:24:41.314  3218  3218 I Timeline: Timeline: Activity_launch_request time:3199968 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:41.315  1315  6665 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:42.055  3218  3218 I Timeline: Timeline: Activity_launch_request time:3200709 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:42.055  1315  6665 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:46.750  3218  3218 I Timeline: Timeline: Activity_launch_request time:3205404 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:46.751  1315  4903 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:55.375  3218  3218 I Timeline: Timeline: Activity_launch_request time:3214029 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:55.375  1315  6350 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:55.945  3218  3218 I Timeline: Timeline: Activity_launch_request time:3214600 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:55.946  1315 12752 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:56.582  3218  3218 I Timeline: Timeline: Activity_launch_request time:3215236 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:56.583  1315  6350 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:57.221  3218  3218 I Timeline: Timeline: Activity_launch_request time:3215875 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:24:57.222  1315  4903 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:24:57.800  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5af5505 token=Token{44cc87c ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:24:57.803  1315  1842 W MiuiGesturePointerEventListener: add win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:24:58.382  1315  1842 W MiuiGesturePointerEventListener: resetClipWindow: w: Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:24:58.382  1315  1842 W MiuiGesturePointerEventListener: destroy surface for win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} successfully
    05-28 09:24:59.814  2397  2397 I Timeline: Timeline: Activity_launch_request time:3218469 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:24:59.815  1315  3370 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:25:00.204  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3218858
    05-28 09:25:01.916  3218  3218 I Timeline: Timeline: Activity_launch_request time:3220570 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:01.917  1315 17524 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:04.886  3218  3218 I Timeline: Timeline: Activity_launch_request time:3223540 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:04.887  1315 17524 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:07.463  3218  3218 I Timeline: Timeline: Activity_launch_request time:3226117 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:07.463  1315 17524 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:10.153  3218  3218 I Timeline: Timeline: Activity_launch_request time:3228807 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:10.153  1315 17524 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:15.717  3218  3218 I Timeline: Timeline: Activity_launch_request time:3234371 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:15.717  1315  3370 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:20.601  3218  3218 I Timeline: Timeline: Activity_launch_request time:3239256 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:20.602  1315  8633 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:22.034  3218  3218 I Timeline: Timeline: Activity_launch_request time:3240688 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:22.035  1315  2861 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:25.076  3218  3218 I Timeline: Timeline: Activity_launch_request time:3243730 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:25.077  1315  8633 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:29.149  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5af5505 token=Token{44cc87c ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:25:29.153  1315  1842 W MiuiGesturePointerEventListener: add win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:25:29.615  1315  1842 W MiuiGesturePointerEventListener: resetClipWindow: w: Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:25:29.616  1315  1842 W MiuiGesturePointerEventListener: destroy surface for win = Window{640429 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} successfully
    05-28 09:25:42.701  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{468936f u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3261355
    05-28 09:25:43.181  3218  3218 I Timeline: Timeline: Activity_launch_request time:3261835 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:43.182  1315  2660 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:47.536  3218  3218 I Timeline: Timeline: Activity_launch_request time:3266191 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:47.537  1315  2660 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:50.851  3218  3218 I Timeline: Timeline: Activity_launch_request time:3269505 intent:Intent { cmp=com.zeapo.pwdstore/.UserPreference }
    05-28 09:25:50.854  1315  4156 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.UserPreference} from uid 10145
    05-28 09:25:51.436  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{5e294f u0 com.zeapo.pwdstore/.UserPreference t5420} time:3270090
    05-28 09:25:57.714  3218  3218 I Timeline: Timeline: Activity_launch_request time:3276369 intent:Intent { cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:57.715  1315  4156 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:58.669  3218  3218 I Timeline: Timeline: Activity_launch_request time:3277323 intent:Intent { cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:58.670  1315  6665 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:25:59.286  3218  3218 I Timeline: Timeline: Activity_launch_request time:3277940 intent:Intent { cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:25:59.287  1315  2660 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:26:01.868  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{1528de5 token=Token{ac7d8dc ActivityRecord{5e294f u0 com.zeapo.pwdstore/.UserPreference t5420}}} to mClosingAppTokens
    05-28 09:26:01.872  1315  1842 W MiuiGesturePointerEventListener: add win = Window{f67a6c8 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.UserPreference} to mScalingWindows
    05-28 09:26:02.233  1315  1842 W MiuiGesturePointerEventListener: resetClipWindow: w: Window{f67a6c8 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.UserPreference}
    05-28 09:26:02.234  1315  1842 W MiuiGesturePointerEventListener: destroy surface for win = Window{f67a6c8 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.UserPreference} successfully
    05-28 09:27:36.061 19042 19042 I Timeline: Timeline: Activity_launch_request time:3374715 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 pkg=com.zeapo.pwdstore cmp=com.zeapo.pwdstore/.PasswordStore }
    05-28 09:27:36.061  1315  6665 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 pkg=com.zeapo.pwdstore cmp=com.zeapo.pwdstore/.PasswordStore} from uid 10146
    05-28 09:27:36.774  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3375429
    05-28 09:27:37.383  3218  3218 I Timeline: Timeline: Activity_launch_request time:3376037 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:27:37.383  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:27:38.156  3218  3218 I Timeline: Timeline: Activity_launch_request time:3376810 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:27:38.159  1315  4156 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:27:39.055  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:27:39.058  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:27:39.423  1315  1842 W MiuiGesturePointerEventListener: resetClipWindow: w: Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:27:39.423  1315  1842 W MiuiGesturePointerEventListener: destroy surface for win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} successfully
    05-28 09:30:01.867  2397  2397 I Timeline: Timeline: Activity_launch_request time:3520521 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:30:01.868  1315  2862 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:30:03.529  3218  3218 W Looper  : Slow Looper: Activity com.zeapo.pwdstore/.PasswordStore is 1638ms late (wall=2ms running=0ms ClientTransaction{ lifecycleRequest=android.app.servertransaction.ResumeActivityItem }) because of 128 msg, msg 10 took 170ms (late=1239ms h=com.android.internal.os.HandlerCaller$MyHandler w=3), msg 125 took 139ms (late=1945ms h=com.android.internal.os.HandlerCaller$MyHandler w=3)
    05-28 09:30:03.879  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3522533
    05-28 09:30:05.476  3218  3218 I Timeline: Timeline: Activity_launch_request time:3524130 intent:Intent { cmp=com.zeapo.pwdstore/.UserPreference }
    05-28 09:30:05.477  1315  8633 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.UserPreference} from uid 10145
    05-28 09:30:05.962  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{1abda u0 com.zeapo.pwdstore/.UserPreference t5420} time:3524616
    05-28 09:30:16.196  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3534850
    05-28 09:30:16.677  3218  3218 I Timeline: Timeline: Activity_launch_request time:3535331 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:30:16.678  1315  2862 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:30:18.997  3218  3218 I Timeline: Timeline: Activity_launch_request time:3537651 intent:Intent { cmp=com.zeapo.pwdstore/.UserPreference }
    05-28 09:30:18.998  1315  8633 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.UserPreference} from uid 10145
    05-28 09:30:19.495  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{d13db14 u0 com.zeapo.pwdstore/.UserPreference t5420} time:3538149
    05-28 09:30:37.946  3218  3218 I Timeline: Timeline: Activity_launch_request time:3556600 intent:Intent { cmp=com.zeapo.pwdstore/.autofill.AutofillPreferenceActivity }
    05-28 09:30:37.947  1315  8633 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/.autofill.AutofillPreferenceActivity} from uid 1014505-28 09:30:38.427  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{a798371 u0 com.zeapo.pwdstore/.autofill.AutofillPreferenceActivity t5420} time:3557081
    05-28 09:30:45.997  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{d13db14 u0 com.zeapo.pwdstore/.UserPreference t5420} time:3564651
    05-28 09:30:51.885  1315  1397 D Boost   : hostingType=activity, hostingName=com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity, callerPackage=com.zeapo.pwdstore, isSystem=false, isBoostNeeded=false.
    05-28 09:30:51.886  1315  1397 I ActivityManager: Start proc 19379:com.google.android.packageinstaller/u0a42 for activity com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity caller=com.zeapo.pwdstore
    05-28 09:30:53.580  3218  3218 I Timeline: Timeline: Activity_launch_request time:3572234 intent:Intent { cmp=com.zeapo.pwdstore/com.nononsenseapps.filepicker.FilePickerActivity (has extras) }
    05-28 09:30:53.592  1315  2862 I ActivityManager: START u0 {cmp=com.zeapo.pwdstore/com.nononsenseapps.filepicker.FilePickerActivity (has extras)} from uid 10145
    05-28 09:30:54.047  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{645b3e4 u0 com.zeapo.pwdstore/com.nononsenseapps.filepicker.FilePickerActivity t5420} time:3572701
    05-28 09:30:55.162  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{d13db14 u0 com.zeapo.pwdstore/.UserPreference t5420} time:3573816
    05-28 09:31:06.379  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3585033
    05-28 09:31:06.641  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:31:06.645  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:37:32.620  2397  2397 I Timeline: Timeline: Activity_launch_request time:3971274 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:37:32.623  1315  3531 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:37:33.078  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:3971732
    05-28 09:37:33.633  3218  3218 I Timeline: Timeline: Activity_launch_request time:3972287 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:37:33.633  1315  1341 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:37:34.377  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:37:34.380  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:39:07.316  2397  2397 I Timeline: Timeline: Activity_launch_request time:4065971 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:39:07.318  1315  4903 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:39:07.681  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:4066335
    05-28 09:39:08.140  3218  3218 I Timeline: Timeline: Activity_launch_request time:4066794 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:39:08.141  1315  4903 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:39:08.926  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:39:08.932  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:40:13.995  2397  2397 I Timeline: Timeline: Activity_launch_request time:4132649 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:40:13.996  1315  6350 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:40:14.384  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:4133039
    05-28 09:40:14.816  3218  3218 I Timeline: Timeline: Activity_launch_request time:4133470 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:40:14.817  1315  2612 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:40:15.417  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:40:15.419  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:43:06.002  2397  2397 I Timeline: Timeline: Activity_launch_request time:4304656 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:43:06.003  1315  5076 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:43:06.033  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.zeapo.pwdstore', mForegroundUid=10145, mForegroundPid=3218, mLastForegroundPackageName='com.miui.home', mLastForegroundUid=10034, mLastForegroundPid=2397, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:43:06.045  3218  3218 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:43:06.409  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:4305063
    05-28 09:43:07.207  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:43:07.210  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:43:07.427  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.android.systemui', mForegroundUid=1000, mForegroundPid=2130, mLastForegroundPackageName='com.zeapo.pwdstore', mLastForegroundUid=10145, mLastForegroundPid=3218, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:43:09.487  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.zeapo.pwdstore', mForegroundUid=10145, mForegroundPid=3218, mLastForegroundPackageName='com.android.systemui', mLastForegroundUid=1000, mLastForegroundPid=2130, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:43:09.500  3218  3218 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:43:09.961  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420} time:4308615
    05-28 09:43:09.964   809  1669 W SurfaceFlinger: Attempting to set client state on removed layer: thumbnail anim: AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}}#0
    05-28 09:43:09.964   809  1669 W SurfaceFlinger: Attempting to destroy on removed layer: thumbnail anim: AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}}#0
    05-28 09:43:10.345  3218  3218 I Timeline: Timeline: Activity_launch_request time:4308999 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:43:10.346  1315  5076 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:43:10.488   809   809 D SurfaceFlinger: duplicate layer name: changing Surface(name=AppWindowToken{f48556c token=Token{d777e1f ActivityRecord{3c9ddbe u0 com.zeapo.pwdstore/.crypto.PgpActivity t5420}}})/@0xd5eb8b3 - animation-leash to Surface(name=AppWindowToken{f48556c token=Token{d777e1f ActivityRecord{3c9ddbe u0 com.zeapo.pwdstore/.crypto.PgpActivity t5420}}})/@0xd5eb8b3 - animation-leash#1
    05-28 09:43:10.493   809   809 D SurfaceFlinger: duplicate layer name: changing Surface(name=AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}})/@0xb1fb959 - animation-leash to Surface(name=AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}})/@0xb1fb959 - animation-leash#1
    05-28 09:43:10.499  3218  3218 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:43:10.885   809  1338 W SurfaceFlinger: Attempting to set client state on removed layer: com.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity#0
    05-28 09:43:10.885   809  1338 W SurfaceFlinger: Attempting to destroy on removed layer: com.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity#0
    05-28 09:43:10.891   809  2761 W SurfaceFlinger: Attempting to set client state on removed layer: Surface(name=AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}})/@0xb1fb959 - animation-leash#1
    05-28 09:43:10.891   809  2761 W SurfaceFlinger: Attempting to destroy on removed layer: Surface(name=AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}})/@0xb1fb959 - animation-leash#1
    05-28 09:43:10.958  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{5dd0d7a token=Token{136f5a5 ActivityRecord{4e2079c u0 com.zeapo.pwdstore/.PasswordStore t5420}}} to mClosingAppTokens
    05-28 09:43:10.960  1315  1842 W MiuiGesturePointerEventListener: add win = Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:43:11.213  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.android.systemui', mForegroundUid=1000, mForegroundPid=2130, mLastForegroundPackageName='com.zeapo.pwdstore', mLastForegroundUid=10145, mLastForegroundPid=3218, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:43:20.452  1315  5076 D ProcessManager: remove task: TaskRecord{b5c8453 #5420 A=com.zeapo.pwdstore U=0 StackId=16 sz=3}
    05-28 09:43:20.452  1315  5076 I ProcessManager: SwipeUpClean: kill com.zeapo.pwdstore Adj=100 State=4
    05-28 09:43:20.461  1315  5076 I ActivityManager: Killing 3218:com.zeapo.pwdstore/u0a145 (adj 100): SwipeUpClean
    05-28 09:43:20.501  1315  1676 W InputDispatcher: channel '6c64721 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
    05-28 09:43:20.501  1315  1676 E InputDispatcher: channel '6c64721 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore (server)' ~ Channel is unrecoverably broken and will be disposed!
    05-28 09:43:20.507  1315  2862 I WindowManager: WIN DEATH: Window{6c64721 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:43:20.507  1315  2862 W InputDispatcher: Attempted to unregister already unregistered input channel '6c64721 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore (server)'
    05-28 09:43:20.511  1315  5460 I AutoStartManagerService: MIUILOG- Reject RestartService packageName :com.zeapo.pwdstore uid : 10145
    05-28 09:43:22.182  2397  2397 I Timeline: Timeline: Activity_launch_request time:4320836 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:43:22.183  1315  2862 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:43:22.201  1315  2862 D ActivityTrigger: activityStartTrigger: Activity is Triggerred in full screen ApplicationInfo{e6ce95a com.zeapo.pwdstore}
    05-28 09:43:22.201  1315  2862 E ActivityTrigger: activityStartTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:43:22.202  1315  2862 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:43:22.202  1315  2862 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:43:22.212  1315  2862 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:43:22.212  1315  2862 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:43:22.239  1315  1397 D Boost   : hostingType=activity, hostingName=com.zeapo.pwdstore/.PasswordStore, callerPackage=com.miui.home, isSystem=true, isBoostNeeded=false.
    05-28 09:43:22.240  1315  1397 I ActivityManager: Start proc 20798:com.zeapo.pwdstore/u0a145 for activity com.zeapo.pwdstore/.PasswordStore caller=com.miui.home
    05-28 09:43:22.277  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.zeapo.pwdstore', mForegroundUid=10145, mForegroundPid=20798, mLastForegroundPackageName='com.miui.home', mLastForegroundUid=10034, mLastForegroundPid=2397, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=1}
    05-28 09:43:22.378 20798 20798 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:43:22.381 20798 20798 D REPO    : current path: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:43:22.529  1315  1414 I ActivityManager: Displayed com.zeapo.pwdstore/.PasswordStore: +303ms
    05-28 09:43:22.590  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436} time:4321244
    05-28 09:43:22.591   809  1669 W SurfaceFlinger: Attempting to set client state on removed layer: Surface(name=AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}})/@0x4d97fac - animation-leash#0
    05-28 09:43:22.591   809  1669 W SurfaceFlinger: Attempting to destroy on removed layer: Surface(name=AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}})/@0x4d97fac - animation-leash#0
    05-28 09:43:22.700   809  1105 W SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen com.zeapo.pwdstore#0
    05-28 09:43:22.700   809  1105 W SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen com.zeapo.pwdstore#0
    05-28 09:43:23.073  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}} to mClosingAppTokens
    05-28 09:43:23.075  1315  1842 W MiuiGesturePointerEventListener: add win = Window{f0f262 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:43:23.267  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.android.systemui', mForegroundUid=1000, mForegroundPid=2130, mLastForegroundPackageName='com.zeapo.pwdstore', mLastForegroundUid=10145, mLastForegroundPid=20798, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:44:25.288  2397  2397 I Timeline: Timeline: Activity_launch_request time:4383942 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras) }05-28 09:44:25.289  1315  1341 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zeapo.pwdstore/.PasswordStore bnds=[838,1555][1006,1723] (has extras)} from uid 10034
    05-28 09:44:25.299  1315  1341 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:25.299  1315  1341 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:44:25.301  1315  1341 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:25.302  1315  1341 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:44:25.310  1315 12752 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:25.310  1315 12752 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:44:25.315  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.zeapo.pwdstore', mForegroundUid=10145, mForegroundPid=20798, mLastForegroundPackageName='com.miui.home', mLastForegroundUid=10034, mLastForegroundPid=2397, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    05-28 09:44:25.330 20798 20798 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:44:25.694  1315  1414 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436} time:4384348
    05-28 09:44:26.650 20798 20798 I Timeline: Timeline: Activity_launch_request time:4385304 intent:Intent { act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras) }
    05-28 09:44:26.651  1315  1339 I ActivityManager: START u0 {act=DECRYPT_PASS cmp=com.zeapo.pwdstore/.crypto.PgpActivity (has extras)} from uid 10145
    05-28 09:44:26.655  1315  1339 D ActivityTrigger: activityStartTrigger: Activity is Triggerred in full screen ApplicationInfo{e6ce95a com.zeapo.pwdstore}
    05-28 09:44:26.655  1315  1339 E ActivityTrigger: activityStartTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity/10302
    05-28 09:44:26.656  1315  1339 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:26.656  1315  1339 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity/10302
    05-28 09:44:26.662  1315  1339 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:26.662  1315  1339 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity/10302
    05-28 09:44:26.780  1315  1414 I ActivityManager: Displayed com.zeapo.pwdstore/.crypto.PgpActivity: +112ms
    05-28 09:44:26.817  1315 12752 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:26.817  1315 12752 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:44:26.817  1315 12752 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{e6ce95a com.zeapo.pwdstore} is now in focus and seems to be in full-screen mode
    05-28 09:44:26.817  1315 12752 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore/10302
    05-28 09:44:26.824   809   809 D SurfaceFlinger: duplicate layer name: changing Surface(name=AppWindowToken{526af69 token=Token{8a13df0 ActivityRecord{a606633 u0 com.zeapo.pwdstore/.crypto.PgpActivity t5436}}})/@0xefddf52 - animation-leash to Surface(name=AppWindowToken{526af69 token=Token{8a13df0 ActivityRecord{a606633 u0 com.zeapo.pwdstore/.crypto.PgpActivity t5436}}})/@0xefddf52 - animation-leash#1
    05-28 09:44:26.829   809   809 D SurfaceFlinger: duplicate layer name: changing Surface(name=AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}})/@0x4d97fac - animation-leash to Surface(name=AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}})/@0x4d97fac - animation-leash#1
    05-28 09:44:26.836 20798 20798 D PASS    : Check, dir: /data/user/0/com.zeapo.pwdstore/files/store
    05-28 09:44:27.201   809  2761 W SurfaceFlinger: Attempting to set client state on removed layer: com.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity#0
    05-28 09:44:27.201   809  2761 W SurfaceFlinger: Attempting to destroy on removed layer: com.zeapo.pwdstore/com.zeapo.pwdstore.crypto.PgpActivity#0
    05-28 09:44:27.402  1315  1842 W MiuiGesturePointerEventListener: add AppWindowToken{3093f7c token=Token{500866f ActivityRecord{94b954e u0 com.zeapo.pwdstore/.PasswordStore t5436}}} to mClosingAppTokens
    05-28 09:44:27.405  1315  1842 W MiuiGesturePointerEventListener: add win = Window{f0f262 u0 com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore} to mScalingWindows
    05-28 09:44:27.637  2130  2130 D RecentsImpl: startRecentsActivity runningTask: ComponentInfo{com.zeapo.pwdstore/com.zeapo.pwdstore.PasswordStore}
    05-28 09:44:27.670  4721  4738 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.android.systemui', mForegroundUid=1000, mForegroundPid=2130, mLastForegroundPackageName='com.zeapo.pwdstore', mLastForegroundUid=10145, mLastForegroundPid=20798, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
    
    opened by mdczaplicki 42
  • Let SshKeyGenFragment use the Android Keystore

    Let SshKeyGenFragment use the Android Keystore

    :loudspeaker: Type of change

    • [ ] Bugfix
    • [x] New feature
    • [x] Enhancement
    • [ ] Refactoring

    :scroll: Description

    Note: This is ready for review, but requires a patched SSHJ dependency since version 0.30.0 hasn't been released yet. Once it is and the review is done, I will remove the .jar and depend on the Maven repository.

    Implement an SSH auth method backed by an Android Keystore key and make SshKeyGenFragment generate such a key.

    In detail, this means the following:

    • SSH keys generated within the app are no longer kept in a simple file optionally encrypted with a passphrase, but rather in the Android Keystore optionally protected with the user's screen lock credential. On modern devices with a TEE this means that the private key will not be leaked even if the device is rooted or compromised remotely.
    • SSH key files with passphrases remain supported for users who prefer them, they just can't be generated from within the app anymore.
    • The offered key types are changed from RSA-2048 and RSA-4096 (default) to RSA-2048, RSA-3072 and P-384 (default) for the following reasons:
      • RSA-2048 is by far the most widely supported key type and reasonably fast. Although it is no longer recommended to be used for security needs that extend into the 2030s, this does not matter too much in the context of SSH authentication. It's a keep, but should not be the default.
      • RSA-3072 will remain secure for at least a decade or two and can't possibly be backdoored by the NSA, which likely appeals to a good part of our userbase.
      • RSA-4096, the previous default, is unreasonably slow. I am open to be convinced of its usefulness, but so far fail to see why this algorithm would ever be a good fit for authentication (I could see this being useful for long-term encryption though).
      • P-384 is both very fast and recommended for long-term security, which makes it a great default option. Of course not everybody will be happy with this (or any other NIST-supplied) curve, but for SSH authentication against a pass git repository, I don't see any actual issues.
    • Small changes were made to BiometricAuthenticator to fix one of two memory leaks.
    • I needed to duplicate some of SSHJ's code, but luckily its Apache 2.0 license is compatible with the GPL 3.

    Note: SSHJ so far doesn't support SHA-256/512 signatures with ssh-rsa key types. This will probably be fixed upstream at some point, which is why we allow these signature algorithms to be used with our Keystore keys. Again, in the context of SSH authentication, relying on SHA1 is not a major issue.

    :bulb: Motivation and Context

    We were not making use of the extensive Android capabilities around cryptography and had to rely on Jsch to generate SSH keys for us.

    :green_heart: How did you test it?

    I generated and used both RSA and EC keys, please do the same.

    :pencil: Checklist

    • [x] I formatted the code with the IDE's reformat action (Ctrl + Shift + L/Cmd + Shift + L)
    • [x] I reviewed submitted code

    :crystal_ball: Next steps

    :camera_flash: Screenshots / GIFs

    Screenshots
    opened by fmeum 41
  • [BUG] OpenKeychain does not recognize the same key formats as GPG

    [BUG] OpenKeychain does not recognize the same key formats as GPG

    Whenever I save a password entry, I get the following error:

    "Found .gpg-id, but it contains an invalid key id, fingerprint or user ID."

    This can be reproduced by editing any existing entry or creating a new entry. Existing entries can be decrypted just fine.

    Oneplus 7 Pro, Android 10, Password Store 1.10.3.

    The only thing I can see that I'm doing that may diverge from the common case is that my key id is not a fully-formed email address ([email protected]), but simply user@host.

    C-bug 
    opened by CaptainVonNutbar 37
  • Google.... Autofill & Logo

    Google.... Autofill & Logo

    Today I've got two new issues with Google Play Store:

    • We are asked to remove android.permission.BIND_ACCESSIBILITY_SERVICE as we're not helping "users with disabilities"
    • We are "impersonating" an other application Lock App Lock Security Privacy

    For the first part, I've just made an appeal, I have 30 days before the application is unpublished.

    For the second one, can somebody make us a good logo? :)

    opened by zeapo 37
  • Add support for Oreo Autofill

    Add support for Oreo Autofill

    :loudspeaker: Type of change

    • [ ] Bugfix
    • [x] New feature
    • [ ] Enhancement
    • [ ] Refactoring

    :scroll: Description

    This PR adds an Oreo Autofill service to Password Store that offers to fill forms and save credentials (username and password) in compatible apps and browsers. It allows users to

    • fill from Password Store entries, selected either via free search or via a matching system;
    • generate new credentials and save them in their repository;
    • save credentials they manually entered in login forms.

    The Autofill implementation aims to mitigate vulnerabilities present in many other password managers by strictly adhering to the following guidelines with regards to how it matches store entries to apps and websites:

    • If a trusted browser app (identified via package name and certificate hash) annotates a login form with a web domain, the eTLD + 1 (also called "canonical domain") is associated with all entries the user chooses to fill, generate or save.
    • If a login form does not originate from a website displayed in a trusted browser app, it is associated with the app itself (identified via package name and certificate hash). If, at any later point in time, the certificate hash changes, the user is warned about a potential phishing attempt.

    Browsers vary in their level of support for Autofill, which generally falls into one of the following four categories:

    1. No support: For whatever reason, some browsers (e.g. Opera) never trigger any Autofill requests.
    2. Single-origin support: Many browsers such as Chrome and its derivatives support Autofill in compatibility mode, but fail to report all web origins present on a page (such as in iframes). Since filling into non-visible form elements across origin boundaries is ripe for abuse, in such browsers Autofill is limited to filling a single password into the focused password field (plus a username). I hope that this strikes a decent balance between usability and security.
    3. Multi-origin support: Browsers with custom Autofill support or those that rely on WebViews correctly propagate origin information to all form elements, which allows the service to fill more aggressively - for example, it can offer to fill a registration form with a username and two new-password fields in a single action, regardless of focus. Mozilla browsers, Opera Mini/Touch, DuckDuckGo and the Tor Browser fall in this category.
    4. Save support: A few browsers have already added custom Autofill support and thus also provide submitted credentials for us to save. This e.g. works in Firefox Focus, Opera Mini/Touch and DuckDuckGo.

    Of course, in order to be really helpful, Password Store needs to detect login forms as precisely as possible. For this reason, I have implemented a Kotlin DSL for Autofill rules that aims to be accessible to a broad range of developers. Please let me know about your thoughts on this in particular.

    :bulb: Motivation and Context

    This fixes #410 and may supersede #551.

    I took #551 by @c4software as the starting point and would like to thank them very much for getting the ball rolling.

    :green_heart: How did you test it?

    I tested the service with many apps and websites. Since this is a big feature that can potentially interact with any app or website out there, this does of course require much more testing than I cannot take on myself.

    :pencil: Checklist

    • [x] I ran ./gradlew spotlessApply before submitting the PR
    • [x] I reviewed submitted code

    :crystal_ball: Next steps

    • [x] Decide on a naming convention to prevent confusion with Accessibility autofill
    • [ ] Add UI that introduces the user to the new Autofill API and allows to enable it from within the app
    • [x] (Optional) Add Autofill-specific settings to the Password Store settings screen
    • [ ] Test with various apps and websites and add Autofill rules to AutofillStrategy.kt
    • [ ] Verify the authenticity of the browser certificate hashes and the browser compatibility settings
    • [ ] Add translations (I can cover German if needed)

    :camera_flash: Screenshots / GIFs

    Screenshot_20200318-133737 Screenshot_20200318-133747 Screenshot_20200318-144805 Screenshot_20200318-144842 Screenshot_20200318-164602 Screenshot_20200318-153116 Screenshot_20200318-153122

    opened by fmeum 36
  • Begin work on API level 30 transition

    Begin work on API level 30 transition

    :loudspeaker: Type of change

    • [ ] Bugfix
    • [ ] New feature
    • [ ] Enhancement
    • [ ] Refactoring
    • [ ] Dependency updates

    :scroll: Description

    API level 30 brings some changes with it that require non-trivial changes. So far, this PR only takes care of the easy parts, especially scoped storage will require more work.

    :bulb: Motivation and Context

    I thought it would be a good idea to have a tracking PR early on with which we can experiment.

    :green_heart: How did you test it?

    :pencil: Checklist

    • [ ] I formatted the code with the IDE's reformat action (Ctrl + Shift + L/Cmd + Shift + L)
    • [ ] I reviewed submitted code
    • [ ] I added a CHANGELOG entry if applicable

    :crystal_ball: Next steps

    :camera_flash: Screenshots / GIFs

    C-technical-debt E-hard P-high S-design A-Git 
    opened by fmeum 35
  • Refactor Git related activities

    Refactor Git related activities

    :loudspeaker: Type of change

    • [ ] Bugfix
    • [x] New feature
    • [ ] Enhancement
    • [x] Refactoring

    :scroll: Description

    Completely refactor, rewrite and redesign everything that has anything to do with Git. This is very much WIP, and a lot of things are simply just gone. Bear with my timeline and feel free to assist.

    :bulb: Motivation and Context

    A lot of tech debt ripe for fixups here.

    Fixes #521 Fixes #629

    :green_heart: How did you test it?

    I prayed to the Lord Gabe like the true gamer I am.

    :pencil: Checklist

    • [ ] I ran ./gradlew spotlessApply before submitting the PR
    • [ ] I reviewed submitted code

    :crystal_ball: Next steps

    Finish this fucking thing

    :camera_flash: Screenshots / GIFs

    Details
    opened by msfjarvis 33
  • Support multiple password stores

    Support multiple password stores

    (This is already in the TODO section of the README.)

    In my case, I have a password store for my personal accounts and also use a password store shared with other people. I would be nice to be able to access both stores on my phone without having to combine them in any way.

    E-hard P-low S-design A-Git C-feature S-unassigned 
    opened by lverns 33
  • [BUG] Autofill fill SMS OTP action does not work on Android 13

    [BUG] Autofill fill SMS OTP action does not work on Android 13

    Describe the bug

    When using the 'Extract code from SMS' autofill action it launches AutofillSmsActivity but without the EXTRA_CLIENT_STATE bundle which hits this branch and finishes the activity without starting the OTP receiver.

    Steps to reproduce

    Steps to reproduce the behavior:

    1. Open https://msfjarvis.github.io/actions-test in Chrome
    2. Select the OTP field
    3. Tap 'Extract code from SMS' action in the autofill UI
    4. Observe nothing happens visually, since the activity finished itself. A log print can be recovered using adb logcat
    AutofillSmsActivity  W  AutofillSmsActivity started without EXTRA_CLIENT_STATE
    

    Expected behavior

    AutofillSmsActivity correctly launches and awaits the relevant SMS

    Screenshots

    No response

    Device information

    • Device: Google Pixel 7
    • OS: Android 13 (Build ID T2B1.221118.006)
    • App version: 2.0.0-SNAPSHOT (nonFree build b1cd2694d588bdad63d86580338a8316bf96b937)

    Additional context

    No response

    C-bug P-high A-autofill C-regression 
    opened by msfjarvis 0
  • fix(deps): update dependency com.github.android-password-store:sublime-fuzzy to v2.3.0

    fix(deps): update dependency com.github.android-password-store:sublime-fuzzy to v2.3.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | com.github.android-password-store:sublime-fuzzy | 2.2.3 -> 2.3.0 | age | adoption | passing | confidence |


    Release Notes

    Android-Password-Store/sublime-fuzzy

    v2.3.0

    • Upgrade to Kotlin 1.8.0. The Kotlin JS artifact now only supports IR.

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • fix(deps): update kotlin to v1.8.0

    fix(deps): update kotlin to v1.8.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.jetbrains.kotlin:kotlin-test-junit (source) | 1.7.21 -> 1.8.0 | age | adoption | passing | confidence | | org.jetbrains.kotlin:kotlin-gradle-plugin (source) | 1.7.21 -> 1.8.0 | age | adoption | passing | confidence |


    Release Notes

    JetBrains/kotlin

    v1.8.0

    Compare Source

    Analysis API
    • KT-50255 Analysis API: Implement standalone mode for the Analysis API
    Analysis API. FIR
    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias
    Android
    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder
    Backend. Native. Debug
    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"
    Compiler
    New Features
    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage
    Performance Improvements
    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering
    Fixes
    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend
    • KT-53270 K1: implement synthetic Enum.entries property
    • KT-52823 Cannot access class Thread.State after upgrading to 1.7 from 1.6.1 using -Xjdk-release=1.8
    • KT-55108 IR interpreter: Error occurred while optimizing an expression: VARARG
    • KT-53547 Missing fun IrBuilderWithScope.irFunctionReference
    • KT-54884 "StackOverflowError: null" caused by Enum constant name in constructor of the same Enum constant
    • KT-47475 "IncompatibleClassChangeError: disagree on InnerClasses attribute": cross-module inlined WhenMappings has mismatched InnerClasses
    • KT-55013 State checker use-after-free with XCode 14.1
    • KT-54802 "VerifyError: Bad type on operand stack" for inline functions on arrays
    • KT-54707 "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
    • KT-48678 Coroutine debugger: disable "was optimised out" compiler feature
    • KT-54745 Restore KtToken constructors without tokenId parameter to preserve back compatibility
    • KT-54650 Binary incompatible ABI change in Kotlin 1.7.20
    • KT-52786 Frontend / K2: IndexOutOfBoundsException when opting in to K2
    • KT-54004 Builder type inference does not work correctly with variable assignment and breaks run-time
    • KT-54581 JVM: "VerifyError: Bad type on operand stack" with generic inline function and when inside try-catch block
    • KT-53794 IAE "Unknown visibility: protected/protected and package/" on callable reference to protected member of Java superclass
    • KT-54600 NPE on passing nullable Kotlin lambda as Java's generic SAM interface with super type bound
    • KT-54463 Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
    • KT-54509 Ir Interpreter: unable to evaluate string concatenation with "this" as argument
    • KT-54615 JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
    • KT-53146 JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
    • KT-53712 Add mode to prevent generating JVM 1.8+ annotation targets (TYPE_USE, TYPE_PARAMETER)
    • KT-54366 K2: no JVM BE specific diagnostics (in particular CONFLICTING_JVM_DECLARATIONS) in 1.8
    • KT-35187 NullPointerException on compiling suspend inline fun with typealias to suspend function type
    • KT-54275 K2: "IllegalArgumentException: KtParameter is not a subtype of class KtAnnotationEntry for factory REPEATED_ANNOTATION"
    • KT-53656 "IllegalStateException: typeParameters == null for SimpleFunctionDescriptorImpl" with recursive generic type parameters
    • KT-46727 Report warning on contravariant usages of star projected argument from Java
    • KT-53197 K2: 'init' hides member of supertype 'UIComponent' and needs 'override' modifier
    • KT-53867 K2: @JvmRecord does not compile to a java record
    • KT-53964 K2 is unable to work with Java records
    • KT-53349 K2: TYPE_MISMATCH caused by non-local return
    • KT-54100 "Type variable TypeVariable(P) should not be fixed" crash in code with errors
    • KT-54212 K2: cannot calculate implicit property type
    • KT-53699 K2: Exception during IR lowering in code with coroutines
    • KT-54192 Warn about unsupported feature on generic inline class parameters
    • KT-53723 Friend modules aren't getting passed to cache build during box tests
    • KT-53873 K2: Duplicated diagnostics reported from user type ref checkers
    • KT-50909 "VerifyError: Bad type on operand stack" caused by smartcasting for nullable inline class property in class
    • KT-54115 Restore Psi2IrTranslator constructor from 1.7.20
    • KT-53908 K2: Self-referencing generics in Java class causes New Inference Error (IE: class Foo<T extends Foo>)
    • KT-53193 K2: compile error on project that compiles fine with normal 1.7.10
    • KT-54062 K2 Invalid serialization for type-aliased suspend function type with extension receiver
    • KT-53953 Forbid usages of super or super if in fact it accesses an abstract member
    • KT-47473 NI: Missed UPPER_BOUND_VIOLATED diagnostics if use type aliases with type parameters
    • KT-54049 K2: false positive MANY_IMPL_MEMBER_NOT_IMPLEMENTED
    • KT-30054 Wrong approximation if nullable anonymous object with implemented interface is used
    • KT-53751 Postpone IgnoreNullabilityForErasedValueParameters feature
    • KT-53324 Implement Enum.entries lowering on K/N
    • KT-44441 K2: report redeclaration error if there is a Java class with the same name as the Kotlin class
    • KT-53807 No warning about declaringClass on an enum value
    • KT-53493 K2: val on function parameter counts as just warning
    • KT-53435 K2: "IllegalArgumentException: class KtValueArgument is not a subtype of class KtExpression for factory ANNOTATION_ARGUMENT_MUST_BE_CONST" if string in nested annotation is concatenated
    • KT-52927 AssertionError: LambdaKotlinCallArgumentImpl
    • KT-53922 Make Enum.entries unstable feature to poison binaries
    • KT-53783 Exception during psi2ir when declaring expect data object
    • KT-53622 [OVERLOAD_RESOLUTION_AMBIGUITY] when enum entry called 'entries' is present in K2
    • KT-41670 JVM IR: AbstractMethodError when using inheritance for fun interfaces
    • KT-53178 K2: implement diagnostics for serialization plugin
    • KT-53804 Restore old and incorrect logic of generating InnerClasses attributes for kotlin-stdlib
    • KT-52970 Default value constant in companion object works on JVM and JS, but fails on native
    • KT-51114 FIR: Support DNN checks
    • KT-27936 Write InnerClasses attribute for all class names used in a class file
    • KT-53719 Parsing regression on function call with type arguments and labeled lambda
    • KT-53261 Evaluate effect from inline for primitive types
    • KT-53706 K2: Context receivers are not resolved on properties during type resolution stage
    • KT-39492 Kotlin.Metadata's packageName field cannot be an empty string
    • KT-53664 Ir Interpreter: unable to evaluate name of function reference marked with JvmStatic from another module
    • KT-52478 [Native] Partial linkage: Building native binary from cached KLIBs fails if one library depends on removed nested callable member from another one
    • KT-48822 CompilationException: Back-end (JVM) Internal error: Failed to generate expression: KtProperty - ConcurrentModificationException
    • KT-50281 IllegalStateException: unsupported call of reified inlined function
    • KT-50083 Different error messages in android and JVM (Intrinsics.checkNotNullParameter).
    • KT-53236 Support Enum.entries codegen on JVM/IR BE
    • KT-41017 FIR: should we support smartcast after null check
    • KT-53202 "ISE: Descriptor can be left only if it is last" after direct invoke optimization on a capturing lambda
    • KT-46969 @BuilderInference with nested DSL scopes cause false-positive scope violation in Kotlin 1.5
    • KT-53257 FIR: Improper context receiver argument is chosen when there are two extension receiver candidates
    • KT-53090 Anonymous function and extension function literals are generated as classes even with -Xlambdas=indy
    • KT-53208 K2: Cannot get annotation for default interface method parameter when compiled with -Xuse-k2
    • KT-53184 K2: NoSuchMethodError on KProperty1.get() referenced via nullable typealias
    • KT-53198 K2: Return type mismatch: expected kotlin/Unit, actual kotlin/Unit?
    • KT-53100 Optimization needed: (CONSTANT_PRIMITIVE(x: T?)) => x
    • KT-49875 [FIR] Support infering PRIVATE_TO_THIS visibility
    • KT-53024 Refactor FIR renderer to composable architecture
    • KT-50995 [FIR] Support SAM with receiver plugin
    • KT-53148 K1: introduce warning for inline virtual member in enum
    • KT-49847 Devirtualization fails to eliminate boxing in function reference context
    • KT-52875 Extension function literal creation with -Xlambdas=indy fails with incorrect arguments
    • KT-53072 INVALID_IF_AS_EXPRESSION error isn't shown in the IDE (LV 1.8)
    • KT-52985 Native: a function with type T? returned a kotlin.Unit instead of null
    • KT-52020 FIR warning message includes internal rendering
    • KT-48778 -Xtype-enhancement-improvements-strict-mode not respecting @NonNull annotation for property accesses?
    IDE
    Fixes
    • KTIJ-22357 CCE “class org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl cannot be cast to class org.jetbrains.kotlin.fir.types.FirResolvedTypeRef” in K2
    • KT-55150 Argument for @NotNull parameter 'scope' of org/jetbrains/kotlin/resolve/AnnotationResolverImpl.resolveAnnotationType must not be null
    • KTIJ-22165 IDE notification to promote users to migrate to the new Kotlin/JS toolchain
    • KTIJ-22166 IDE notification (or something else) about JPS and Maven support for Kotlin/JS is deprecated
    • KT-53543 Rework light classes for file facade
    • KT-48773 Investigate the possibility of removing dependency on old JVM backend in light classes
    • KTIJ-19699 IDE: False positive type mismatch in Java code for Kotlin nested class non-direct inheritor from external library
    • KT-51101 FIR IDE: Exception on "Show Type Info" action
    • KTIJ-22295 MPP, IDE: False positive UPPER_BOUND_VIOLATED when JVM module implements the generic interface from MPP module and the type parameter is not equal to itself.
    • KT-51656 FIR IDE: ProgressCancelled exception is masked in the compiler during resolve
    • KT-51315 FIR IDE: move out base modules from fe10 plugin to reuse in k2 plugin
    • KTIJ-22323 K2: ISE during resolve of stdlib calls from the stdlib
    • KTIJ-21391 Generate -> Override methods : don't delegate to abstract methods
    • KT-53097 Extract common part of light classes to another module
    • KTIJ-22354 FIR LC: annotation owner is always null
    • KTIJ-22157 Kotlin call resolver leaks user code when reporting exception
    IDE. Completion
    • KTIJ-22552 Kotlin: 'for loop' postfix completion doesn't work - "Fe10SuggestVariableNameMacro must be not requested from main classloader"
    • KTIJ-22503 Support code completion for data objects
    IDE. Debugger
    • KT-51755 Compilation exception with scripting compilation during debug session
    • KTIJ-21963 Debugger / IR: Expression evaluation of the debugger doesn't work
    IDE. Decompiler, Indexing, Stubs
    • KTIJ-22750 Initialize Kotlin stub element types lazily
    • KTIJ-18094 IDE: "AssertionError: Stub count doesn't match stubbed node length" with minified Android AAR library
    • KTIJ-17632 IndexOutOfBoundsException: Cannot decompile a class located in minified AAR
    IDE. Gradle Integration
    • KT-48135 In the IDE import, reuse dependency granular source set KLIBs across multi-project build to avoid duplicate external libraries
    • KTIJ-22345 False positive unresolved reference for members of subclasses of expect classes.
    • KT-53514 HMPP: False positive for None of the following functions can be called with the arguments supplied. with Enum in common module
    • KT-51583 Gradle 7.4+ | SamplesVariantRule interference: Could not resolve all files for configuration ':kotlinKlibCommonizerClasspath'
    • KTIJ-21077 Dependency matrix does not work with Jetpack compose / multiplatform projects
    IDE. Inspections and Intentions
    • KTIJ-19531 Adapt changes about new rules for method implementation requirements
    • KTIJ-22087 Support IDE inspections for upcoming data objects
    • KTIJ-20510 Quick fix to implement and call correct super method in case of inheritance with defaults
    • KTIJ-20170 Provide quickfix for deprecated resolution to private constructor of sealed class
    • KTIJ-22630 FIR IDE: Lazy resolve exception after invocation of Override members action on value class
    • KT-49643 Intentions: "Implement members" fails when base type function declaration uses unresolved generic types
    IDE. JS
    • KTIJ-22167 Make JS IR default in projects created by wizard
    • KTIJ-22332 Wizard: Kotlin/JS projects: cssSupport DSL should be updated
    IDE. KDoc
    • KTIJ-22324 K2 IDE: implement reference resolve inside KDocs
    IDE. Multiplatform
    • KTIJ-19566 New Project Wizard: Update HMPP-related flags in multiplatform wizards
    IDE. Navigation
    • KT-51314 FIR IDE: show Kotlin declarations in search symbol
    • KTIJ-22755 Find usage for constructor from kotlin library doesn't work for secondary constructor usages
    IDE. Script
    • KTIJ-22598 Add warning for standalone scripts in source roots
    • KT-54325 .settings.gradle.kts and .init.gradle.kts are reported as standalone scripts
    IDE. Structural Search
    • KTIJ-21986 KSSR: "CodeFragment with non-kotlin context should have fakeContextForJavaFile set: originalContext = null" warning shows up when replacing
    IDE. Tests Support
    • KT-50269 FIR IDE: Allow running tests via gutter
    IDE. Wizards
    • KTIJ-23537 Wizard: projects with Android modules require higher sdkCompileVersion
    • KTIJ-23525 Wizard: Compose multiplatform: project won't build and require higher compileSdkVersion
    • KTIJ-22763 New Project Wizard: remove deprecated Android extensions plugin from Android target in the project constructor
    • KTIJ-22481 Wizard: Kotlin -> Browser application (gradle groove). Build error
    JavaScript
    Fixes
    • KT-55097 KJS / IR + IC: Using an internal function from a friend module throws an unbound symbol exception
    • KT-54406 Kotlin/JS: build with dependencies fails with "Could not find "kotlin" in [~/.local/share/kotlin/daemon]"
    • KT-53074 Make JS IR BE default in toolchain (gradle & CLI)
    • KT-50589 UTF-8 Instability in kotlin.js.map
    • KT-54934 KJS / IR + IC: Suspend abstract function stubs are generated with unstable lowered ic signatures
    • KT-54895 KJS / IR + IC: broken cross module references for function default param wrappers
    • KT-54520 KJS / IR Allow IdSignature clashes
    • KT-54120 JS IR + IC: pointless invalidation of dependent code after modifying companions
    • KT-53986 KJS / IR + IC: compiler produces different JS file names with IC and without IC
    • KT-54010 JS IR + IC: Force IC cache invalidation after updating language version or features
    • KT-53931 KJS / Gradle: Regression with 1.7.20-RC: ReferenceError: println is not defined
    • KT-53968 Kotlin/JS: no UninitializedPropertyAccessException on access to non-initialized lateinit property defined in dependencies
    • KT-54686 KJS / IR: Incorrect generation of signatures when one of argument is nested class
    • KT-54479 KJS / IR + IC: Adding or removing companion fields leads java.lang.IllegalStateException in the compiler IC infrastructure
    • KT-54382 KJS / IR: Wrong type check for inheritors of suspend functions
    • KT-54323 KJS / IR + IC: Intrinsics from stdlib may lose their dependencies in incremental rebuild
    • KT-53361 KJS / IR: No debug info is generated for in-line js code
    • KT-53321 Implement Enum.entries lowering on JS/IR
    • KT-53112 KJS IR turn on IC infra by default
    • KT-50503 Kotlin/JS: IR + IC: compileTestDevelopmentExecutableKotlinJs fails with ISE: "Could not find library" after removing module dependency
    • KT-54011 JS IR + IC: EnumEntries don't work well when IC is enabled
    • KT-53672 KJS / IR: "IndexOutOfBoundsException: Index 0 out of bounds for length 0" caused by function reference to extension function of reified type variable
    • KT-43455 KJS: IR. Incremental compilation problem with unbound symbols
    • KT-53539 KJS: Exported class inherited non-exported class shows warning
    • KT-53443 KJS/IR: NullPointerException caused by anonymous objects inside lambdas
    • KT-52795 K/JS and K/Native IR-validation/compilation errors for a valid kotlin code
    • KT-52805 KJS/IR: Invalid call of inline function in also block
    • KT-51151 KJS / IR: Wrong overloaded generic method with receiver is called
    • KT-52830 KJS/IR: Sourcemap disabling doesn't work
    • KT-52968 KJS / IR: Buggy generation of overridden methods
    • KT-53063 KJS / IR + IC: undefined cross module reference for implemented interface functions
    • KT-51099 KJS / IR + IC: Cache invalidation doesn't check generic class variance annotations (in, out)
    • KT-51090 KJS / IR + IC: Cache invalidation doesn't check suspend qualifier
    • KT-51088 KJS / IR + IC: Cache invalidation doesn't check class qualifiers (data, inline)
    • KT-51083 KJS / IR + IC: Cache invalidation doesn't check inline function which was non inline initially
    • KT-51896 KJS / IR + IC: Cache invalidation doesn't trigger rebuild for fake overridden inline functions
    Language Design
    • KT-48385 Deprecate confusing grammar in when-with-subject
    • KT-48516 Forbid @Synchronized annotation on suspend functions
    • KT-41886 Ability to require opt-in for interface implementation, but not for usage
    • KT-34943 OVERLOAD_RESOLUTION_AMBIGUITY inconsistent with the equivalent Java code
    • KT-51334 Implement type-bound label this@Type
    Libraries
    New Features
    • KT-21007 Provide Kotlin OSGI Bundle with extensions for JRE8 (and JRE7)
    • KT-54082 Comparable and subtractible TimeMarks
    • KT-52928 Provide copyToRecursively and deleteRecursively extension functions for java.nio.file.Path
    • KT-49425 Update OptIn documentation to reflect latest design changes
    • KT-54005 Allow calling declaringJavaClass on Enum
    • KT-52933 rangeUntil members in built-in types
    Performance Improvements
    • KT-53508 Cache typeOf-related KType instances when kotlin-reflect is used
    Fixes
    • KT-51907 Switch JVM target of the standard libraries to 1.8
    • KT-54835 Document that Iterable.all(emptyCollection) returns TRUE.
    • KT-54168 Expand on natural order in comparator docs
    • KT-53277 Stabilize experimental API for 1.8
    • KT-53864 Review deprecations in stdlib for 1.8
    • KT-47707 Remove the system property and the brittle contains optimization code itself
    • KT-52336 Different behavior on JVM and Native in stringBuilder.append(charArray, 0, 1)
    • KT-53927 Remove deprecation from ConcurrentModificationException constructors
    • KT-53152 Introduce EnumEntries to stdlib as backing implementation of Enum.entries
    • KT-53134 stdlib > object Charsets > not thread safe lazy initialization
    • KT-51063 Gradle project with JPS runner: "JUnitException: Failed to parse version" JUnit runner internal error with JUnit
    • KT-52908 Native: setUnhandledExceptionHook swallows exceptions
    Native
    • KT-51043 Kotlin Native: ObjC-Interop: kotlin.ClassCastException: null cannot be cast to kotlin.Function2
    • KT-50786 Native: prohibit suspend calls inside autoreleasepool {}
    • KT-52834 Implement test infrastructure for K2/Native
    Native. C Export
    • KT-36878 Reverse C Interop: incorrect headers generation for primitive unassigned type arrays
    • KT-53599 [Reverse C Interop] Provide box/unbox API for unsigned primitive types
    • KT-41904 Kotlin/Native : error: duplicate member for interface and function with the same name
    • KT-42830 [Reverse C Interop] Add API to get value of boxed primitives
    • KT-39496 K/N C: optional unsigned types as function parameters crash the compiler
    • KT-39015 Cannot compile native library with nullable inline class
    Native. C and ObjC Import
    • KT-54738 Cocoapods cinterop: linking platform.CoreGraphics package
    • KT-54001 Kotlin/Native: support header exclusion in cinterop def files
    • KT-53151 Native: Custom declarations in .def don't work with modules, only headers
    Native. ObjC Export
    • KT-53680 Obj-C refinement annotations
    • KT-54119 Native: runtime assertion failed due to missing thread state switch
    • KT-42641 Don't export generated component* methods from Kotlin data classes to Obj-C header
    Native. Platform Libraries
    • KT-54225 Native: update to Xcode 14.1
    • KT-54164 Native: commonizer fails on CoreFoundation types
    • KT-39747 Why is there no WinHttp API in Kotlin/Native's Windows API?
    Native. Runtime
    • KT-49228 Kotlin/Native: Allow to unset unhandled exception hook
    • KT-27305 Fix FILE macro inside RuntimeCheck and RuntimeAssert
    Native. Runtime. Memory
    • KT-54498 Deprecation message of 'FreezingIsDeprecated' is not really helpful
    • KT-53182 New memory manager: Unexpected memory usage on IOS
    Native. Stdlib
    • KT-52429 Small Usability Improvements for Worker API
    Reflection
    • KT-54629 Incorrectly cached class classifier
    • KT-54611 KTypeImpl does not take into account class loader from the classifier property
    • KT-48136 Make Reflection.getOrCreateKotlinPackage use cache when kotlin-reflect is used
    • KT-50705 Use ClassValue to cache KClass objects in kotlin-reflect
    • KT-53454 Properly cache the same class's KClass when it's loaded by multiple classloaders in getOrCreateKotlinClass
    Specification
    • KT-54210 Update Kotlin specification to mention that since 1.8 generics in value classes are allowed
    Tools. CLI
    • KT-54116 Add JVM target bytecode version 19
    • KT-53278 Support values 6 and 8 for -Xjdk-release
    • KT-46312 CLI: Kotlin runner should use platform class loader to load JDK modules on Java 9+
    Tools. Commonizer
    • KT-54310 Commonizer fails on 1.8.0-dev K/N distributions
    • KT-48576 [Commonizer] platform.posix.pselect not commonized in Ktor
    Tools. Compiler Plugins
    • KT-46959 Kotlin Lombok: Support generated builders (@Builder)
    • KT-53683 Unresolved reference compilation error occurs if a file is annotated with @ Singular and has any guava collection type : ImmutableTable, ImmutableList or else
    • KT-53657 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type NavigableMap without explicit types specification
    • KT-53647 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type Iterable<>
    • KT-53724 Param of the @ Singular lombok annotation ignoreNullCollections=true is ignored by kotlin compiler
    • KT-53451 [K2] References to methods generated by @ With lombok annotation can't be resolved with enabled K2 compiler
    • KT-53721 [K2] There is no compilation error while trying to add null as a param of the field with non-null type
    • KT-53370 Kotlin Lombok compiler plugin can't resolve methods generated for java boolean fields annotated with @ With annotation
    Tools. Compiler plugins. Serialization
    • KT-54878 JVM/IR: java.lang.ClassCastException: class org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl cannot be cast to class org.jetbrains.kotlin.ir.types.IrTypeProjection on serializer<Box<*>>()
    • KT-55340 Argument for kotlinx.serialization.UseSerializers does not implement KSerializer or does not provide serializer for concrete type
    • KT-55296 Improve exceptions in serialization plugin
    • KT-55180 KJS: regression in serialization for Kotlin 1.8.0-beta
    • KT-53157 Recursion detected in a lazy value under LockBasedStorageManager in kotlinx.serialization
    • KT-54297 Regression in serializable classes with star projections
    • KT-49660 kotlinx.serialization: IndexOutOfBoundsException for parameterized sealed class
    • KT-43910 JS IR: Serialization with base class: "IndexOutOfBoundsException: Index 0 out of bounds for length 0"
    Tools. Daemon
    • KT-52622 Kotlin/JS, Kotlin/Common compilations start Kotlin daemon incompatible with Kotlin/JVM compilation on JDK 8
    Tools. Gradle
    New Features
    • KT-27301 Expose compiler flags via Gradle lazy properties
    • KT-53357 Change single build metrics property
    • KT-50673 Gradle: KotlinCompile task(s) should use @NormalizeLineEndings
    • KT-34464 Kotlin build report path not clickable in the IDE
    Performance Improvements
    • KT-51525 [Gradle] Optimize evaluating args for compile tasks
    • KT-52520 Remove usage of reflection from CompilerArgumentsGradleInput
    Fixes
    • KT-48843 Add ability to disable Kotlin daemon fallback strategy
    • KT-55334 kaptGenerateStubs passes wrong android variant module names to compiler
    • KT-55255 Gradle: stdlib version alignment fails build on dynamic stdlib version.
    • KT-55363 [K1.8.0-Beta] Command line parsing treats plugin parameters as source files
    • KT-54993 Raise kotlin.jvm.target.validation.mode check default level to error when build is running on Gradle 8+
    • KT-54136 Duplicated classes cause build failure if a dependency to kotlin-stdlib specified in an android project
    • KT-50115 Setting toolchain via Java extension does not configure 'kotlinOptions.jvmTarget' value when Kotlin compilation tasks are created eagerly
    • KT-55222 Migrate AndroidDependencyResolver to the new Gradle API
    • KT-55119 There is no validation for different jvmTarget and targetCompatibility values in multiplatform projects with jvm target and used java sources
    • KT-55102 Compile java task fails with different target version in pure kotlin project
    • KT-54995 [1.8.0-Beta] compileAppleMainKotlinMetadata fails on default parameters with No value passed for parameter 'mustExist'
    • KT-35003 Automatically set targetCompatibility for kotlin-jvm projects to work with gradle 6 metadata
    • KT-45335 kotlinOptions.jvmTarget conflicts with Gradle variants
    • KT-48798 Android: going from one to more than one productFlavor causes inputs of commonSourceSet$kotlin_gradle_plugin property of compileKotlin task to change
    • KT-55019 Gradle sync: UnknownConfigurationException when adding implementation dependencies to a Kotlin with Java compilation
    • KT-55004 jvmTarget value is ignored by depending modules if a task "UsesKotlinJavaToolchain" is configured for all project modules using allProjects {}
    • KT-54888 Add Gradle property to suppress kotlinOptions.freeCompilerArgs modification on execution phase
    • KT-54399 Undeprecate 'kotlinOptions' DSL
    • KT-54306 Change the naming of newly added Compiler*Options classes and interfaces
    • KT-54580 KotlinOptions in AbstractKotlinCompilation class are deprecated
    • KT-54653 java.lang.NoClassDefFoundError: kotlin/jdk7/AutoCloseableKt exception if a dependency to the kotlin-stdlib is added
    • KT-52624 Compatibility with Gradle 7.3 release
    • KT-54703 Stdlib substitution does not work with JPMS modules
    • KT-54602 Prevent leaking Gradle Compile DSL types into compiler cli runtime
    • KT-54439 Project failed to sync Native LaguageSettings to compiler options in afterEvaluate
    • KT-53885 Bump minimal supported Gradle version to 6.8.3
    • KT-53773 Protect and system properties can contain sensitive data
    • KT-53732 Add custom values limits for build scan reports
    • KT-52623 Compatibility with Gradle 7.2. release
    • KT-51831 Gradle: remove kotlin.compiler.execution.strategy system property
    • KT-51679 Change deprecation level to error for KotlinCompile setClasspath/getClasspath methods
    • KT-54335 Kotlin build report configuration. There is no validation for SINGLE_FILE output if the required kotlin.build.report.single_file property is empty or absent
    • KT-54356 Kotlin build report configuration. Wrong path is used for the property kotlin.internal.single.build.metrics.file
    • KT-53617 KotlinCompilerExecutionStrategy value is ignored by depending modules if configure once for all project modules using allProjects {}
    • KT-53823 Kotlin Gradle Plugin uses deprecated Gradle API: Provider.forUseAtConfigurationTime()
    • KT-54142 Increase Kotlin Gradle plugin Gradle target API to 7.5
    • KT-50161 Android variant filter breaks KotlinCompile cache compatibility
    • KT-54113 LanguageSettings to KotlinNativeLink.toolOptions sync are executed on the wrong context
    • KT-53830 Versions of kotlin-stdlib-jdk8 and kotlin-stdlib-jdk7 aren't overrided if added as transitive dependencies to kotlin-stdlib
    • KT-54112 Missing target input on KotlinNativeLink task
    • KT-45879 Documentation: Wrong kotlin languageVersion "1.6 (EXPERIMENTAL)"
    • KT-54103 Remove JvmTarget.JVM_1_6 from generated Gradle compiler type
    • KT-52959 KMP code is breaking Gradle project isolation
    • KT-50598 MULTIPLE_KOTLIN_PLUGINS_SPECIFIC_PROJECTS_WARNING is only shown on first build
    • KT-53246 Gradle: Special characters in paths of errors and warnings should be escaped
    • KT-47730 How to avoid stdlib coming from Kotlin gradle plugin
    • KT-52209 Corrupted cache and non-incremental build if produce caches "in process" and restore then compiling with kotlin daemon
    • KT-41642 "TaskDependencyResolveException: Could not determine the dependencies" when trying to apply stdlib
    • KT-53390 Drop usage of -Xjava-source-roots when passing java sources required for Kotlin compilation
    • KT-52984 Kotlin Gradle plugin is misbehaving by resolving DomainObjectCollection early
    • KT-38622 Non-incremental compilation because of R.jar with Android Gradle plugin 3.6
    • KT-38576 AnalysisResult.RetryWithAdditionalRoots crashes during incremental compilation with java classes in classpath
    Tools. Gradle. Cocoapods
    • KT-54314 Cocoapods: Signing pod dependency for Xcode 14
    • KT-54060 Xcode 14: disable bitcode embedding for Apple frameworks
    • KT-53340 Change default linking type for frameworks registered by cocoapods plugin
    • KT-53392 Deprecate and delete downloading pod dependencies by direct link
    • KT-53695 Build of macOS application fails if a framework is integrated via Cocoapods plugin
    Tools. Gradle. JS
    • KT-53367 KJS: Migrate cssSupport API
    • KT-45789 KJS / IR: Transitive NPM dependencies are not included in PublicPackageJsonTask output
    • KT-55099 K/JS: Second declaration of JS target without compiler type report warning incorrectly
    • KT-52951 [KGP/JS] Browser test target registration via properties
    • KT-52950 KJS: Report if yarn.lock was updated during built
    • KT-53374 KJS / Gradle: Implement IDEA sync detection logic via ValueSource to improve configuration cache support
    • KT-53381 Kotlin/JS: with erased kotlin-js-store/ and reportNewYarnLock = true the task kotlinUpgradeYarnLock always fails
    • KT-53788 KJS / Gradle: Disable Gradle build cache for KotlinJsDce when development mode is enabled
    • KT-53614 Kotlin/JS upgrade npm dependencies
    Tools. Gradle. Multiplatform
    New Features
    • KT-53396 Support 'implementation platform()' by gradle kotlin mpp plugin for JVM target
    • KT-40489 MPP / Gradle: support BOM (enforcedPlatform) artifacts in source set dependencies DSL
    Performance Improvements
    • KT-52726 [MPP] Optimize caching/performance/call-sites of 'compilationsBySourceSets'
    Fixes
    • KT-54634 MPP: Test Failure causes: KotlinJvmTest$Executor$execute$1 does not define failure
    • KT-35916 Gradle MPP plugin: Configurations for a main compilation and its default source set have different naming
    • KT-46960 Repeated kotlin/native external libraries in project
    • KT-27292 MPP: jvm { withJava() }: Gradle build: Java source under Kotlin root is resolved while building, but does not produce output class files
    • KT-34650 Naming clash in MPP+Android: androidTest vs androidAndroidTest
    • KT-54387 Remove MPP alpha stability warning
    • KT-31468 Targets disambiguation doesn't work if a depending multiplatform module uses withJava() mode
    • KT-54090 Take an Apple test device from the device list
    • KT-54301 KotlinToolingVersionOrNull: IllegalArgumentException
    • KT-53256 Implement K/N compiler downloading for KPM
    • KT-45412 KotlinCompilation: Make sure .kotlinSourceSets and .allKotlinSourceSets include the default source set
    • KT-49202 Tests on android target can't be executed in multiplatform project if dependency to kotlin-test framework is provided as a single dependency and tests configured to be executed via Junit5
    Tools. Gradle. Native
    New Features
    • KT-43293 Support Gradle configuration caching with Kotlin/Native
    • KT-53107 Add arm64 support for watchOS targets (Xcode 14)
    Fixes
    • KT-53704 Native cinterop: eager header path calculation
    • KT-54814 Kotlin/Native: Github Actions: Testing watchOSX64 with Xcode 14 — Invalid device: Apple Watch Series 5
    • KT-54627 Native: :commonizeNativeDistribution with configuration cache enabled fails even when set to warn on JDK 17
    • KT-54339 Link tasks fail if Gradle Configuration Cache is enabled
    • KT-53191 Native cinterop sync problem with gradle
    • KT-54583 watchosDeviceArm64 target shouldn't register test tasks
    • KT-52303 Gradle / Native: Build tasks ignore project.buildDir
    • KT-54442 Gradle iOS test tasks fail if a device is not selected explicitly
    • KT-54177 Gradle: Deprecate enableEndorsedLibs flag
    • KT-47355 Support macos target for FatFramework task
    • KT-53339 MPP / CocoaPods: The static framework fails to install on a real iOS device
    • KT-31573 Missing description for Native Gradle tasks
    • KT-53131 Gradle Sync: "NoSuchElementException: Array contains no element matching the predicate" with CocoaPods
    • KT-53686 Task assembleReleaseXCFramework fails with "error: the path does not point to a valid framework" if project name contains a dash
    Tools. Incremental Compile
    • KT-54144 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline function with custom JvmName
    • KT-53871 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline property accessor
    • KT-19804 Relocatable IC caches
    Tools. JPS
    • KT-45474 False positive NO_ELSE_IN_WHEN on sealed class with incremental compilation
    • KT-54228 Switching abstract to sealed classes causes incremental issue
    • KT-38483 JPS: Stopping compilation causes IDE CompilationCanceledException
    • KT-50310 False positive NO_ELSE_IN_WHEN on incremental build when adding sealed classes
    • KT-48813 Move cache version to compiler
    • KTIJ-921 JPS: FileNotFoundException on project build in mixed Kotlin/Scala project
    Tools. Kapt
    • KT-54187 JVM IR + kapt: incorrect modifier final is generated for nested enum in interface
    • KT-48827 Remove 'kapt.use.worker.api' property
    Tools. Scripts
    • KT-54355 Scripts: Internal compiler error (languageVersion=1.9)
    • KT-53009 Scripting: NDFDE “Descriptor wasn't found for declaration SCRIPT” on using script definition with kotlin from master

    v1.7.22: Kotlin 1.7.22

    Compare Source

    This is a technical release. It doesn't contain any fixes that aren't included in Kotlin 1.7.21


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • [FEATURE] add support for `pass grep` searches

    [FEATURE] add support for `pass grep` searches

    Is your feature request related to a problem? Please describe.

    I need to search inside the key contents (ie in the "extra content" area) like pass grep does, but see no way to do that: the normal search function (via the magnifying glass icon) only searches the key names (a la pass find).

    Describe the solution you'd like

    A great way to do that would be a setting to do the equivalent of pass grep instead of pass find while using the normal search (via the magnifying glass icon).

    Describe alternatives you've considered

    A less convenient, but totally usable implementation, would be a 'grep' or 'content search' or similar option on the 'three vertical dots' menu.

    Additional context

    No response

    C-feature S-awaiting-triage 
    opened by DurvalMenezes 0
  • Support OpenPGP hardware keys

    Support OpenPGP hardware keys

    Integrate hwsecurity to delegate decryption operations to OpenPGP security keys. This has been tested with NFC and USB hardware.

    The integration point is a new callback to CryptoHandler.decrypt that provides the encrypted session key and expects the decrypted PGPSessionKey in return. The implementation then delegates as much as possible to hwsecurity's OpenPGPSecurityKeyDialogFragment.

    Importing is handled by creating GnuPG-compatible stub keys, so no change to key storage is required, and it should be possible to import a secret keychain with stub keys that was exported from GnuPG. The import activity also prompts to "pair" a hardware key when importing a public key, so one could download their key from a keyserver and have hardware support without too much work.

    Future improvements:

    • Support import from keyservers, so the only manual step in the best case would be to insert a hardware key.
    • The hwsecurity dialog is kind of ugly and doesn't fit well with Material 3.
    • Most of hwsecurity is unneeded for this implementation, so a new library could be much slimmer and more modernized.
    • It would be nice to view and manage hardware devices in the key management UI.

    TODOs:

    • [x] PGPainless callback API: https://github.com/pgpainless/pgpainless/pull/322
    • [x] APS hwsecurity fixes: https://github.com/android-password-store/hwsecurity/pull/2
    • [ ] Find a way to defer the password dialog until needed by PGPainless, as OpenPGP keys aren't password-protected.
    • [ ] Test ECDH decryption
    E-hard P-low S-waiting-on-author C-feature A-PGPainless 
    opened by tadfisher 5
  • [FEATURE] age support

    [FEATURE] age support

    Is your feature request related to a problem? Please describe.

    PGP's user experience is very lacking, and unless you spend significant amounts of time learning to use it, you might end up committing really simple mistakes compromising your security. it'd be really nice to have support for age encryption / passage as an alternative to PGP/GPG.

    Describe the solution you'd like

    Native integration of age encryption support into the app.

    Describe alternatives you've considered

    Regular PGP, but see above.

    Additional context

    I saw this discussed in #1486 , but the last comment there is soon to be 2 years old; has there been any progress?

    E-hard P-medium S-design C-feature S-in-progress A-kage 
    opened by Akiiino 1
Releases(latest)
  • autofill-parser-v1.1.1(Jun 20, 2022)

  • autofill-parser-v1.1.0(Dec 31, 2021)

    1.1.0

    Changed

    • Changed the support level for Chrome Beta/Canary/Dev/Stable, Bromite and Ungoogled Chromium to PasswordFillAndSaveIfNoAccessibility.
    • Updated androidx.annotation to 1.3.0 and androidx.autofill to 1.2.0-beta01.
    • The library now uses Kotlin 1.6.10 and Coroutines 1.6.0.
    • Added Styx to supported Autofill browsers.
    • The dependency on timberkt has been replaced with logcat.
    • Updated publicsuffixes list to the latest version as of Dec 18 2021.

    Fixed

    • Fix build warning from undeclared unsigned type use.

    Added

    • Added the PasswordFillAndSaveIfNoAccessibility browser support level for Chromium-based browsers beyond v89.
    • Added the german term for username to the heuristic keywords.
    • Non-native Autofill browsers are now deemed unsupported before Android 9.
    Source code(tar.gz)
    Source code(zip)
  • v1.13.5(Jul 28, 2021)

  • v1.13.4(Mar 20, 2021)

  • v1.13.3(Mar 7, 2021)

  • v1.13.2(Dec 21, 2020)

    Added

    • Invalid .gpg-id files can now be fixed automatically by deleting them and then trying to create a new password.
    • Suggest users to re-clone repository when it is deemed to be broken
    • A new browser support level is added for Chrome Canary and Chrome Dev which are shipping fixes developed by Password Store maintainer Fabian to improve the Autofill experience on Chromium browsers

    Changed

    • Synced localisations with Crowdin. This adds Galician and Italian translations while getting rid of incomplete Arabic, Chinese Simplified, Chinese Traditional, Czech, Japanese and Spanish.

    Fixed

    • Cancelling the Autofill "Generate password" action now correctly returns you to the original app.
    • If multiple username fields exist in the password, we now ensure the later ones are not dropped from extra content.
    • Icons in Autofill suggestions are no longer black on almost black in dark mode.
    • Decrypt screen would stay in memory infinitely, allowing passwords to be seen without re-auth
    • Git commits in the store would wrongly use the 'default' committer as opposed to the user's configured one
    • Connection attempts now use a reasonable 10 second timeout as opposed to the default of 30 seconds
    • A change to the remote host key for a server would prevent the user from being able to connect to it
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.13.2.apk(4.29 MB)
    APS-nonFree_v1.13.2.aab(5.26 MB)
    APS-nonFree_v1.13.2.apk(4.51 MB)
  • autofill-parser-v1.0.0(Apr 7, 2021)

  • v1.13.1(Oct 23, 2020)

    Fixed

    • OpenKeychain authentication would fail with LifecycleOwner com.zeapo.pwdstore.git.GitServerConfigActivity@f578da1 is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.

    Added

    • Add support for domain-level autofill in DuckDuckGo's F-Droid builds.
    • Support gopass MIME secret encoding

    Changed

    • The newly added automatic synchronisation feature has been rolled back due to multiple issues with its implementation.
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.13.1.apk(4.27 MB)
    APS-nonFree_v1.13.1.aab(5.26 MB)
    APS-nonFree_v1.13.1.apk(4.49 MB)
  • v1.13.0(Oct 22, 2020)

    Long-form release notes: https://msfjarvis.dev/posts/aps-october-release/

    Fixed

    • Some classes of errors would be swallowed by an unhelpful 'Invalid remote: origin' message
    • Repositories created within APS would contain invalid .gpg-id files with no ability to fix them from the app
    • Button labels were invisible in Autofill phishing warning screen
    • Unsupported authentication modes would appear briefly in the server config screen

    Added

    • Add GPG key selection step to onboarding flow
    • Allow configuring an app-wide HTTP(S) proxy
    • Add option to automatically sync repository on app launch
    • Add a quickfix for invalid HTTPS URLs that contain a custom port
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.13.0.apk(4.27 MB)
    APS-nonFree_v1.13.0.aab(5.26 MB)
    APS-nonFree_v1.13.0.apk(4.50 MB)
  • v1.12.1(Oct 13, 2020)

  • v1.12.0(Sep 24, 2020)

    Added

    • Allow sorting by recently used
    • Add Bromite, Ungoogled Chromium and Kiwi to supported browsers list for Autofill
    • Add ability to view the Git commit log
    • Allow generating ECDSA and ED25519 keys for SSH
    • Add support for multiple/fallback authentication methods for SSH
    • Add warning when the custom SSH port in a URL could potentially be ignored

    Changed

    • A descriptive error message is shown if no username is specified in the Git server settings
    • Remove explicit protocol choice from Git server settings, it is now inferred from your URL
    • 'Show hidden folders' is now 'Show hidden files and folders'
    • Generated SSH keys are now stored in the Android Keystore if available, and encrypted at rest otherwise
    • Allow using device's screen lock credentials to secure generated SSH key
    • Update onboarding UI
    • Update translations

    Fixed

    • Git server protocol and authentication mode are only updated when explicitly saved
    • Remember HTTPS password during a sync operation
    • Unable to use show/hide password option for password/passphrase after first attempt was wrong
    • TOTP values shown might some times be stale and considered invalid by sites
    • Symlinks are no longer clobbered by the app (only available on Android 8 and above)
    • Workaround lack of SSH connection reuse capabilities on some Git hosts like Bitbucket
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.12.0.apk(4.13 MB)
    APS-nonFree_v1.12.0.aab(5.26 MB)
    APS-nonFree_v1.12.0.apk(4.36 MB)
  • v1.11.3(Aug 27, 2020)

  • v1.11.2(Aug 24, 2020)

  • v1.11.0(Aug 19, 2020)

    Added

    • Allow changing the branch used for Git operations
    • Allow setting a subdirectory key when creating folders
    • Allow adding digits/symbols in XkPasswd generated passwords using a mask-like value (dds gives you two digits and a symbol, and so on)

    Changed

    • The Git repository URL can now be specified directly
    • Slightly reduce APK size
    • Always show the parent path in entries
    • Passwords will no longer be copied to the clipboard by default
    • Notify user if there was nothing to push

    Fixed

    • Allow creating nested directories directly
    • I keep saying this but for real: error message for wrong SSH/HTTPS password is properly fixed now
    • Fix crash when OpenKeychain is not installed
    • Clone operation won't leave user on an empty password list upon failure
    • Cloning a new repository to external storage wouldn't work
    • UI froze for some people when deleting existing files from the external directory
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.11.0.apk(4.11 MB)
    APS-nonFree_v1.11.0.aab(5.22 MB)
    APS-nonFree_v1.11.0.apk(4.33 MB)
  • v1.10.3(Jul 31, 2020)

  • v1.10.2(Jul 30, 2020)

  • v1.10.1(Jul 23, 2020)

  • v1.10.0(Jul 22, 2020)

    Changed

    • A brand new icon to go with our biggest update ever!
    • Light theme is now a consistent white across the board with ample contrast
    • XkPassword generator is now easier to use with less configuration options
    • Edit screen now has better protection and guidance for invalid names
    • Improved biometric authentication UX on app start
    • Improved password list UI

    Fixed

    • Folder names that were very long did not look right
    • Error message for wrong SSH/HTTPS password now looks cleaner
    • Fix authentication failure with usernames that contain the @ character
    • Text input boxes were illegible on dark theme
    • Top-level password names had inconsistent top margin making them look askew
    • Password Store no longer ignores the selected OpenKeychain key
    • Password export now happens in a separate process, preventing possible freezes

    Added

    • TOTP support is reintroduced by popular demand. HOTP continues to be unsupported and heavily discouraged.
    • Initial support for detecting and filling OTP fields with Autofill
    • OTP codes can be automatically filled from SMS (requires Android P+ and Google Play Services)
    • Importing TOTP secrets using QR codes
    • Support for ed25519/ECDSA SSH keys
    • Navigate into newly created folders and scroll to newly created passwords
    • Support per-directory keys
    • Full pt-BR localization
    Source code(tar.gz)
    Source code(zip)
    APS-free_v1.10.0.apk(4.23 MB)
    APS-nonFree_v1.10.0.aab(5.38 MB)
    APS-nonFree_v1.10.0.apk(4.45 MB)
  • v1.9.2(Jun 30, 2020)

  • v1.9.1(Jun 28, 2020)

  • v1.9.0(Jun 21, 2020)

    Fixed

    • 'Draw over other apps' permission dialog opens when attempting to use Oreo Autofill
    • Old app shortcuts are now removed when the local repository is deleted

    Added

    • Completely revamped decypted password view
    • Add support for better, more secure Keyex's and MACs with a brand new SSH backend
    • Allow manually marking domains for subdomain-level association. This will allow you to keep separate passwords for site1.example.com and site2.example.com and have them show as such in Autofill.
    • Provide better messages for OpenKeychain errors
    • Rename passwords and categories

    Changed

    • BREAKING: Remove support for HOTP/TOTP secrets - Please use FIDO keys or a dedicated app like Aegis or andOTP
    • Reduce Autofill false positives on username fields by removing "name" from list of heuristic terms
    • Reduced app size
    • Improve IME experience with server config screen
    • Removed edit password option from long-press menu.
    • Batch deletion now does not require manually confirming for each password
    • Better commit messages on password deletion
    Source code(tar.gz)
    Source code(zip)
    APS_v1.9.0.aab(4.79 MB)
    APS_v1.9.0.apk(3.88 MB)
  • v1.8.1(May 24, 2020)

  • v1.8.0(May 23, 2020)

    Added

    • Allow user to abort password move when it is replacing an existing file
    • Allow setting a default username for Autofill
    • Add no authentication mode for working with public repositories

    Changed

    • More UI related tweaks, changes and improvements
    • Improved error messages and internal logic for server configuration

    Fixed

    • Add the following fields to encrypted username detection: user, account, email, name, handle, id, identity.
    • Improved detection of broken or incomplete git repositories
    • Better UX flow for storage permissions
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(3.34 MB)
  • v1.7.2(Apr 28, 2020)

    Added

    • Settings option to enable debug logging

    Changed

    • SSH Keygen UI was improved
    • Default key length for SSH Keygen is now 4096 bits
    • Settings items were rearranged and cleaned up
    • Autofill icons in dark mode are now more legible

    Fixed

    • Failure to detect if repository was not cloned which broke Git operations
    • Search results were inaccurate if root directory's name started with a dot (.)
    • Saving git username and email did not provide user-facing confirmation
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(3.39 MB)
  • v1.7.1(Apr 23, 2020)

    Fixed

    • Autofill message does not show OK button when many browsers are installed
    • Autofill message does not get marked as shown when dismissed
    • App crashes when using type-independent sort
    • Storage permission not requested when using existing external repository
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(3.38 MB)
  • v1.7.0(Apr 21, 2020)

    Our biggest release yet with crucial fixes and massive new features. Please also welcome our newest maintainer, @FabianHenneke!

    Added

    • Flexible Oreo autofill support with anti-phishing protection
    • Rudimentary validation of SSH keys during import
    • Securely remember HTTPS password/SSH key passphrase

    Fixed

    • Text input box theming
    • Password repository held in non-hidden storage no longer fails
    • Remove ambiguous and confusing URL field in server config menu and heavily improve UI for ease of use

    Changed

    • Improved user experience with search backed by consistent search logic and fuzzy matching
    • Improved UX around server config settings
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(3.38 MB)
  • v1.6.0(Mar 20, 2020)

    Added

    • Copy implicit username (password filename) by long pressing
    • Create xkpasswd style passwords
    • Swipe on password list to synchronize repository

    Fixed

    • Resolve memory leaks on password decryption
    • Can't delete folders containing a password
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(3.00 MB)
Owner
Android Password Store
Android client for the Password Store CLI
Android Password Store
This is a simple app to help get or set your Slack status from the command line.

Slack Status This is a simple app to help get or set your Slack status from the command line. The app is a Spring Boot app written in Kotlin. It uses

Steven Noto 1 Oct 16, 2021
A simple command line parser that takes different kind and format of inputs

CLI Parser Kata Introduction This is a simple command line parser that takes different kind and format of inputs and exports them to other format and

Victor Grycuk 0 Oct 5, 2021
Bbl - A command line tool to read Holy Bible

bbl A command line tool to read Holy Bible Usage In the command line, type bbl g

Hokuto Ide 12 Oct 26, 2022
Pass parameters safely and quickly between activities or fragments.

Bracer Pass parameters safely and quickly between activities or fragments. Read this in other languages: 中文, English, Change Log Prepare Add the JitPa

Season 57 Jan 3, 2023
Asteroid Radar is an app that allow you to view the asteroids detected by NASA that pass near Earth

Asteroid-radar Asteroid Radar is an app that allow you to view the asteroids detected by NASA that pass near Earth. you can view all the detected aste

Ana Stanescu 5 Aug 6, 2022
A 2020s compatible React Native keyboard avoiding view for Android and iOS that just works.

react-native-keyboard-shift Example Snack coming soon Until then: Clone this repo: git clone https://github.com/FullStackCraft/react-native-keyboard-s

Full Stack Craft 66 Aug 16, 2022
Techbee e.U. 62 Jan 31, 2023
NativeScript empowers you to access native platform APIs from JavaScript directly. Angular, Capacitor, Ionic, React, Svelte, Vue and you name it compatible.

NativeScript empowers you to access native APIs from JavaScript directly. The framework currently provides iOS and Android runtimes for rich mobile de

NativeScript 22k Dec 31, 2022
Android Bitcoin market app base on Jetpack Compose and MVI. The app displays current bitcoin market price and history price k-line charts.

compose-bitcoin Android Bitcoin market app base on Jetpack Compose and MVVM & MVI. Features Current bitcoin market price. K-line charts of history pri

Chen Pan 3 May 20, 2022
A monotone line-based icon pack for android

Arcticons (Arctic icons) is a line-based icon pack forked from Frost but rebuild with consistent sizing and adjustments specifically for lines in mind

Donno 413 Jan 2, 2023
The Android Trivia application is an application that asks the user trivia questions about Android development

The Android Trivia application is an application that asks the user trivia questions about Android development. It makes use of the Navigation component within Jetpack to move the user between different screens. Each screen is implemented as a Fragment. The app navigates using buttons, the Action Bar, and the Navigation Drawer.

Srihitha Tadiparthi 1 Feb 10, 2022
Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

Aria Shirazi 93 Oct 23, 2022
Math World is an Android Application specialized in mathematics, where the application includes some sections related to arithmetic, unit conversion, scientific math laws and constants, as well as some mathematical questions that need some intelligence to reach the solution.

Math World is an Android Application specialized in mathematics, where the application includes some sections related to arithmetic, unit conversion, scientific math laws and constants, as well as some mathematical questions that need some intelligence to reach the solution.

null 7 Mar 12, 2022
Realtime SOS Android Application. Location (GPS + Cellular Network) tracing application by alerting guardians of the User.

WomenSaftey Women Safety Android Application: Realtime SOS Android Application. Designed a Location (GPS + Cellular Network) tracing application by al

jatin kasera 6 Nov 19, 2022
Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Shubhaprasad Padhy 1 Jan 9, 2022
A blogging mobile application built with Kotlin using MVC design pattern and Take some advantage of Jetpack , View & Data Binding It's a mimic for Tumblr application , But a little prettier than him 😉

A blogging mobile application built with Kotlin using MVC design pattern and Take some advantage of Jetpack , View & Data Binding It's a mimic for Tum

Ahmed Ihab 17 Dec 23, 2022
Quiz-Application - A quiz application which uses opentdb api to get quiz of different levels like Easy Hard and Medium

Quiz-Application A quiz application which uses opentdb api to get quiz of differ

Pranat Praveer 2 Jan 25, 2022
Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

null 3 Aug 5, 2022