| Age | Commit message (Collapse) | Author | Files | Lines |
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The version and certificate are no secrets, so they are copied without the
sensitive flag that hid them in the clipboard preview. Rows that leave for the
browser now show an icon saying so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Readers see what changed on the download page, with no trip to another document.
A tag without a changelog section now fails instead of publishing empty notes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
cgit serves SVG as text/plain, which browsers will not show as an image. The
path is relative like the banner's, so no reader contacts a third party.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The button lives in this repository and loads from the project's own server, so
reading the README on cgit contacts no third party.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Version with build number, documentation and project links, Ko-fi, the privacy
statement, the certificate this copy was really signed with, and the licenses.
Debug builds also show the git commit, since a test build can share its version
with a release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Drop the stale Material repository filter and lint ignore, use an emulator
image that exists at API 31, state the Android 12 minimum in the README, and
correct the TODO: biometric keeps AppCompat in the APK as well as zxing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
|
Activities extend FragmentActivity, window themes derive from the platform's
Material theme and night mode uses UiModeManager. APSTheme colors the system
bars, which DynamicColors did through the window theme. AppCompat stays in the
APK through zxing.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
|
An activity-scoped Prompts ViewModel holds them, since git operations have no
composable to draw in; PromptHost draws them. The credential dialog's window is
now FLAG_SECURE, and a recreated activity no longer loses it and strands the
SSH thread.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
|
The project targets GrapheneOS, which only runs current Android. Android 12
gives the platform night mode API and removes the fingerprint dialog path that
needs AppCompat. Devices below it stay on 0.2.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Record what reading the code changed in the design: values-v29 already hides the
battery saver option, and AppCompat goes before Material so themes change once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The website item in the TODO list is done.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The settings screen displayed 45 seconds as the default, but the app used
60. Both now read the same constant.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Fill and save from Firefox passed on Android 17, so the Android 14+ save
fix holds on a newer release too. uiautomator dump fails on that device,
so note how to drive it instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The launcher still showed Password Store's icon. The new one is a shield
shaped lock with a git branch cut through it, steel with an ember
shackle on a dark tile. The cut is transparent, so the foreground also
works without a tile on the welcome screen and in the autofill picker.
The monochrome layer is the same figure.
Debug builds now override only the background, in violet, and share the
foreground. The density PNGs go: minSdk 26 always uses the adaptive
icon. The Play Store PNGs were unused. Two lint baseline entries for
those PNGs go with them.
The old Play Store banner, referenced nowhere, becomes media/banner.png
with the new icon and name, and heads the README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
From Android 14 the framework sends the save IntentSender from the app
being filled. Firefox targets SDK 34 or later and does not opt in to
background activity starts, so the launch was blocked and
AutofillSaveActivity opened hidden behind it: tapping Save seemed to do
nothing. FixedSaveCallback now starts it from the service, which the
system has bound, and opts in as the sender.
Tested on an Android 14 tablet with Firefox release: the editor comes up
on its own and the entry is saved. The same run confirmed the stale
cached passphrase prompt, so both items leave TODO.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
org.mozilla.firefox and org.mozilla.firefox_beta are Fenix, as are
org.mozilla.fenix and its nightly, which were already on the save list.
Without an entry, saving from Firefox release did not work.
Not yet tested on a device, so the TODO item stays until it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
A stale cached passphrase (the key's passphrase changed) made every autofill
fail until the cache was cleared. A cached passphrase that fails is now not
tried again: the passphrase prompt opens with its wrong passphrase message,
and the passphrase typed there replaces the cached one, as in the entry view.
Not yet tested on a device (autofill cannot be tested on the emulator), so
the TODO item stays until it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
getPGPIdentifiers showed its own Toast, while the entry view and the editor
report every other error with a snackbar. It now passes the message to its
caller: the entry view and editor show a snackbar, autofill keeps the Toast
because its window finishes right after.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Pull to sync and sync, pull and push from the list's menu showed nothing on
success. They now show "<operation>: done", as hard reset and garbage
collection do in the git settings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Every screen moves from XML layouts, Views and Fragments to Jetpack
Compose with Material 3, in one MainActivity with a NavHost: the list
with breadcrumbs, search, pull to sync and multi-select; the entry view
with OTP countdown; the editor with generator sheet and folder picker;
setup (welcome, git server and clone, SSH key, PGP keys); settings, git
config, commit log and proxy; and the autofill picker, publisher
warning and decryption prompts. LaunchActivity stays the only exported
activity. Fixes found on the way reach master with it, among them
symlink-safe deletes, the proxy user name, screen lock gated switches,
the Android 14 app lock and screen lock prompts, and the autofill
passphrase cache rule. The View-era dependencies and view binding are
gone; Material Components (Views) stays for the git dialogs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The detached HEAD error sent users to "Settings > Git utils", a screen
the Compose settings no longer have. Every locale now names Settings >
Repository > Local Git config & utilities, and the English quotes are
escaped so they show. The git configuration screen's title reuses that
translated row label instead of an untranslatable English string.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
AGENTS.md drops the compose branch exception, describes the Compose UI
and its activities, updates the emulator notes (serial pinning, prefixed
helpers, Compose nodes, which windows are FLAG_SECURE, waiting for user
storage after boot, FAB content-desc, text field clearing, run-as
quoting) and the last device runs, and records why Material Components
(Views) and fragment-ktx stay. The spec is marked complete with what was
removed and kept, and says the merge waits for the maintainer's phone
test; CONTRIBUTING.md no longer asks for view binding. The cleanup
plan's emulator pass gets the harness fixes found while running it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The success dialog showed a literal conflicting-<branch>-... instead of
the branch BreakOutOfDetached pushed. It now reads the newest local
conflicting-<branch>-<millis> ref, which is the one just created.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
0.1.4 renamed the app in the English and Italian autofill and
biometric texts only; German, French, Galician, Korean, Polish,
Brazilian Portuguese, Russian and Chinese still said Password Store in
22 strings. 20 now name HardenedPass; the two German messages where it
meant the store itself say Repository, as the rest of that translation
does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The prompt was ConstraintLayout's last user: a vertical LinearLayout
holds the same field and checkbox, so the dependency goes. Ids, input
type and the remember box's default are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Nothing uses preference, recyclerview, recyclerview-selection,
fastscroll or modernandroidpreferences since the Compose screens
replaced the Views, nor view binding. fragment-ktx stays as the pin
that keeps androidx.fragment at 1.8.4. The preference widget override,
the multiselect attribute, the toolbar and bottom sheet styles and the
lint ignores for deleted layouts go. Lint checks unused ids again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
AutofillDecryptActivity was its last subclass: it now sets FLAG_SECURE
and injects the settings, crypto repository and dispatchers itself. The
path and clipboard helpers move to CryptoExtensions.kt as top-level
functions (a test pins the path helpers), and the FILE_PATH extra key
moves, unchanged, to LaunchActivity. An invalid or short .gpg-id ID is
reported with a toast: the snackbar never showed in the autofill
decryption, which closes its window at once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The Compose screens use no Fragments or view binding, so
FragmentExtensions (with its four slide animators) and
FragmentViewBindingDelegate have no users, nor do resolveAttribute,
isPermissionGranted, launchActivity and the unused Modifier.conditional.
SearchableRepositoryViewModel keeps one navigateTo: the Compose list owns
the back stack, so the RecyclerView-era navigation stack, stableId,
isFiltered and the unused DirectoriesOnly mode go. PasswordItem loses
the parent overloads, @JvmStatic and the unread NAME extra, and the
leftover sentry.properties goes too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
hasEnabledAutofillServices() still answers true right after
disableAutofillServices(), so the switch stayed on and the next tap
turned autofill off again instead of opening the instructions dialog.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The picker decides which entry fills the requesting app, so it drops
touches under another app's overlay, as the publisher warning does.
The entry view now uses cachesPassphrase too, so the cache rule lives in
one place, and the publisher warning's app name gets its closing quote.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The autofill activities cannot join MainActivity's graph, so they keep
opening the PGP key import through the setup intent; the spec and the
ponytail note no longer promise otherwise. The spec gains an Autofill
section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Autofill re-cached the passphrase it had just read from the cache, and
cached an empty one for keys without a passphrase. Like the entry view,
it now caches only what the user typed into the passphrase dialog.
An unreadable .gpg-id left the transparent window up with a snackbar no
one could see; the activity now finishes and fills nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
AutofillDecryptActivity shows the no keys dialog and the entry view's
passphrase dialog in Compose over its transparent FLAG_SECURE window.
The flow starts once, on the first window focus, instead of on every
onStart: Android 14 evicts a screen lock prompt shown before the
activity is on top, and a restart showed a second passphrase dialog.
After a key import it restarts on the next focus. Dismissing the no
keys dialog now finishes instead of leaving an invisible window.
Rotation and resizing no longer recreate the activity; other
recreations cancel the fill.
The passphrase is now cached only after a successful screen lock
prompt, as the entry view does: a passphrase typed after a cancelled
or unavailable prompt was cached whenever the cache feature was on.
PasswordDialog, its layout, dimens.xml and requireKeysExist lose their
last user and go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The Re-enable button replaced Advanced information in place, so a quick
double tap re-enabled autofill for an app with a changed publisher
(upstream had the same flaw). The package and certificate details now
come first and push Re-enable below them. The title is marked as a
heading and the footer's ponytail note sits on the footer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
- Run the first search during composition with the saved query and
strict switch, so a recreated picker no longer flashes the results
for the initial query under the restored text.
- Scroll the result list back to the top on every new result, as the
old picker did.
- Fall back to the file name when a row has neither identifier nor
account part, instead of an empty label. DirectoryStructure never
returns both null today, so no test can reach it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|