Added
- Markdown links — Links in note content open in the browser when tapped.
- Deep link feedback — Opening the app via
jotty-android://open/note/{id}for a missing or deleted note shows a “Note not found” snackbar. - Content descriptions — Icon buttons (refresh, add, share, decrypt, encrypt, edit, save) use descriptive content descriptions for TalkBack.
- Unit test —
FormatTestforformatNoteDate(util).
Changed
- Notes search — Search input is debounced (400 ms) so the API is not called on every keystroke.
- Note image loader — Coil ImageLoader is cached per (baseUrl, apiKey) and built with application context so it survives config changes.
- Decrypted notes —
NoteDecryptionSessionis cleared when the app goes to background (onStop) so decrypted content is not kept in memory longer than needed.
Technical
- Notes UI split into separate files:
NoteCard.kt,NoteView.kt,NoteEditor.kt,NoteDialogs.kt,NoteDetailScreen.kt;NotesScreen.ktretains list and create flow. formatNoteDatemoved toutil/Format.kt.- NotesScreen: debounced search state; LaunchedEffect for deep-link “note not found” when list loaded and id not in list.
- NoteView:
onLinkClicked→LocalUriHandler.openUri. - NoteImageLoader:
ConcurrentHashMapcache keyed by normalized base URL and API key;applicationContextfor loader. - JottyApp:
ProcessLifecycleOwnerobserver clearsNoteDecryptionSessioninonStop. - AGENTS.md: “Images in notes” subsection; “Where to change what” updated for notes (list vs detail/dialogs).
- strings.xml:
note_not_found,cd_refresh,cd_add,cd_share,cd_decrypt,cd_encrypt,cd_edit,cd_save.