aboutsummaryrefslogtreecommitdiffstats
path: root/docs
AgeCommit message (Collapse)AuthorFilesLines
30 hoursdocs: record the finished Compose overhaulDanilo M.2-13/+22
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>
31 hoursdocs: add the Compose cleanup and merge planDanilo M.1-0/+1710
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37 hoursdocs: record the autofill activities' Compose UI in the specDanilo M.1-1/+18
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>
37 hoursdocs: add the Compose autofill implementation planDanilo M.1-0/+1864
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysrefactor(app): remove the legacy settings screensDanilo M.1-3/+18
The Compose settings, git config, commit log and proxy screens replace SettingsActivity with its six preference providers, GitConfigActivity with TextInputDialog, GitLogActivity with its adapter and GitLogModel, and ProxySelectorActivity, with their layouts and manifest entries. The dead OpenKeystore key ID row goes with its string, the Android 14 platform bug summary and normal_margin lose their last users, and the setup intent loses the two starts only Settings used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysfix(app): end the screen lock prompt on sensor errorsDanilo M.1-10/+18
BiometricAuthenticator mapped onAuthenticationError(ERROR_UNABLE_TO_PROCESS) to Retry, but an error callback always closes the prompt. The settings screen keeps its one-prompt-at-a-time guard set on Retry, so the gated switches stayed locked until the section was left. The error now maps to Failure; Retry comes only from onAuthenticationFailed, while the prompt is still open. Once the device screen lock is removed, the biometric app lock could not be turned off: the prompt returns HardwareUnavailableOrDisabled and nothing was written. Turning it off without a usable screen lock now writes the value directly, as the passphrase cache row already does. The settings category rows and PreferenceAction rows get Role.Button for accessibility services. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysdocs: add the Compose settings implementation planDanilo M.1-0/+3701
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysrefactor(app): remove the legacy setup screensDanilo M.1-0/+17
The Compose welcome, git server, SSH key, key generation and PGP keys screens replace OnboardingActivity with its fragments, GitServerConfigActivity with BasicBottomSheet, SshKeyImportActivity, SshKeyGenActivity, ShowSshKeyFragment, PGPKeyImportActivity and PGPKeyListActivity with KeyList and PGPKeyListViewModel, their layouts and manifest entries, and ui:compose's APSAppBar. Resources only they used are removed too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysfix(app): harden the setup key importsDanilo M.1-2/+6
- PGP key import reads at most 1 MiB (bounded read, buffer zeroed) and refuses larger files with a new message. - SshKeyViewModel catches any Exception from import and generation (CancellationException rethrown) instead of a short list, so an unexpected provider or sshj error no longer crashes the app. - Pending PGP key bytes are zeroed in a finally block, also on cancellation during addKey after a replace, and an earlier pending pick is zeroed before a new one takes its place. - PGPKeyManager never replaces a stored secret key with a public-only key of the same ID, with or without replace (KeyDowngradeException); the setup ViewModel shows a localized message for it. Unit test added. - storeRecipients strips '#' comments and a trailing '!' as pass reads .gpg-id; tests added. - GitServerViewModel.clearStore returns the failure when the store folder cannot be emptied, so the clone does not start; the plan's Task 3 call site reports it. - readGpgId opens the file with NOFOLLOW_LINKS and reads at most 64 KiB + 1 bytes, refusing more. - SshKey.import writes the new private key to a temp file and moves it over atomically before dropping the old key's Keystore entry, public key and passphrase, so an I/O error keeps the old key. - KeyUtils.isSecretKey notes (ponytail) that GnuPG stub and smartcard keyrings count as secret. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysdocs: add the Compose setup implementation planDanilo M.1-0/+3786
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysrefactor(app): remove the legacy editor, generators and folder pickerDanilo M.1-2/+6
The Compose editor, generator sheet, OTP dialog and folder picker replace PasswordCreationActivity, the generator and manual OTP dialog fragments, SelectFolderActivity with its fragment and adapter, their layouts and menus, and upstream's unused EditPasswordScreen with the PasswordField it used. flowbinding and swiperefreshlayout had no other users. BasePGPActivity keeps what autofill decryption still needs. Also drops two stale SshKey baseline entries, the snackbar FAB anchor whose view is gone, and resources only the deleted files used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: add the Compose editor implementation planDanilo M.1-0/+3295
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysrefactor(app): remove the legacy decrypt screenDanilo M.1-0/+3
The Compose entry view replaces DecryptActivity, its layouts, menu and field adapter, and upstream's unused ViewPasswordScreen. BasePGPActivity keeps what the editor and autofill still need. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysfix(app): harden the entry passphrase promptDanilo M.1-1/+3
Ignore a submit while no prompt is showing, so OK plus IME Done cannot start two decrypts. Key the passphrase dialog on the retry count so each attempt gets a fresh field and shows the wrong password error. Note the process death gap around key import and the editor. Record the TotpModule, text selection and file IO decisions in the plan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: add the Compose entry view implementation planDanilo M.1-0/+2147
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysfeat(app): show the Compose password list in MainActivityDanilo M.1-3/+7
Folders are back stack entries (ListRoute(path)), so back goes up one level. MainActivity extends BaseGitActivity for pull to sync and the commits after move, rename and delete. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: add the Compose list implementation planDanilo M.1-0/+1901
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: start the compose branch for the UI overhaulDanilo M.1-2/+2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: add the Compose foundation implementation planDanilo M.1-0/+885
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 daysdocs: add the Compose UI overhaul designDanilo M.1-0/+133
Single-activity Compose rewrite with a Material 3 look and breadcrumb folder chips, done on a temporary compose branch and released only once complete. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>