Added
- Unit tests — Tests for
NoteEncryption(frontmatter parsing, body-only detection, BOM handling),NoteDecryptionSession(CRUD, clear), andXChaCha20Encryptor(frontmatter round-trip). - Shared UI components — Reusable
LoadingState,ErrorState,EmptyState, andSwipeToDeleteContainercomposables inui/common/(DRY refactor). - String resources — All user-visible strings moved to
res/values/strings.xmlfor i18n readiness.
Changed
- Security: release logging — HTTP body logging (
HttpLoggingInterceptor) now only runs in debug builds; release builds no longer log API keys or response bodies. - Null safety — Removed all
!!(non-null assertions) acrossMainScreen,ChecklistsScreen, andNotesScreen; replaced with safe-call patterns and localvalbindings. - Deep link handling —
deepLinkNoteIdis now an Activity-level property updated in bothonCreateandonNewIntent, so deep links work correctly after process death or re-delivery. - Composable rename — Root UI composable renamed from
JottyApptoJottyAppContentto distinguish from theApplicationclass. - Thread safety —
NoteDecryptionSessionnow usesConcurrentHashMapinstead of plainMutableMap.
Technical
- ProGuard — Added keep rules for all Jotty API models (
data.api.*), encryption models (data.encryption.*), andJottyInstanceto prevent Gson serialization issues in minified builds. - AGENTS.md — Updated with new conventions (null safety, string resources, shared composables), test instructions, and clarified dual
JottyAppfiles.