From db49c998c7746812f78c6d7b8d2ae5cbb6bb25bc Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 2 Nov 2026 13:41:05 +0100 Subject: feat: rename the app to HardenedPass (xyz.danix.hardenedpass) 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 --- AGENTS.md | 13 ++++++++----- README.md | 7 +++++-- app/build.gradle.kts | 2 +- app/src/debug/res/values/strings.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 2 +- 5 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 app/src/debug/res/values/strings.xml diff --git a/AGENTS.md b/AGENTS.md index 619123c3..0222ad6b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,17 +4,20 @@ Guidance for AI coding agents (Claude Code, opencode, etc) working in this repos ## What this is -Maintained fork of Android Password Store, an Android client for `pass` +HardenedPass: a maintained fork of Android Password Store, an Android client for `pass` (OpenPGP-encrypted files in a git repository). Upstream (`android-password-store/Android-Password-Store`) was archived in October 2024; the fork -started in November 2026 from upstream's last commit. Kotlin, Gradle, about 18k lines. +started in November 2026 from upstream's last commit. Kotlin, Gradle, about 18k lines. The +goal is to work flawlessly on GrapheneOS: no Google Play Services, no telemetry. Modules: `app` (UI, git sync, autofill service), `autofill-parser`, `crypto:common`, `crypto:pgpainless`, `format:common`, `passgen:diceware`, `passgen:random`, `ui:compose`, `coroutine-utils`. Build conventions live in `build-logic/`. -The app name and `applicationId` (`app.passwordstore`) are still upstream's on purpose. Do not -rename them unless asked: it is tied to the release-signing decision (see Releases). +`applicationId` is `xyz.danix.hardenedpass` (debug: `.debug` suffix, label "HardenedPass +Debug"), so it installs next to upstream's `app.passwordstore` and never updates over it. The +Kotlin package stays `app.passwordstore`; renaming it is churn with no user-visible effect. +Keep "GrapheneOS" out of the app name: it is that project's trademark. ## Repository layout and remotes @@ -82,7 +85,7 @@ real device with a trusted browser (e.g. Firefox) instead: e2e server over USB; serve a local login page the same way (`python3 -m http.server` on 127.0.0.1, `adb reverse` its port). Nothing is exposed on the network. - Record `settings get secure autofill_service` and `global stay_on_while_plugged_in` first, - restore both afterwards, then `adb uninstall app.passwordstore.debug`, delete the pushed + restore both afterwards, then `adb uninstall xyz.danix.hardenedpass.debug`, delete the pushed keys from Download and `adb reverse --remove-all`. - Set `svc power stayon usb` before driving: if the screen locks, taps land on the lock screen's PIN pad. Check `dumpsys window | grep mCurrentFocus` (and `isKeyguardShowing`) diff --git a/README.md b/README.md index 2e04034b..8c452f90 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -# Password Store +# HardenedPass An Android client for [pass](https://www.passwordstore.org/), the standard Unix password manager. Passwords are stored as OpenPGP-encrypted files in a git repository, so the same store works with -`pass` on the desktop and with this app on the phone. +`pass` on the desktop and with this app on the phone. HardenedPass aims to work flawlessly on +GrapheneOS: it needs no Google Play Services and sends no telemetry. This is a maintained fork of [android-password-store/Android-Password-Store](https://github.com/android-password-store/Android-Password-Store), @@ -17,6 +18,8 @@ Android Password Store authors. - Bouncy Castle 1.86 and PGPainless 1.7.8, fixing known Bouncy Castle advisories. - Decrypt screen no longer reachable by other apps with arbitrary file paths. - No build scans uploaded to third-party services. +- No crash reporting (Sentry) and no Google Play Services; a single FOSS build. +- Own application ID (`xyz.danix.hardenedpass`): installs next to upstream instead of over it. ## Building diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0105bd4e..872f79dd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,7 +19,7 @@ android { namespace = "app.passwordstore" defaultConfig { - applicationId = "app.passwordstore" + applicationId = "xyz.danix.hardenedpass" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml new file mode 100644 index 00000000..5c8ed051 --- /dev/null +++ b/app/src/debug/res/values/strings.xml @@ -0,0 +1,8 @@ + + + + HardenedPass Debug + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b3f3e71c..0584a1f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,7 +11,7 @@ - Password Store + HardenedPass Settings Directory already exists -- cgit v1.2.3