aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers
AgeCommit message (Collapse)AuthorFilesLines
2 hoursrefactor(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>
3 hoursfix(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>
3 hoursdocs: add the Compose setup implementation planDanilo M.1-0/+3786
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 hoursrefactor(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>
16 hoursdocs: add the Compose editor implementation planDanilo M.1-0/+3295
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursrefactor(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>
17 hoursfix(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>
17 hoursdocs: add the Compose entry view implementation planDanilo M.1-0/+2147
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursfeat(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>
19 hoursdocs: add the Compose list implementation planDanilo M.1-0/+1901
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 hoursdocs: start the compose branch for the UI overhaulDanilo M.1-2/+2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 hoursdocs: add the Compose foundation implementation planDanilo M.1-0/+885
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 hoursdocs: 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>