Commit Graph

1325 Commits (3e3df919b28cb22302a521338906805af005ee2a)

Author SHA1 Message Date
Praveen Kumar 9c07b981d4 Fix scrolling in bottom sheet for groups 9 months ago
Alexander Bakker 2b69dc3a84 Save the vault when saving group filter right after a vault version bump 9 months ago
Alexander Bakker ee1dd322b8
Merge pull request #1357 from michaelschattgen/feature/audit-log
Add audit log
9 months ago
Alexander Bakker 56285eb468
Merge pull request #1352 from InfiniteCoder06/bug-spacing
Fix Spacing Issue With Name
9 months ago
Praveen Kumar 7e8b86ecf5 Fix spacing issue with entry name 9 months ago
Alexander Bakker ea09c67027
Merge pull request #1383 from NWuensche/master
Update change of Code Digit Grouping
9 months ago
codeall9 65a57f2b9c Remember group selection after screen rotate
Solution:
Restore _groupFilter as _prefGroupFilter in order to reapply correct filter after screen rotate
9 months ago
nwuensche 40f630170c Update change of Code Digit Grouping 10 months ago
Alexander Bakker 2b04ae0622
Merge pull request #1370 from michaelschattgen/fix/icon-packs-assign
Fix icon pack selector in AssignIconsActivity
10 months ago
codeall9 802d449bfb
Fix AppearancePreferencesFragment title after locale changed
root cause:
the `_prefTitle` is saved in `CharSequence`

solution:
we only able to store `CharSequence` since `Preference.getTitleRes` is removed in AndroidX. As a workaround, we update the title again on Fragment.onStart()
10 months ago
Michael Schättgen 69126242bd Fix icon pack selector in AssignIconsActivity 10 months ago
Michael Schättgen dee881bc05
Merge pull request #1347 from InfiniteCoder06/refractor-groups
Renaming of Groups
10 months ago
Michael Schättgen 171da34b13 Start working on audit logs 11 months ago
Praveen Kumar a582c2053c
Renaming of Groups 11 months ago
Alexander Bakker 9b96bbde54 Adjust R8 settings for easier retracing of stacktraces in release builds 11 months ago
Alexander Bakker 559e68e0d2 Stop analyzing password strength if it becomes longer than 64 chars
This should help reduce the chance that zxcvbn4j explodes on a password
input.

I also took the opportunity to deduplicate related code a bit.
11 months ago
Alexander Bakker 0d34f0749d Use DayNight as the default theme
This reduces the chance that we flashbang the user when they launch the
app. The issue remains on older Android versions that don't natively
support dark mode, but I don't think that's fixable.

Activities override the theme based on the user's settings, so this
change only has effect while the app is launching.
11 months ago
Michael Schättgen f44fe389d7 Release v3.0.1 11 months ago
Michael Schättgen 49a2b5d34d
Merge pull request #1323 from alexbakker/glide-no-res
Don't use Glide to load drawable resources
11 months ago
Michael Schättgen 006815d36b
Merge pull request #1322 from alexbakker/new-battle-net
Add support for importing from the new Battle.net app
11 months ago
Alexander Bakker 3962d50fa6 Use Android color reference for android:colorBackground in AMOLED theme
My best guess is that API 28 and below somehow interpret ``#000000`` to mean
either ``@null`` or transparent for ``android:colorBackground``.
11 months ago
Alexander Bakker 9815e510df Don't use Glide to load drawable resources
Loading drawables using Glide while the size of the ImageView
is not known yet appears to result in a blurry mess.
11 months ago
Alexander Bakker f9f37d30b2 Release v3.0 11 months ago
Alexander Bakker 4c4acf0cd0 Update translations from Crowdin 11 months ago
Alexander Bakker 4311bd9bd8 Add support for importing from the new Battle.net app 11 months ago
Alexander Bakker 60c72d48ee Switch to AboutLibraries for the third-party license list
The previous library we were using is unmaintained and can't be
customized to match the Material 3 theme.
11 months ago
Michael Schättgen 8912d75870 Fix padding unlock button 12 months ago
Alexander Bakker 4c28bf2a12 Make the code color white for AMOLED
Co-authored-by: Michael Schättgen <michael@schattgen.me>
12 months ago
Alexander Bakker 45ced0de60 Fix various minor inconsistencies in entry list item offsets
This patch addresses the following:
- More consistent offsets between entries in the list, especially in
  relation to the action bar and the error card.
