Skip to content

Extract crypto primitives module, add autofill unlock support, and add comprehensive tests#48

Merged
ultraelectronica merged 34 commits into
mainfrom
versionF
Jun 22, 2026
Merged

Extract crypto primitives module, add autofill unlock support, and add comprehensive tests#48
ultraelectronica merged 34 commits into
mainfrom
versionF

Conversation

@ultraelectronica

Copy link
Copy Markdown
Member

Summary

Refactors the encryption service into standalone crypto primitives (AES-256-GCM, AES-256-CTR, PBKDF2, Argon2id, AEAD key-wrapping), adds autofill unlock support for PIN/password inputs, and adds comprehensive crypto test coverage.

Changes

Crypto Primitives

  • Refactor encryption service to extract standalone crypto primitives
  • Add stateless AES-256-CTR cipher primitives
  • Add AES-256-GCM cipher with stateless encrypt/decrypt
  • Add HeaderCodec class for encrypted file format detection
  • Add key derivation module with PBKDF2 and Argon2id support
  • Add AEAD key-wrapping module for vault master key

Autofill Unlock

  • Add autofill support for PIN and password inputs
  • Add autofill credential toggle with security warning dialog
  • Add unlock autofill preference storage
  • Add autofillEnabled parameter to PinInputWidget
  • Add documentation for autofill unlock credential delegation

Testing

  • Add comprehensive tests for crypto modules (AES, key derivation, key wrapping, header codec)

Vault Cache

  • Add forceReload parameter to vault cache loaders
  • Refactor refresh method to atomically swap caches

Cleanup

  • Remove unused performance and compression widgets
  • Remove unused UI components
  • Remove unused _importFromDocuments method
  • Remove Firebase dependencies from Android Gradle config
  • Remove outdated locker logo asset
  • Remove obsolete platform entries from .metadata

Build

  • Bump version to 0.15.0-beta.1 with security hardening and password vault

UI

  • Move search and sort actions into overflow menu
  • Add margin, shape, and elevation to SnackBar

Docs

  • Update architecture docs for media encryption and compression

Bug Fixes

  • Copy a local list of files to avoid mutating the caller's list on delete

Add a `forceReload` parameter to `_loadFileIndex`, `_loadAlbums`,
`_loadFolders`, and `_loadTags` to bypass the cached result and
always fetch from secure storage.

Refactor the `refresh` method to load all data into local variables
first, then atomically swap the caches. This prevents concurrent
access from observing a null cache during the reload.
@ultraelectronica ultraelectronica self-assigned this Jun 22, 2026
@ultraelectronica ultraelectronica merged commit 35db78a into main Jun 22, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant