Skip to content

Add password manager with Android autofill, master key encryption, and tooltip accessibility#47

Merged
ultraelectronica merged 64 commits into
mainfrom
versionF
Jun 20, 2026
Merged

Add password manager with Android autofill, master key encryption, and tooltip accessibility#47
ultraelectronica merged 64 commits into
mainfrom
versionF

Conversation

@ultraelectronica

Copy link
Copy Markdown
Member

Summary

Adds a complete password manager with Android autofill service, master key-based encryption with key wrapping and biometric unlock, and extensive tooltip accessibility improvements.

Changes

Password Manager

  • Add PasswordEntry and PasswordContent models with JSON serialization and encryption metadata
  • Add password management providers with Riverpod
  • Add password editor screen
  • Add password list screen with search, filtering, and multi-select
  • Add password entry card widget
  • Add password generator sheet widget
  • Add password service with encryption and vault integration
  • Add clipboard utility with auto-clear functionality
  • Add password vault registration methods
  • Include password index in vault backup
  • Add password list navigation to vault explorer

Android Autofill

  • Add autofill service for credential management
  • Add AutofillCallbackHolder to manage autofill callbacks
  • Add AutofillSelectionActivity for credential selection UI
  • Add AutofillApp entry point widget
  • Add autofill suggestion layout XML
  • Add autofill service metadata resource
  • Add AutofillService and user-facing autofill entry point

Master Key & Encryption

  • Implement key wrapping and biometric unlock for master keys
  • Unlock master key during vault authentication
  • Integrate EncryptionService into authentication flows
  • Re-wrap encryption key after password/PIN change
  • Add onOpenPassword callback to FileOpenService
  • Add password vault integration to gallery screen
  • Update default encryption algorithm to AES-256-GCM
  • Increase PBKDF2 iterations to 600000
  • Check biometric availability before authenticating in autofill

UI & Accessibility

  • Add tooltips across media viewer, song player, password editor, and autofill screens
  • Replace GestureDetector with IconButton for autofill dismiss and folder selection
  • Add mounted checks before setState calls in async callbacks
  • Dispose controllers after dialog completion

Platform & Security

  • Add ProGuard rules for Flutter, crypto, and autofill service
  • Add Android data extraction and network security config (disable backup, enforce HTTPS)
  • Disable app backup, enable ProGuard minification for release builds
  • Add CI workflow for versionF branch

Cleanup

  • Remove deprecated compression services
  • Remove redundant file existence checks
  • Remove compression usage example file
  • Replace hardcoded SDK version with device_info_plus
  • Replace fluttertoast with SnackBar using global navigator key
  • Consolidate download directory to shared PathUtils

Testing

  • Add unit tests for AES-256-GCM and CTR encryption round-trips
  • Add PBKDF2 isolate test suite
  • Add tests for Argon2id KWK derivation and AES-256-GCM key wrapping
  • Add unit tests for crypto hygiene and password strength checks

Introduce core data classes for password management with JSON
serialization, copyWith methods, tag management, and encryption
metadata support.
Add biometric check before proceeding with local authentication
on the autofill selection screen. If biometrics are not enabled,
show a message indicating they are unavailable. After successful
biometric authentication, attempt to unlock the master key and
display an error if it fails.
Also dispose of text controllers in folder dialogs after completion
Add EncryptionService dependency to AuthService, setting pending
credentials during creation and verification of passwords, PINs, and
biometric setup. Update credential change operations to re-wrap keys
and remove biometric keys. Extract backup credential clearing into a
private helper method and increase KDF iterations from 100k to 600k.
Add lockout check during credential verification.
Update PIN validation to require exactly 6 digits and integrate
pending credential flow with EncryptionService for both decoy PIN
and password operations. Increase default KDF iterations from
100000 to 600000. Clean up additional decoy key storage entries
when resetting decoy data.
The old `MediaCompressionService` relied on deprecated packages
and the `ImprovedCompressionService` has been superseded by the
new video compressor implementation using FFmpeg isolates.
- Remove example files from analysis
- Enable `avoid_print` lint rule
Both configurations disable cloud backup and device transfer, and
enforce
HTTPS-only network traffic on Android.
- Replace fluttertoast with SnackBar using global navigator key
- Move download directory resolution to shared PathUtils class
- Consolidate file type icon/color helpers into FileTypeColors
- Remove now-unused allFilesProvider in favor of vaultNotifierProvider
- Add secure_compare utility for auth and decoy services
- Fix password validation to use AuthService constraints
- Adjust iOS keychain accessibility setting
@ultraelectronica ultraelectronica merged commit 1ae0174 into main Jun 20, 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