- Consistent correct application of card shapes when switching between
  favoriting and unfavoriting entries.
- Removal of CompactDividerDecoration. We no longer uses dividers, so
  this is no longer needed.
12 months ago
Michael Schättgen bf7c60d620 Fix shape of favorited entries 12 months ago
Alexander Bakker 6fc9cd5a71
Merge pull request #1310 from michaelschattgen/feature/last-used
Add ability to sort based on last used timestamp
12 months ago
Michael Schättgen 9bae4d6bbc Add ability to sort based on last used timestamp 12 months ago
Alexander Bakker 2b2cac1ada
Merge pull request #1308 from michaelschattgen/fix/ui-inconsistencies
Fix a couple UI inconsistencies
12 months ago
Michael Schättgen f1e14e6645 Fix a couple UI inconsistencies 12 months ago
Michael Schättgen 52ecf12576 Fix copied text visibility 12 months ago
Alexander Bakker 8995626d16 Apply dark background colors when combining AMOLED and dynamic colors
Previously, the dark background colors would not be applied for this
combination of settings.

Unfortunately, I couldn't find a way to avoid some duplication in
themes.xml.
12 months ago
Michael Schättgen cffe15735c
Merge pull request #1302 from alexbakker/fix-cam-btn-color
Set the correct color for the camera switch button
12 months ago
Alexander Bakker c5b8ee9215 Set the correct color for the camera switch button 12 months ago
Alexander Bakker 2e44a81c69 Use MaterialColors.getColor instead of our own helper
I set CompactDividerDecoration to transparant, because that was already
effectively the case. I think we can remove this class entirely, but
I'll do that in a separate PR.
12 months ago
Alexander Bakker f76d84ef87 Release v3.0-beta1 12 months ago
Alexander Bakker 3d59114230 Update translations from Crowdin 12 months ago
Michael Schättgen 22c9ab7c03
Merge pull request #1295 from alexbakker/intro-init-crash
Don't initialize VaultManager after the intro unless saving succeeds
12 months ago
Michael Schättgen f8ad3d16fc
Merge pull request #1297 from alexbakker/entry-move-anim
Restore entry list item animations
12 months ago
Michael Schättgen fbd3bf3ff5
Merge pull request #1296 from alexbakker/shown-entries-bold
Only bold number of shown entries if found in the translated string
12 months ago
Alexander Bakker 8bbbe3611a Don't initialize VaultManager after the intro unless saving succeeds
In rare cases where writing to disk fails after the intro, a crash could
occur if the user presses "Done" again. VaultManager would have been
initialized, and trying to initialize it again would result in a crash.
12 months ago
Michael Schättgen 2d0e201060
Merge pull request #1294 from alexbakker/load-vaultfile
Load vault file on demand instead of juggling it around in-memory
12 months ago
Michael Schättgen b59350337f
Merge pull request #1293 from alexbakker/disable-unlock-button
Disable the unlock button until the slot decryption task is done
12 months ago
Michael Schättgen 6d73e5101c
Merge pull request #1278 from alexbakker/fix-1077
Pass down the root shell to every SuFile for the Authy importer
12 months ago
Michael Schättgen d16d56c4b0
Merge pull request #1263 from alexbakker/icon-suggestion-prio
Prioritize normal icon issuer matches over inverse matches
12 months ago
Alexander Bakker fcde086ae3 Material 3
Co-authored-by: Michael Schättgen <michael@schattgen.me>
12 months ago
Alexander Bakker 0e2fa929e6 Restore entry list item animations
This fixes an issue where the entry list items no longer animated upon
move, insert, delete, etc.

RecyclerView's DefaultItemAnimator automatically scales the animations
according to the user's settings.

Introduced in 9ff8efab69
12 months ago
Alexander Bakker 8951c19581 Only bold number of shown entries if found in the translated string
This should fix the following crash:

