summaryrefslogtreecommitdiffstats
path: root/docs/superpowers/plans
AgeCommit message (Collapse)AuthorFilesLines
25 hoursfeat(app): move the git dialogs and the snackbar to ComposeDanilo M.1-2/+3
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>
25 hoursdocs: add the git dialogs to Compose planDanilo M.1-0/+904
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>
43 hoursdocs: record the finished Compose overhaulDanilo M.1-6/+8
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>
44 hoursdocs: add the Compose cleanup and merge planDanilo M.1-0/+1710
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 daysdocs: add the Compose autofill implementation planDanilo M.1-0/+1864
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 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>
3 daysdocs: add the Compose settings implementation planDanilo M.1-0/+3701
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 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>
3 daysdocs: add the Compose setup implementation planDanilo M.1-0/+3786
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 daysdocs: add the Compose editor implementation planDanilo M.1-0/+3295
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 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>
4 daysdocs: add the Compose entry view implementation planDanilo M.1-0/+2147
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 daysdocs: add the Compose list implementation planDanilo M.1-0/+1901
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 daysdocs: add the Compose foundation implementation planDanilo M.1-0/+885
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>