| Age | Commit message (Collapse) | Author | Files | Lines |
|
The autofill setup dialog, the publisher-changed warning and the
biometric setting still told users to look for "Password Store", which
is not what the app is called in the autofill service list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The Italian strings were largely machine-translated: "commit" became
"conferma" (confirm), pull and push became "trascina" and "spingi" or
"premi" (drag, push a button), rebase became "ricollocare", the store
became "negozio" (a shop), "pretend" became "pretendere" (a false
friend), and one string showed "/0" instead of "/". Autofill had five
different spellings.
Rewrite those, keep Git terms in English (remote, branch, push, pull,
rebase, merge, commit, detached HEAD, fast-forward), use "compilazione
automatica" as Android's Italian settings do, make "repository"
masculine throughout, replace the "Sei pregato di" calque with plain
imperatives, name the app HardenedPass, and translate the 52 strings
that fell back to English.
Also drop the "TODO: Add a recovery method" that the merge-failure
message showed users, in English and every locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Filling OTPs from SMS used Play Services' SMS User Consent API, removed
with the nonFree flavor; since then AutofillSmsActivity was a stub that
never offered the dataset. Delete it, its manifest entry, the dataset
builders in both response builders, its drawable and string.
AutofillAction.FillOtpFromSms stays in autofill-parser: it is public,
metalava-checked API and harmless for a client that never fills it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Entries created in the app said "username:dave". pass users and other
clients write "username: dave"; the parser already trims either form.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The add and edit commit messages said "using Android Password Store"
in every locale. The Italian remove message translated "store" as
"negozio" (a shop); use "archivio".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
CryptoRepository.encrypt looked up every .gpg-id recipient and dropped
the ones it could not find, so an entry saved on a device that lacked
one recipient's key was encrypted to the others only. With a store
shared between a phone key and a smartcard key, entries created on the
phone could no longer be decrypted with the smartcard alone.
Fail with the lookup error instead (KeyNotFoundException names the
key), so the user imports the missing public key and saves again.
PasswordCreationActivity also ignored the Result of encrypt and wrote
the output buffer regardless: on any encryption failure it wrote an
empty .gpg file, overwriting the entry when editing, and committed it.
Show the error and leave the file untouched.
CryptoRepositoryTest covers both the missing-recipient failure and the
all-present success path, with keys generated by PGPainless (added as
an app test dependency).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The fork gets its own application ID and name, so it installs next to
upstream's app.passwordstore instead of replacing it, and could be
submitted to F-Droid. Debug builds keep the .debug suffix and are
labelled "HardenedPass Debug". The Kotlin package stays
app.passwordstore: renaming it would be churn with no visible effect.
"GrapheneOS" is kept out of the name because it is that project's
trademark; "Hardened" nods to its vocabulary. README and AGENTS.md
describe the fork's GrapheneOS goal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Bouncy Castle 1.78.1 is affected by GHSA-574f-3g2m-x479,
GHSA-9pwp-9qqc-pr26, GHSA-c3fc-8qff-9hwx and GHSA-qp49-qgx5-5m26, all
fixed by 1.85. PGPainless 1.7.8 is the newest 1.x release. A root
resolution rule keeps every Bouncy Castle module on the catalog version;
before, bcpg 1.77 shipped next to bcprov 1.78.1.
The new stack decrypts the OCB (LibrePGP) packets GnuPG 2.3+ emits by
default, which the old one rejected as "non-standard AEAD". Drop the
NonStandardAEAD error, its bottom sheet and strings, and replace the
mislabelled aead_* fixtures (SHA-1 self-signed keys plus a message
encrypted to an unrelated key) with a real GnuPG 2.5 key and OCB message
that the tests now decrypt. The new fixture is a throwaway test key, so
it is allowlisted in .gitleaksignore by fingerprint.
Fix KeyUtils.isKeyUsable, which compared a Boolean to null and so
accepted every key that parsed, including keys with no encryption
subkey. A signing-only key fixture now covers the rejection path.
Also: migrate the removed SelectUserId.firstMatch and deprecated
addDecryptionPassphrase APIs, keep one copy of the Bouncy Castle
META-INF/LICENSE.md in the APK, and move the existing InvalidPackage
lint baseline entries to the bcpkix 1.86 jar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
* chore: set up Crowdin configuration
* fix(app): sync strings from Crowdin
Closes #3174
* fix(ci): use crowdin/github-action instead of homebrew setup
* fix(build): remove obsolete Crowdin plugin
|
|
* directory structure setting moved to general settings
* Update app/src/main/java/app/passwordstore/util/settings/PreferenceKeys.kt
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Signed-off-by: Alexander Grahn <agrahn@users.noreply.github.com>
---------
Signed-off-by: Alexander Grahn <agrahn@users.noreply.github.com>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
|
|
|
|
Spotless has fixed their Gradle Configuration Cache woes in the past
couple months which gets rid of my primary complaint.
|
|
* add user ID input field (password creation/edit), may fix #1458
* fix: revert change to username label
* refactor: rework FieldItem to drop hard-coded strings
* refactor: drop unnecessary `.apply`
---------
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
|
|
|
|
* more robust switch actions in pgp settings
* Update app/src/main/java/app/passwordstore/ui/settings/PGPSettings.kt
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Signed-off-by: agrahn <agrahn@users.noreply.github.com>
* Update app/src/main/java/app/passwordstore/ui/settings/PGPSettings.kt
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Signed-off-by: agrahn <agrahn@users.noreply.github.com>
* Update app/src/main/java/app/passwordstore/ui/settings/PGPSettings.kt
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Signed-off-by: agrahn <agrahn@users.noreply.github.com>
* formatting fixed (ktfmtFormat)
---------
Signed-off-by: agrahn <agrahn@users.noreply.github.com>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
Fixes #2802
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
attack vector (#3136)
prevent app crash upon passphrase cache clearing
|
|
* add checkbox in passphrase dialog to clear cache
* instantiating PasswordDialog via newInstance, passing args as Bundle
* refactor: put checkbox directly in the layout
---------
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
|
|
* enabling pgp passphrase cache with authentication
* clear passphrase cache on first autofill decrypt after screen off
---------
Co-authored-by: Alexander Grahn <me@null.org>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
|
|
Fixes #3053
|
|
Fixes #2974
Fixes #2963
Fixes #2921
Fixes #2924
Fixes #2653
Fixes #2461
Fixes #2586
Fixes #2179
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
* strings: sync with crowdin
* chore: refresh Lint baseline
---------
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
|
|
* strings: sync with crowdin
* fix: use ellipsis character
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* fix: use more ellipses
---------
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
Fixes #2783
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
|
|
|
|
Autofill is only available on API 26 and above and I do not want to deal with
bugs on these older Android releases.
|
|
|
|
Currently has horrible UX and is behind an experimental feature flag
|
|
|
|
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
strings: sync with crowdin
Co-authored-by: GitHub Actions <noreply@github.com>
|
|
|
|
|
|
|
|
|