From 052da3106831404416e11575da14961a95145af3 Mon Sep 17 00:00:00 2001 From: ultraelectronica Date: Mon, 22 Jun 2026 19:59:27 +0800 Subject: [PATCH] Add Latch 0.15.0-beta.1 changelog and What's New highlights --- CHANGELOG.md | 56 +++++++++++++++++++++++ lib/services/whats_new_service.dart | 71 +++++++++++++++++++++++++++++ whats_new.json | 60 ++++++++++++++---------- 3 files changed, 162 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 689f840..e5cdee9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,62 @@ All notable changes to Latch are documented in this file. - Sub-48px tap targets replaced with `IconButton` - `main.dart` update-check `StreamSubscription` stored + cancelled in `dispose()` +## 0.15.0-beta.1 + +### Password Vault & Autofill +- **Password vault** — store, edit, and organize credentials inside the encrypted vault +- **Password editor** with generator for strong random passwords +- **Password list** with search, domain filtering, and multi-select +- **Android Autofill service** — seamlessly fill credentials in other apps and browsers +- Autofill credential toggle with security warning dialog +- **Autofill support** on PIN and password unlock inputs +- **Clipboard auto-clear** after pasting passwords +- Password index included in vault backups + +### Crypto Overhaul +- **AEAD key-wrapping** for vault master key (AES-256-GCM wrapping) +- **Argon2id** key derivation alongside PBKDF2 +- `HeaderCodec` for encrypted file format detection +- Stateless **AES-256-GCM** and **AES-256-CTR** cipher primitives +- **Key wrapping and biometric unlock** for master keys +- Encryption key **re-wrapping** after password/PIN change +- Constant-time string comparison for cryptographic operations +- **PBKDF2 iterations increased to 600,000** (from 100,000) +- Default encryption algorithm set to **AES-256-GCM** + +### Update System Rework +- **GitHub-based updates** via `url_launcher` (supports non-Play Store installs) +- Install source detection — Play Store vs sideload vs GitHub +- Pre-release version ordering with `pub_semver` + +### Testing & Infrastructure +- **CI workflow** for versionF branch +- Comprehensive unit tests for AES-256-GCM, CTR, crypto hygiene, password strength +- PBKDF2 isolate test suite +- Argon2id KWK derivation and AES-256-GCM key wrapping tests + +### UI Polish +- Tooltips on song player, media viewer, and password editor buttons +- SnackBar margin, shape, and elevation styling +- Search and sort actions moved to overflow menu +- GestureDetector replaced with IconButton for better accessibility +- `forceReload` parameter on vault cache loaders + +### Security Hardening +- App backup disabled +- Network security config for cleartext traffic policy +- ProGuard minification enabled for release builds +- ProGuard rules for Flutter, crypto, and autofill service + +### Cleanup +- Removed Firebase dependencies from Android Gradle config +- Removed deprecated compression services and widgets +- Removed redundant file existence checks across the codebase +- Removed unused UI components, imports, and platform stubs +- Replaced `cupertino_icons` and `encrypt` with `device_info_plus` + +--- + ## 0.14.4-beta.4 ### Notes System diff --git a/lib/services/whats_new_service.dart b/lib/services/whats_new_service.dart index b6bec52..50d982d 100644 --- a/lib/services/whats_new_service.dart +++ b/lib/services/whats_new_service.dart @@ -55,6 +55,77 @@ class WhatsNewService { /// The key MUST match `PackageInfo.version` exactly (the `+buildNumber` /// suffix is ignored). static const Map> _builtIn = { + '0.15.0-beta.1': [ + WhatsNewSection( + title: 'Password Vault & Autofill', + items: [ + WhatsNewItem( + icon: Icons.lock_outlined, + title: 'Password vault', + description: + 'Store, edit, and organise credentials inside the encrypted vault with a built-in strong password generator.', + ), + WhatsNewItem( + icon: Icons.auto_awesome_outlined, + title: 'Android Autofill', + description: + 'Seamlessly fill credentials in other apps and browsers — Latch now integrates with the Android Autofill framework.', + ), + WhatsNewItem( + icon: Icons.info_outlined, + title: 'Clipboard auto-clear', + description: + 'Copied passwords are automatically cleared from the clipboard after use.', + ), + ], + ), + WhatsNewSection( + title: 'Crypto Overhaul', + items: [ + WhatsNewItem( + icon: Icons.shield_outlined, + title: 'Argon2id + key wrapping', + description: + 'AEAD key-wrapping protects the vault master key. Argon2id joins PBKDF2 for memory-hard key derivation.', + ), + WhatsNewItem( + icon: Icons.key_outlined, + title: '600,000 PBKDF2 iterations', + description: + 'Default iterations raised 6× — from 100k to 600k — for stronger resistance against brute-force attacks.', + ), + WhatsNewItem( + icon: Icons.new_releases_outlined, + title: 'Auto re-wrap on PIN change', + description: + 'The encryption key is automatically re-wrapped when you change your password or PIN.', + ), + ], + ), + WhatsNewSection( + title: 'Updates & Stability', + items: [ + WhatsNewItem( + icon: Icons.system_update_outlined, + title: 'GitHub update support', + description: + 'Update checks now detect your install source — Play Store, sideload, or GitHub — and route you accordingly.', + ), + WhatsNewItem( + icon: Icons.bug_report_outlined, + title: 'Comprehensive test suite', + description: + 'New unit tests cover every crypto path: AES-256-GCM, CTR, PBKDF2, Argon2id, and key wrapping.', + ), + WhatsNewItem( + icon: Icons.build_outlined, + title: 'CI workflow active', + description: + 'Automated builds and tests now run on every push to the versionF branch.', + ), + ], + ), + ], '0.14.4-beta.4': [ WhatsNewSection( title: 'Notes', diff --git a/whats_new.json b/whats_new.json index 77236e7..a40b6eb 100644 --- a/whats_new.json +++ b/whats_new.json @@ -1,52 +1,62 @@ { - "0.14.4-beta.5": [ + "0.15.0-beta.1": [ { - "title": "Security Hardening", + "title": "Password Vault & Autofill", "items": [ { - "icon": "lock_outline", - "title": "Argon2id key wrapping", - "description": "Your PIN or password now derives a key-wrapping key with Argon2id that encrypts the vault master key — the credential actually protects the vault, not just the lock screen." + "icon": "lock_outlined", + "title": "Password vault", + "description": "Store, edit, and organise credentials inside the encrypted vault with a built-in strong password generator." }, { - "icon": "speed", - "title": "Stronger key derivation", - "description": "Default PBKDF2 iterations raised to 600,000 and AES-256-GCM is now the default cipher for new media." + "icon": "auto_awesome_outlined", + "title": "Android Autofill", + "description": "Seamlessly fill credentials in other apps and browsers — Latch now integrates with the Android Autofill framework." }, { - "icon": "verified_user_outlined", - "title": "Hardened credential checks", - "description": "Constant-time comparison for all credential and decoy verification, 6-digit minimum decoy PIN, and plaintext wiped from temp files after re-encryption." + "icon": "info_outlined", + "title": "Clipboard auto-clear", + "description": "Copied passwords are automatically cleared from the clipboard after use." } ] }, { - "title": "Password Vault", + "title": "Crypto Overhaul", "items": [ { - "icon": "password_outlined", - "title": "Passwords in the gallery", - "description": "Open and create password entries directly from the gallery screen's quick actions." + "icon": "shield_outlined", + "title": "Argon2id + key wrapping", + "description": "AEAD key-wrapping protects the vault master key. Argon2id joins PBKDF2 for memory-hard key derivation." + }, + { + "icon": "key_outlined", + "title": "600,000 PBKDF2 iterations", + "description": "Default iterations raised 6× — from 100k to 600k — for stronger resistance against brute-force attacks." + }, + { + "icon": "new_releases_outlined", + "title": "Auto re-wrap on PIN change", + "description": "The encryption key is automatically re-wrapped when you change your password or PIN." } ] }, { - "title": "Under the Hood", + "title": "Updates & Stability", "items": [ { - "icon": "architecture_outlined", - "title": "Crypto modules split", - "description": "Encryption internals split into independently tested GCM, CTR, key-derivation, header, and key-wrap modules — 33 new round-trip and auth-failure tests." + "icon": "system_update_outlined", + "title": "GitHub update support", + "description": "Update checks now detect your install source — Play Store, sideload, or GitHub — and route you accordingly." }, { - "icon": "cleaning_services_outlined", - "title": "Dead code purge", - "description": "Removed unused widgets, a dead asset, vestigial Firebase wiring, and stale platform stubs for a leaner build." + "icon": "bug_report_outlined", + "title": "Comprehensive test suite", + "description": "New unit tests cover every crypto path: AES-256-GCM, CTR, PBKDF2, Argon2id, and key wrapping." }, { - "icon": "science_outlined", - "title": "CI + ProGuard", - "description": "GitHub Actions CI runs analyze and tests on every push; release builds now ship obfuscated with ProGuard rules for crypto and autofill." + "icon": "build_outlined", + "title": "CI workflow active", + "description": "Automated builds and tests now run on every push to the versionF branch." } ] }