```
Exception java.lang.IndexOutOfBoundsException: setSpan (-1 ... 0) starts before 0
  at android.text.SpannableStringInternal.checkRange (SpannableStringInternal.java:499)
  at android.text.SpannableStringInternal.setSpan (SpannableStringInternal.java:199)
  at android.text.SpannableStringInternal.setSpan (SpannableStringInternal.java:186)
  at android.text.SpannableString.setSpan (SpannableString.java:60)
  at com.beemdevelopment.aegis.ui.views.EntryAdapter$FooterView.refresh (EntryAdapter.java:596)
```
12 months ago
Alexander Bakker 32e462bdce Load vault file on demand instead of juggling it around in-memory
This trades performance for making VaultManager a bit easier to reason
about.

This also fixes a rare crash that could occur if the user retries to unlock
the app after the previous attempt resulted in an error related to
parsing the vault. The vault file would no longer be present in memory
after the first attempt, causing the second attempt to crash the app.
12 months ago
Alexander Bakker 6bd8521661 Disable the unlock button until the slot decryption task is done
This prevents a crash that could occur when double tapping the Unlock
button.
12 months ago
Alexander Bakker 57ec695718 Pass down the root shell to every SuFile for the Authy importer
The issue was introduced in: 69f0bb4fbc
1 year ago
Michael Schättgen 224ec2553c
Merge pull request #1262 from alexbakker/glide-caching
Use the hash of entry icons as keys for Glide caching
1 year ago
Michael Schättgen 5acacf63e1
Merge pull request #1249 from alexbakker/2fas-schema4
Add support for importing 2FAS schema v4 backups
1 year ago
Alexander Bakker bfbb3ef2c4 Prioritize normal icon issuer matches over inverse matches
Icon packs may have very generic issuers for their icons (like [aegis-simple-icons](https://github.com/alexbakker/aegis-simple-icons)).
For example, this causes the icon assigning view to suggest the "C" icon for every
entry that contains a "c".

This patch addresses that by giving inverse matches (where the entry
issuer contains the icon issuer) a lower position in the suggested icons
list.
1 year ago
Alexander Bakker f1c9c6c5fc Use the hash of entry icons as keys for Glide caching
This is mostly a cleanup of the way we do Glide in-memory caching. It
also fixes a few minor issues along the way:

- Entry icon cache keys were based on entry UUID's. This could cause
  problems when changing an entry's icon.
- A TextDrawable could get replaced by the icon of a different entry
  when scrolling through the entry list quickly.
1 year ago
Michael Schättgen 566bcac3e0
Merge pull request #1236 from alexbakker/steam-xposed
Add support for importing decrypted Steam JSON blob
1 year ago
Alexander Bakker 4d729d1bef
Merge pull request #1204 from ranjeetchouhan/master
feat: Update references to FreeOTP and add version hint "1.x"
1 year ago
Ranjeet 1acb9db489 feat: Update references to FreeOTP and add version hint "1.x"
Co-authored-by: Alexander Bakker <ab@alexbakker.me>
1 year ago
Alexander Bakker 98bcdc7615 Update Gradle and dependencies 1 year ago
Alexander Bakker 7c1a954e4d Stop using deprecated startActivityAndCollapse(Intent) 1 year ago
Alexander Bakker a1d00b47fe
Merge pull request #1238 from cyb3rko/startactivityforesult-deprecation
Replace deprecated startActivityForResult
1 year ago
Niko Diamadis ca530f229b
Replace startActivityForResult with result launchers 1 year ago
Alexander Bakker b86bb286e8 Add support for importing 2FAS schema v4 backups 1 year ago
Alexander Bakker 52abb08201 Update dependencies 1 year ago
Alexander Bakker ff233090f8 Add support for importing decrypted Steam JSON blob
Some people have managed to snatch the OTP details from Steam using
Xposed while it is being decrypted by the app. Aegis still won't be
able to do the decryption part, but we can add support for importing
the decrypted JSON blob, which only differs slightly from the old
format.
1 year ago
Alexander Bakker adaae9e6d6
Merge pull request #1234 from michaelschattgen/feature/issuer-sort-account-fallback
Improve issuer and account sorting
1 year ago
Michael Schättgen da2244f511 Improve issuer and account sorting 1 year ago
Alexander Bakker 08c73922cc Explain vault backup permission error
Users understandably get confused by the "No persisted URI permissions"
error. This patch adds some text to the dialog explaining why this
happened and how the user can fix the issue.

This permission issue can happen for one of two reasons:
- The user made a change to the backup destination (renamed, moved,
  deleted, etc)
- Aegis was restored from an Android backup
1 year ago
Joshua Soberg 45220241aa
#1231 - Use public constructors for License/Changelog dialog fragments so that they can be recreated on configuration change 1 year ago
Alexander Bakker 60e93559c3 Bump target SDK version and update dependencies 1 year ago
Michael Schättgen 1c86c5fd51 Add ability to select all tokens 1 year ago
Alexander Bakker c13d4e7f8d Transition to non-final resource IDs and non-transitive R classes
Future versions of AGP will force us to do this, so we might as well get
it over with now.
1 year ago
Alexander Bakker 03f1a0e8ab Introduce a separate menu for AssignIconsActivity
Apparently this was using ``menu_groups``, probably a copy-paste error.

This also moves ``AssignIconsActivity`` to the right package.
1 year ago
Alexander Bakker 305e157fc5
Merge pull request #1078 from orange-elephant/entries-in-multiple-groups
Refer to groups by UUID
1 year ago
elena 5c86e5c099 Refer to groups by UUID
- Also lays the foundations for adding entries to multiple groups and changing group names

Co-authored-by: Alexander Bakker <ab@alexbakker.me>
1 year ago
Michael Schättgen 0760bfc618
Merge pull request #1188 from alexbakker/fix-anim-issues
Fix two issues related to animation duration scale
1 year ago
Alexander Bakker 9414b5c420
Merge pull request #1172 from michaelschattgen/feature/assign-icons
Add ability to automatically assign icons to (imported) entries
1 year ago
Alexander Bakker e7a1058618 Fix two issues related to animation duration scale
This patch addresses two issues:
- The entry selection icon would flicker when a non-1x animator
  duration scale was set.
- The advanced entry field animation was not shown if the animator
  duration scale was set to .5x, due to a rounding error.

Introduced in: 9ff8efab69
1 year ago
Michael Schättgen 1a6f85ccb6 Add ability to assign icons
More progress

Open IconPicker dialog on click

Add ability to reset

Fix changing icons

Cleanup

Add ability to assign icons after import

PR fixes
1 year ago
Michael Schättgen b84ecf15da
Merge pull request #1184 from alexbakker/no-nested-recyclerview
Never wrap RecyclerView with a NestedScrollView
1 year ago
Alexander Bakker 31b8162ab4 Use 'comment' instead of 'context' to add context to strings 1 year ago
Alexander Bakker 7def7eb4f7 Remove unused strings and add context to a couple of strings
Most of these were related to slots. Also removed the card_slot layout.
1 year ago
Alexander Bakker 8ca45d2322 Fix singular form of the import_error_dialog string 1 year ago
Alexander Bakker ca4a3e2f74 Never wrap RecyclerView with a NestedScrollView
Wrapping a ``RecyclerView`` with a ``NestedScrollView`` breaks its recycling
functionality because the view height is stretched to fit the full list
of entries.

We never noticed performance issues in these two cases because these
lists never get very long. Let's fix these cases anyway so that we
don't accidentally base a new use of a ``RecyclerView`` on this broken
pattern.

Also renamed ``list_slots`` to ``list_groups``. Must have been
a copy-paste error.
1 year ago
Alexander Bakker 37964da4a5 Clarify that only Aegis vaults can be imported during the intro
Some users understandably get confused when they try to import a backup
file from a different 2FA app during the intro and then get greeted
with an error dialog.

This changes the button text to "Import Aegis vault" and adds a small
hint text in the hope that this makes the limitations of the intro more
clear to the user.

<img width="200" src="https://alexbakker.me/u/jzhh3bk30w.png" />
1 year ago
Alexander Bakker dd9c307dea Release v2.2.2 1 year ago
Alexander Bakker c65ecd9c54 Update translations from Crowdin 1 year ago
Michael Schättgen 72511fc02b
Merge pull request #1180 from alexbakker/fix-tile-crash
Check for null returned by getQsTile()
2 years ago
Michael Schättgen 79ade74c0c
Merge pull request #1179 from alexbakker/icon-name
Introduce optional 'name' field for iconpack icons
2 years ago
Alexander Bakker 1ccbe88ce6 Check for null returned by getQsTile()
Apparently ``getQsTile()`` can return null, which resulted in a crash.
Reported through the Google Play Console:

```
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'void android.service.quicksettings.Tile.setState(int)' on a null object reference
  at com.beemdevelopment.aegis.services.LaunchAppTileService.onStartListening
  at android.service.quicksettings.TileService$H.handleMessage (TileService.java:488)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loopOnce (Looper.java:205)
  at android.os.Looper.loop (Looper.java:294)
  at android.app.ActivityThread.main (ActivityThread.java:8177)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:552)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:971)
```
2 years ago
Alexander Bakker 9b3e7136bd Introduce optional 'name' field for iconpack icons
This introduces a new (optional) 'name' field for iconpack icons. It
will be used to describe the icon in the icon selection dialog. If it is
not present, the name of the icon will be derived from the filename,
like before. Using this new field allows usage of more exotic characters
in the icon name that are not allowed in a filename.
2 years ago
Alexander Bakker 9cabd9f309 Add support for new Authenticator Pro backup format
This adds support for Authenticator Pro's latest backup format changes.
The format of the content itself has not changed as far as I can tell, but
they do use a different cipher and KDF now: AES GCM and Argon2id,
respectively.

The memory cost is statically set at 64MiB. I suspect that this may
cause OOM situations on some lower-end devices, but we'll see, not much
we can do about that right now without making more changes.
2 years ago
Michael Schättgen 27e56d60b5 Release v2.2.1 2 years ago
Michael Schättgen c9cf6729e0 Fix biometrics unlock button on AuthActivity 2 years ago
Alexander Bakker b916697391
Merge pull request #1171 from michaelschattgen/feature/import-duplicates
Add ability to skip duplicates during import
2 years ago
Michael Schättgen b205438982 Add ability to skip duplicates during import 2 years ago
Michael Schättgen 4f83706f73 Release v2.2 2 years ago
Michael Schättgen 44bb11e2d8 Update translations from Crowdin 2 years ago
Alexander Bakker 2793b65786 Fix versions of two build dependencies 2 years ago
Michael Schättgen 5e35cc203f Fix bug in Japanese translation 2 years ago
Michael Schättgen 67d7f7a75d Release v2.2-beta1 2 years ago
Michael Schättgen 18e6fd2561 Update translations from Crowdin 2 years ago
Michael Schättgen 9ff8efab69 Respect system animation setting
Co-authored-by: Alexander Bakker <ab@alexbakker.me>
2 years ago
Alexander Bakker 3278d6544b Update dependencies 2 years ago
Michael Schättgen 8917bb3b94 Fix the spacing between issuer and account name 2 years ago
Michael Schättgen d90303cf0e Add tiles view mode
Minor UI improvements
Fix animations
Fix typo
Improvements made after PR review
PR improvements

Co-authored-by: Alexander Bakkker <ab@alexbakker.me>
2 years ago
Michael Schättgen edb1d8d76f Add ability to only show names when necessary 2 years ago
Michael Schättgen 3ff242e6b6 Add ability to change copy behavior 2 years ago
Michael Schättgen ef069e49af Add dialog when password reminder is activated 2 years ago
Michael Schättgen d3c48848be
Merge pull request #1162 from michaelschattgen/feature/account-name-position
Add ability to change account name position
2 years ago
Michael Schättgen 813fd62dc7 Add ability to change account name position 2 years ago
nerodevo 3026a3eab1 Remove unwanted character 2 years ago
Alexander Bakker efd8e2d9ff Run key derivation for Authenticator Pro importer on background thread 2 years ago
Alexander Bakker 58b8edf318 Various minor touchups for the Authenticator Pro importer 2 years ago
Alexander Bakker abe7af1549
Merge pull request #1080 from NepNep21/authpro
Add Authenticator Pro encrypted import support, fixes #1035
2 years ago
NepNep21 289d5409a5
Add Authenticator Pro encrypted import support 2 years ago
Alexander Bakker e906131f1b Disable Glide notification permission lint check
Fixes the build
2 years ago
Alexander Bakker b6bfc5b15f Update Gradle and dependencies 2 years ago
Alexander Bakker 90f2ea79d9
Merge pull request #1100 from beemdevelopment/bugfix/empty-state
Fix empty state while using search filter
2 years ago
Michael Schättgen 3c9e5a9fdb Fix empty state while using search filter 2 years ago
Alexander Bakker f0f9653ace Release v2.1.3 2 years ago
Alexander Bakker e2df97514c Update translations from Crowdin 2 years ago
Michael Schättgen 61d41a26fa Add ability to disable backup reminder 2 years ago
elena d3e5472ef2 Only enable export buttons if options are in a valid state 2 years ago
Alexander Bakker bf825df221 Fix crash caused by incorrect Toast creation 2 years ago
Alexander Bakker 121c1dada9
Merge pull request #1054 from orange-elephant/checkboxes-dropdown
Create checkboxes dropdown component
2 years ago
elena 1c9931b1c8 Display export groups selection as dropdown 2 years ago
elena 51698947aa Create checkboxes dropdown component 2 years ago
Alexander Bakker ceaf52e238 Update dependencies 2 years ago
Alexander Bakker cad2ecfe1b Release v2.1.2 2 years ago
Alexander Bakker 36b1f91140 Update translations from Crowdin 2 years ago
Alexander Bakker 4bd12f5abe Don't try to move entries that are filtered out
This fixes a crash that could occur when changing an entry in such a
way that it is filtered out from the entry list after the change.
2 years ago
Alexander Bakker 780a215a6b Release v2.1.1 2 years ago
Alexander Bakker f6f05dee6e Update translations from Crowdin 2 years ago
Alexander Bakker 7a1e4e1d77 Move HTML export logic to a separate file and finish it up 2 years ago
Alexander Bakker 2c36149a3d
Merge pull request #1032 from JordanPlayz158/master
Battle.net Authenticator Import Support
2 years ago
JordanPlayz158 f3731c23a3 Battle.net Importing Support
Fixed issue caused by supplying the VaultEntry with the Base32 encoded string rather than the raw secret

Added blizzard package to manifest so Aegis is allowed to query whether the app is installed

Fixed VaultEntry to be more inline with other entries

Removed the unnecessary encoding of the secret as it is used as is without encoding and changed the way the TotpInfo object is supplied with the relevant information.

Credits to alexbakker (https://github.com/beemdevelopment/Aegis/pull/1032#pullrequestreview-1203477313)
2 years ago
Alexander Bakker bebda569de
Merge pull request #1039 from CristianAUnisa/export-to-html
Export vault to HTML
2 years ago
Alexander Bakker 0112431269 Abort andOTP import early if number of iterations is suspicious 2 years ago
CristianAUnisa 59c887e6a4 Export vault to HTML 2 years ago
Alexander Bakker ee6a020f4d Disallow empty strings to pass through text input dialogs
This also fixes a crash for certain importers than could occur if the
user entered an empty password.
2 years ago
Alexander Bakker ee15a61403 Prevent the use of MD5 for anything other than mOTP
This forcefully resets any HOTP/TOTP entries that were using MD5 back to
SHA1, because users could only configure this by mistake. No website should be
using it, as the HOTP algorithm was not made to be compatible with the
hash length of MD5.
2 years ago
Alexander Bakker 927a27943b
Merge pull request #1045 from Toadsta/copyURI
Copy URI to clipboard when using transfer entries
2 years ago
Alexander Bakker 69f0bb4fbc Request root access from separate thread and don't use global Shell
This should help prevent some of the ANR's reported through Google Play
2 years ago
Alexander Bakker ac51996896 Move XML comment to attribute in the string tag 2 years ago
Alexander Bakker 8cf48a94aa Clarify backup reminder with time elapsed since last backup/export 2 years ago