diff options
| -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> |
