summaryrefslogtreecommitdiffstats
path: root/content/en/hardenedpass
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-05 10:39:02 +0100
committerDanilo M. <danix@danix.xyz>2026-11-05 10:39:02 +0100
commit6d5e2e7bc9877fc9b29d3eee4ec6879bcbbd4bec (patch)
treea5dc7bec2cdbecce29935f9b9bfddf49ad19448a /content/en/hardenedpass
parent395eed25a9d879391558026bb90cd3acb9afdacf (diff)
downloaddanixxyz-6d5e2e7bc9877fc9b29d3eee4ec6879bcbbd4bec.tar.gz
danixxyz-6d5e2e7bc9877fc9b29d3eee4ec6879bcbbd4bec.zip
content: write HardenedPass using pages
Entries, OTP codes, sync with conflict recovery and autofill, in both languages, with screenshots from the test store. Still drafts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'content/en/hardenedpass')
-rw-r--r--content/en/hardenedpass/using/_index.md9
-rw-r--r--content/en/hardenedpass/using/autofill/index.md60
-rw-r--r--content/en/hardenedpass/using/entries/editor.pngbin0 -> 103604 bytes
-rw-r--r--content/en/hardenedpass/using/entries/entry.pngbin0 -> 72121 bytes
-rw-r--r--content/en/hardenedpass/using/entries/generator-random.pngbin0 -> 141896 bytes
-rw-r--r--content/en/hardenedpass/using/entries/index.md69
-rw-r--r--content/en/hardenedpass/using/entries/selection.pngbin0 -> 65241 bytes
-rw-r--r--content/en/hardenedpass/using/otp/index.md33
-rw-r--r--content/en/hardenedpass/using/otp/otp.pngbin0 -> 62555 bytes
-rw-r--r--content/en/hardenedpass/using/sync/index.md61
-rw-r--r--content/en/hardenedpass/using/sync/menu.pngbin0 -> 97032 bytes
11 files changed, 210 insertions, 22 deletions
diff --git a/content/en/hardenedpass/using/_index.md b/content/en/hardenedpass/using/_index.md
index b085f4a..a52f1b3 100644
--- a/content/en/hardenedpass/using/_index.md
+++ b/content/en/hardenedpass/using/_index.md
@@ -1,13 +1,10 @@
+++
title = "Using the app"
date = 2026-11-05T00:00:00Z
-description = ""
+description = "Everyday use of HardenedPass: reading and editing entries, OTP codes, syncing with git and filling logins with autofill."
weight = 20
draft = true
+++
-Placeholder.
-
-## First heading
-
-Text.
+Once the app is connected to your store, these pages cover what you do with it day to
+day.
diff --git a/content/en/hardenedpass/using/autofill/index.md b/content/en/hardenedpass/using/autofill/index.md
index 5a62cd1..43b7855 100644
--- a/content/en/hardenedpass/using/autofill/index.md
+++ b/content/en/hardenedpass/using/autofill/index.md
@@ -1,13 +1,65 @@
+++
title = "Autofill"
date = 2026-11-05T00:00:00Z
-description = ""
+description = "How to turn on HardenedPass autofill, fill logins in apps and browsers, save new ones, and what the phishing warning means."
weight = 80
draft = true
+++
-Placeholder.
+Autofill offers your entries directly in login forms, in apps and in browsers, so you do
+not need to copy anything.
-## First heading
+## Turn it on
-Text.
+Open **Settings** and turn on **Enable Autofill**. The app explains what will happen and
+lists your installed browsers with how well each one is supported. Tap OK, choose
+HardenedPass in Android's autofill settings and confirm.
+
+## What each browser can do
+
+The app only trusts browsers it knows, because a browser has to report honestly which
+site a form belongs to. A browser that is not on the list gets no autofill at all.
+
+| Support level | Meaning | Examples |
+|---|---|---|
+| **Fill and save credentials** | Fills username and password, offers to save new ones | Firefox |
+| **Fill and save passwords** | Same, but saving needs no accessibility services enabled | Chrome, Cromite |
+| **Fill credentials** | Fills username and password, no saving | Tor Browser |
+| **Fill passwords** | Fills the password only | Vanadium |
+| **No support** | Autofill stays off | Any browser not on the list |
+
+Vanadium, the browser that comes with GrapheneOS, is trusted, but only at the
+**Fill passwords** level. For full support on GrapheneOS, use Firefox. The dialog in
+Settings shows the real level for the browsers on your phone.
+
+## Fill a login
+
+Tap a login field. Depending on your keyboard, suggestions appear as chips in the
+keyboard's bar or as a dropdown under the field:
+
+- An entry already linked to this site or app shows up by name. Tap it, unlock with
+ your passphrase and the form is filled.
+- **Search entry** opens a search over your store. The entry you choose stays linked
+ to this site or app, so next time it shows up directly.
+- On forms that ask for a new password, such as sign-up pages, **Create entry** opens
+ the editor to make one for this login.
+
+## Save a new login
+
+In a browser that supports saving, log in as usual. Android offers to save to
+HardenedPass. Tap **Save** and the app opens its editor, with the username and password
+filled in. Save the entry there, then remember to
+[sync]({{< relref "/hardenedpass/using/sync" >}}).
+
+Firefox also shows its own save prompt. That one is Firefox's password manager, not
+HardenedPass, and you can dismiss it.
+
+## The phishing warning
+
+Fill suggestions are tied to the app that requested them. If an app you linked to an
+entry changes publisher, its signing certificate no longer matches, and you see
+**Possible phishing attempt** instead of your entry. Tap it for the details.
+
+The app may have changed hands legitimately, but it may also be a fake installed in
+place of the real one, trying to get your password. **Keep Autofill disabled** is the
+safe answer. Choose **Re-enable Autofill** only if you know why the publisher changed.
diff --git a/content/en/hardenedpass/using/entries/editor.png b/content/en/hardenedpass/using/entries/editor.png
new file mode 100644
index 0000000..4651e94
--- /dev/null
+++ b/content/en/hardenedpass/using/entries/editor.png
Binary files differ
diff --git a/content/en/hardenedpass/using/entries/entry.png b/content/en/hardenedpass/using/entries/entry.png
new file mode 100644
index 0000000..c4a6f52
--- /dev/null
+++ b/content/en/hardenedpass/using/entries/entry.png
Binary files differ
diff --git a/content/en/hardenedpass/using/entries/generator-random.png b/content/en/hardenedpass/using/entries/generator-random.png
new file mode 100644
index 0000000..95be89e
--- /dev/null
+++ b/content/en/hardenedpass/using/entries/generator-random.png
Binary files differ
diff --git a/content/en/hardenedpass/using/entries/index.md b/content/en/hardenedpass/using/entries/index.md
index 745a407..927792e 100644
--- a/content/en/hardenedpass/using/entries/index.md
+++ b/content/en/hardenedpass/using/entries/index.md
@@ -1,13 +1,74 @@
+++
title = "Entries"
date = 2026-11-05T00:00:00Z
-description = ""
+description = "How to read, search, copy, create, edit, move and delete entries in HardenedPass, and how to generate passwords."
weight = 50
draft = true
+++
-Placeholder.
+## Find an entry
-## First heading
+The list shows the folders and entries of the store. Tap a folder to open it, or type
+in the **Search** bar at the top. **Recursive filtering**, in
+[Settings]({{< relref "/hardenedpass/reference/settings" >}}), decides whether the
+search also looks inside folders.
-Text.
+## Read an entry
+
+Tap an entry. The app asks for your key's passphrase, decrypts the file and shows its
+fields. It asks every time, unless you turn on **Enable passphrase caching** in
+[Settings]({{< relref "/hardenedpass/reference/settings" >}}).
+
+{{< image src="entry.png" alt="An entry showing its password, username and url fields, each with a copy button." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+- The eye icon shows or hides the password.
+- The copy icon next to a field copies it. A copied password is cleared from the
+ clipboard after 45 seconds by default, and **Password copy timeout** changes that.
+- The pencil opens the editor.
+
+## Create an entry
+
+Tap **New entry**, then **Create new password**.
+
+{{< image src="editor.png" alt="The New entry editor with fields for name, folder, password, username and extra content, and two OTP buttons." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+- **Name** is the file name. Use the site's address, such as `example.org`: it is
+ what autofill looks for and what you will search for later. Remember that the name
+ is not encrypted.
+- **Folder** is where the entry goes. **Change** picks another one.
+- **Password**, **Username** and **Extra content** are what gets encrypted. Anything
+ you put in extra content is stored as further lines of the entry.
+
+Tap **Save**. The entry is encrypted and committed on the phone. It does not reach your
+server until you [sync]({{< relref "/hardenedpass/using/sync" >}}).
+
+**Create new folder**, in the same menu, makes an empty folder.
+
+## Generate a password
+
+In the editor, tap the generator icon at the end of the **Password** field.
+
+{{< image src="generator-random.png" alt="The generator sheet with the Random tab open, showing character options, the length and the Generate and Use buttons." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+- **Random** makes a string of characters. Choose the character types and the length.
+- **Diceware** makes a passphrase of real words, easier to type by hand. Choose how
+ many words and which separator goes between them.
+
+**Generate** makes a new one, and **Use** puts it in the field.
+
+## Edit an entry
+
+Open the entry and tap the pencil. Change what you need and tap **Save**.
+
+## Move, delete and more
+
+Press and hold a row to select it. Tap other rows to add them to the selection.
+
+{{< image src="selection.png" alt="The list in selection mode with one entry selected and the Move, Delete and shortcut icons at the top." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+The icons at the top move the selection to another folder or delete it. With a single
+selection you can also rename a folder, or place a shortcut to an entry on the home
+screen.
+
+Deleting removes the file and records that in git, so the old version is still in the
+history of your store.
diff --git a/content/en/hardenedpass/using/entries/selection.png b/content/en/hardenedpass/using/entries/selection.png
new file mode 100644
index 0000000..e20ee4a
--- /dev/null
+++ b/content/en/hardenedpass/using/entries/selection.png
Binary files differ
diff --git a/content/en/hardenedpass/using/otp/index.md b/content/en/hardenedpass/using/otp/index.md
index 29830e2..64ed3d3 100644
--- a/content/en/hardenedpass/using/otp/index.md
+++ b/content/en/hardenedpass/using/otp/index.md
@@ -1,13 +1,38 @@
+++
title = "OTP codes"
date = 2026-11-05T00:00:00Z
-description = ""
+description = "How HardenedPass stores and shows one-time codes (TOTP) for two-factor login, and how to add them from a QR code or by hand."
weight = 60
draft = true
+++
-Placeholder.
+Many sites offer two-factor login with a code that changes every 30 seconds, the kind
+an authenticator app shows. HardenedPass keeps that secret inside the entry, as an
+`otpauth://` line:
-## First heading
+```
+s3cret
+otpauth://totp/example.com:carol?secret=JBSWY3DPEHPK3PXP&issuer=example.com
+```
-Text.
+Think before you do this. Your password and your second factor end up in the same file,
+so whoever opens that entry has both. If you want two truly separate factors, keep the
+codes in another app.
+
+## Add a code
+
+Open the entry in the editor, or start a new one. Under the fields:
+
+- **OTP from QR** adds the code from the QR image the site shows you, with **Scan QR
+ code** or **Choose an image**.
+- **Manual OTP** takes the **Account** and the **Secret** by hand, for sites that also
+ show the key as text.
+
+Tap **Save**.
+
+## Read a code
+
+Open the entry. The code appears as a field with a countdown bar, and it refreshes by
+itself. The copy icon copies it.
+
+{{< image src="otp.png" alt="An entry showing a password and a six digit OTP code with its countdown." class="max-w-sm mx-auto rounded-lg border border-border" />}}
diff --git a/content/en/hardenedpass/using/otp/otp.png b/content/en/hardenedpass/using/otp/otp.png
new file mode 100644
index 0000000..e3b06fb
--- /dev/null
+++ b/content/en/hardenedpass/using/otp/otp.png
Binary files differ
diff --git a/content/en/hardenedpass/using/sync/index.md b/content/en/hardenedpass/using/sync/index.md
index 271c72c..2351d5b 100644
--- a/content/en/hardenedpass/using/sync/index.md
+++ b/content/en/hardenedpass/using/sync/index.md
@@ -1,13 +1,66 @@
+++
title = "Sync"
date = 2026-11-05T00:00:00Z
-description = ""
+description = "How HardenedPass syncs your store with git: when changes are committed, how to pull and push, and how to recover from a conflict."
weight = 70
draft = true
+++
-Placeholder.
+Every change you make in the app, such as a new entry, an edit or a delete, is
+committed to git on the phone straight away. **Nothing is sent to the server until you
+sync.** Until then, the change exists only on this phone.
-## First heading
+## Sync
-Text.
+Pull down on the list to synchronize. You can also use the three dots in the search
+bar:
+
+{{< image src="menu.png" alt="The list's menu with Synchronize repository, Pull from remote, Push to remote and Settings." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+- **Synchronize repository** fetches the server's changes and sends yours.
+- **Pull from remote** only fetches.
+- **Push to remote** only sends.
+
+Synchronize is what you want almost every time. To turn the gesture off, use
+**Disable pull to sync action** in
+[Settings]({{< relref "/hardenedpass/reference/settings" >}}).
+
+## When two devices change the same thing
+
+If you edit the same entry on the phone and on a computer before syncing, git cannot
+pick a winner. The app uses a rebase by default (**Rebase on pull**), and the sync
+stops with an error saying the pull failed and that you are in a detached head. Your
+work is not lost.
+
+Open **Settings**, then **Local Git config & utilities**. You have two ways out:
+
+### Keep your changes
+
+**Abort rebase and push new branch** cancels the rebase and sends your local work to a
+new branch on the server. The app tells you its name. Then, on a computer:
+
+```bash
+pass git fetch origin
+pass git merge origin/BRANCH-NAME
+```
+
+Git stops on the entries that conflict. Encrypted files cannot be merged line by line,
+so keep one version of each, finish the merge, and send it back with `pass git push`.
+On the phone, finish with the hard reset below, so that the phone matches the server
+again.
+
+### Throw your changes away
+
+**Hard reset to remote branch** asks for the branch name, then makes the phone an exact
+copy of it.
+
+{{< callout type="warning" >}}
+A hard reset discards local commits and changes that are not on that remote branch. Use
+it only when you are sure, or after saving your work with the option above.
+{{< /callout >}}
+
+## Other tools
+
+The same screen sets the name and email used for commits, shows the commit log with
+**Show commit log**, and offers **Run garbage collection job** to tidy up the local
+repository.
diff --git a/content/en/hardenedpass/using/sync/menu.png b/content/en/hardenedpass/using/sync/menu.png
new file mode 100644
index 0000000..a03da57
--- /dev/null
+++ b/content/en/hardenedpass/using/sync/menu.png
Binary files differ