-
470598a723
fix(android): no User button on an entry without a username
r-zakarya
2026-08-16 23:22:58 +01:00
-
7218df2f6f
feat(android): copy from the list, server params grouped, HTML probe
r-zakarya
2026-08-16 23:16:18 +01:00
-
e85f46f501
feat(android): copy from the list, framed entries, one radius everywhere
r-zakarya
2026-08-16 22:44:52 +01:00
-
218a0dde03
fix(android): the search field stops moving, and the magnifier steps aside
r-zakarya
2026-08-16 22:35:30 +01:00
-
d22089900c
fix(android): the edit fields were still shaped like pills
r-zakarya
2026-08-16 22:26:37 +01:00
-
4347dba8d9
feat(android): the system bars join the gradient
r-zakarya
2026-08-16 22:23:27 +01:00
-
9bc005696d
fix(android): a field should look recessed, a button raised
r-zakarya
2026-08-16 22:18:16 +01:00
-
2e2ded1146
fix(android): the Copy buttons were ellipses, not pills
r-zakarya
2026-08-16 22:06:09 +01:00
-
27a7a322d6
feat(android): the palette taken from the phone's global search
r-zakarya
2026-08-16 19:47:44 +01:00
-
1609b4d328
docs(android): Gitea as the transport, instead of hosting the endpoint
r-zakarya
2026-08-16 11:36:43 +01:00
-
40475b0204
docs(android): two open questions on the interface
r-zakarya
2026-08-15 20:00:04 +01:00
-
8f9ebb8d47
feat(android): blue instead of cyan, everywhere at once
r-zakarya
2026-08-15 19:55:06 +01:00
-
8dedcaecab
fix(android): stop offering an open that cannot succeed
r-zakarya
2026-08-15 19:45:25 +01:00
-
ceaba331d8
feat(android): the search field takes the shape Android uses for search
r-zakarya
2026-08-15 19:38:37 +01:00
-
5ef4987272
fix(android): a lock with no key locked the user out entirely
r-zakarya
2026-08-15 19:34:05 +01:00
-
49377b0990
fix(android): the clear cross lives beside the field, not inside it
r-zakarya
2026-08-15 19:27:36 +01:00
-
aba873b9cc
feat(android): follow the desktop's look, and a cross to clear the search
r-zakarya
2026-08-15 19:19:22 +01:00
-
e128b85658
docs(android): the two safety rules, as they actually stand now
r-zakarya
2026-08-15 18:53:47 +01:00
-
301a999596
feat(android): a short grace period before backgrounding locks the vault
r-zakarya
2026-08-15 18:51:57 +01:00
-
773e47330f
fix(android): ask for the device credential alone when no biometric is enrolled
r-zakarya
2026-08-15 18:35:30 +01:00
-
d472dd4ef8
fix(android): encryption cannot see a dead key, so stop pretending it can
r-zakarya
2026-08-15 18:21:50 +01:00
-
e4a50df64d
fix(android): protection catches up with the cache, and a dead key gets replaced
r-zakarya
2026-08-15 18:11:48 +01:00
-
fa424a3bc7
docs(android): section 1 is complete, six checks out of six
r-zakarya
2026-08-15 18:03:09 +01:00
-
bc89ec0010
i18n(android): the interface speaks English, like the desktop app
r-zakarya
2026-08-15 17:59:31 +01:00
-
b900b5b609
fix(android): one frame around the search field, not two
r-zakarya
2026-08-15 17:50:20 +01:00
-
e8e305b6fd
feat(android): recolour the two native controls, and hide the log by default
r-zakarya
2026-08-15 17:43:52 +01:00
-
5a2774974a
fix(android): the folder panel closes when you tap beside it
r-zakarya
2026-08-15 17:37:43 +01:00
-
09f108aa8d
feat(android): the last two styled controls give way
r-zakarya
2026-08-15 17:26:02 +01:00
-
e5eb91cd3f
feat(android): paint the interface instead of wearing a style
r-zakarya
2026-08-15 16:55:54 +01:00
-
25dc524585
feat(android): the launch screen shows the padlock, not Delphi's flame
r-zakarya
2026-08-15 16:21:26 +01:00
-
fdeb870541
chore: track the launcher icons, the blanket *.png rule was swallowing them
r-zakarya
2026-08-15 16:12:08 +01:00
-
202b93c246
feat(android): a padlock icon instead of Delphi's default
r-zakarya
2026-08-15 16:11:31 +01:00
-
65e6ba6a54
fix(android): draw the search hint ourselves, TextPrompt needs a style object
r-zakarya
2026-08-15 16:04:01 +01:00
-
31ee1b45c6
fix(android): build the list rows by hand, styles cannot be trusted with them
r-zakarya
2026-08-15 15:55:00 +01:00
-
b5ccf63a85
feat(android): Skia renders the text, so Arabic reads properly
r-zakarya
2026-08-15 15:44:43 +01:00
-
49efccdd59
feat(android): settings live on the device, dark theme, and the app is called Coffre
r-zakarya
2026-08-15 15:33:56 +01:00
-
861d721513
docs(android): plan caught up with what the device confirmed
r-zakarya
2026-08-15 15:23:04 +01:00
-
3a9248c6c7
fix(android): a fresh container per entry, and the filename left to read in its own direction
r-zakarya
2026-08-15 15:21:19 +01:00
-
bbb44a3787
fix(android): sync went through the door it should have knocked on, and rows kept flipping
r-zakarya
2026-08-15 15:15:56 +01:00
-
4c6376edbf
fix(android): the detail rows were upside down
r-zakarya
2026-08-15 15:09:08 +01:00
-
7229028060
feat(android): show attachments, without carrying their bytes
r-zakarya
2026-08-15 15:05:08 +01:00
-
7939d268f3
feat(android): mark the clipboard sensitive, and lock after 3 min idle
r-zakarya
2026-08-15 14:58:27 +01:00
-
0e39cf7e56
docs(android): the expired auth window no longer costs the cache
r-zakarya
2026-08-15 14:37:56 +01:00
-
f3a8631440
docs(android): the cache chain is verified on device
r-zakarya
2026-08-15 14:28:58 +01:00
-
c4d2bdde73
fix(android): OAEP masks with SHA-1, which is the only MGF1 the key allows
r-zakarya
2026-08-15 14:17:26 +01:00
-
8dc0840e03
fix(android): declare FMX's biometric activity, and stop LoadVault from deleting the cache
r-zakarya
2026-08-15 14:11:20 +01:00
-
1dc4f3bdb6
feat(android): wrap the cache key with an asymmetric Keystore pair
r-zakarya
2026-08-15 14:00:35 +01:00
-
09048410e1
fix(android): report the biometric failure instead of destroying the cache
r-zakarya
2026-08-15 13:42:07 +01:00
-
5187da3070
docs(android): the adb reverse tunnel dies with the USB link
r-zakarya
2026-08-15 13:00:28 +01:00
-
57a295ad36
fix(android): set the biometric strengths before asking what the device can do
r-zakarya
2026-08-15 12:48:43 +01:00
-
4258e9b559
fix(android): USE_BIOMETRIC, and never lock the cache behind a door we cannot open
r-zakarya
2026-08-15 12:09:29 +01:00
-
6d31bf83d2
docs(android): the res tree comes from any IDE build, not the 32-bit one
r-zakarya
2026-08-15 11:54:29 +01:00
-
4805c9ac31
docs(android): building and installing the APK without the IDE
r-zakarya
2026-08-15 11:52:44 +01:00
-
9a4170c44f
feat(android): folder filter, icons, sort, template, updated_at, FLAG_SECURE
r-zakarya
2026-08-15 11:23:29 +01:00
-
3bb6f6f903
feat(android): show first, sync after
r-zakarya
2026-08-15 11:14:44 +01:00
-
ba0d3c1d3c
docs(android): plan of the remaining work
r-zakarya
2026-08-15 10:56:49 +01:00
-
acf4b466e0
fix(android): breathing room under the last detail row
r-zakarya
2026-08-15 10:50:07 +01:00
-
20ba2438df
feat(android): TOTP codes and custom fields in the detail screen
r-zakarya
2026-08-15 10:35:09 +01:00
-
3232f6f163
fix(android): the ETag dies with the plaintext it describes
r-zakarya
2026-08-15 06:04:43 +01:00
-
0ddfe5c5fd
feat(crypto): wire AES-GCM and PBKDF2 to Windows CNG
r-zakarya
2026-08-15 05:59:36 +01:00
-
bf7aac478b
feat(android): read-only viewer - unlock, search, detail
r-zakarya
2026-08-15 01:19:47 +01:00
-
4effc3611d
feat(android): prefill the sync password from a local, untracked include
r-zakarya
2026-08-15 01:04:08 +01:00
-
3cbfd54c26
fix(android): KeyStore.load takes a LoadStoreParameter, not an Object
r-zakarya
2026-08-15 00:56:22 +01:00
-
60b806536a
fix(android): the prompt field is CancelButtonText, not NegativeButtonText
r-zakarya
2026-08-15 00:51:24 +01:00
-
1e7477cdd6
fix(android): overload both Cipher.init declarations, restore CRLF line endings
r-zakarya
2026-08-15 00:49:37 +01:00
-
9649dac7b2
feat(android): protect the local vault with biometric or device credential
r-zakarya
2026-08-15 00:42:50 +01:00
-
5fdb7f914e
feat(android): keep the decrypted vault locally under an Android Keystore key
r-zakarya
2026-08-15 00:37:59 +01:00
-
3c1525e46f
feat(android): end-to-end read path validated on device, add the container diagnostic
r-zakarya
2026-08-15 00:31:01 +01:00
-
a641669150
fix(android): keep the ETag only when the decryption that followed succeeded
r-zakarya
2026-08-15 00:06:30 +01:00
-
ccab734d61
fix(android): re-enable the fetch button on every exit path, prefill the test parameters
r-zakarya
2026-08-14 23:47:54 +01:00
-
d9cadf2cac
fix(android): create the top-aligned controls in reverse so they appear in order
r-zakarya
2026-08-14 23:41:41 +01:00
-
8796bb341d
feat(android): HTTP client for the sync endpoint, with ETag reuse
r-zakarya
2026-08-14 23:37:06 +01:00
-
c684d9073f
feat(android): adopt the platform PBKDF2, record the timing and what follows from it
r-zakarya
2026-08-14 23:30:15 +01:00
-
307bbeae83
chore: ignore the generated project resource too
r-zakarya
2026-08-14 23:23:28 +01:00
-
ffe203a1ef
chore: untrack the Android build output
r-zakarya
2026-08-14 23:23:16 +01:00
-
4cc79a5216
fix(android): declare KeySpec so the native PBKDF2 call resolves, and report why it fails
r-zakarya
2026-08-14 23:22:56 +01:00
-
c607e26c4a
feat(android): measure the native PBKDF2 against the vector instead of guessing
r-zakarya
2026-08-14 18:33:56 +01:00
-
386bf74a2a
feat(android): crypto self-test harness on the new FMX project
r-zakarya
2026-08-14 18:29:12 +01:00
-
02d89c58d2
feat(android): container crypto unit plus a known-answer test vector
r-zakarya
2026-08-14 18:04:39 +01:00
-
90ac75525a
fix(sync-php): read Authorization via getallheaders and tolerate ETag forms
r-zakarya
2026-08-14 17:58:48 +01:00
-
ec4fa433a9
feat(sync): read-only PHP endpoint serving the encrypted snapshot
r-zakarya
2026-08-14 17:41:34 +01:00
-
c74b708b39
fix(import): count the trash when deduplicating by uuid
r-zakarya
2026-08-07 17:35:40 +01:00
-
ebcd75fd2e
feat(backup): include the trash in exports and auto-backups
r-zakarya
2026-08-07 15:04:41 +01:00
-
125cb11756
docs(tests): mark I6 validated — every scenario now passes
r-zakarya
2026-08-07 14:55:47 +01:00
-
afe47259d7
fix(unlock): focus the username first when it is empty, on the quick-search path too
r-zakarya
2026-08-07 14:53:36 +01:00
-
476d6660ad
fix(hotkeys): a locked vault must not hand the foreground back
r-zakarya
2026-08-07 14:48:12 +01:00
-
d242f09c53
docs(tests): mark F1/F3/F4 validated, section F complete
r-zakarya
2026-08-07 12:50:14 +01:00
-
c3c6bce406
fix(sync): a trashed entry is no longer resurrected as a duplicate
r-zakarya
2026-08-07 12:38:07 +01:00
-
b9b098fe12
fix(editor): fire an input event when the generator fills the password
r-zakarya
2026-08-07 12:03:42 +01:00
-
485dd3631e
docs(tests): E5 validated by code inspection, distinguish it from E9
r-zakarya
2026-08-07 11:46:18 +01:00
-
c1e5d14eac
docs(tests): mark H2-H6 validated
r-zakarya
2026-08-07 11:02:05 +01:00
-
af1157f3b0
docs(tests): note that the trash is silently excluded from every backup path
r-zakarya
2026-08-03 00:41:15 +01:00
-
5236aa8b98
fix(busy): gate the document-level shortcuts too
r-zakarya
2026-08-03 00:04:56 +01:00
-
a36164174e
docs(tests): record the four secret-consuming paths and how to test them
r-zakarya
2026-08-03 00:02:27 +01:00
-
c8518c806d
docs(tests): mark F2 validated, note that the file existing proves nothing
r-zakarya
2026-08-02 23:55:04 +01:00
-
f8e78f6940
docs(tests): add E9, the renderer memory check that caught the backup password
r-zakarya
2026-08-02 23:37:07 +01:00
-
5ce18e7ab5
fix(prefs): stop pulling secret prefs into the renderer just to render the UI
r-zakarya
2026-08-02 23:21:03 +01:00
-
3c14836b15
docs(tests): add D6 for the sticky header spacing
r-zakarya
2026-08-02 00:11:06 +01:00
-
7074e7ff93
fix(list): keep the header gap constant when it sticks
r-zakarya
2026-08-02 00:09:33 +01:00
-
ecaa226354
docs(tests): record that D5 needs checking in all three view modes
r-zakarya
2026-08-02 00:06:09 +01:00