diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-02 13:41:05 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-02 13:41:05 +0100 |
| commit | db49c998c7746812f78c6d7b8d2ae5cbb6bb25bc (patch) | |
| tree | 5578e51d8f12625e1db8d2367f1df476d95552b6 | |
| parent | f78754e26c6274f997bbfe0798f47aa86f8f8133 (diff) | |
| download | HardenedPass-db49c998c7746812f78c6d7b8d2ae5cbb6bb25bc.tar.gz HardenedPass-db49c998c7746812f78c6d7b8d2ae5cbb6bb25bc.zip | |
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 <noreply@anthropic.com>
| -rw-r--r-- | AGENTS.md | 13 | ||||
| -rw-r--r-- | README.md | 7 | ||||
| -rw-r--r-- | app/build.gradle.kts | 2 | ||||
| -rw-r--r-- | app/src/debug/res/values/strings.xml | 8 | ||||
| -rw-r--r-- | app/src/main/res/values/strings.xml | 2 |
5 files changed, 23 insertions, 9 deletions
@@ -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`) @@ -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 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2026 Danilo M. <danix@danix.xyz> + ~ SPDX-License-Identifier: GPL-3.0-only + --> +<resources> + <string name="app_name" translatable="false">HardenedPass Debug</string> +</resources> 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 @@ </plurals> <!-- Activity names --> - <string name="app_name" translatable="false">Password Store</string> + <string name="app_name" translatable="false">HardenedPass</string> <string name="action_settings">Settings</string> <string name="dialog_delete_title">Directory already exists</string> |
