Install
Download jotty-android-1.8.0.apk from this release.
Full changelog: https://github.com/Darknetzz/jotty-android/blob/v1.8.0/CHANGELOG.md
Added
- Encrypted notes — legacy format — After decrypting a note with the old Android payload order, a Re-encrypt for web action re-saves using your session passphrase to restore Jotty web compatibility.
- Encrypted notes — low-RAM warning — When encryption falls back to 32 MiB Argon2, a snackbar explains the note may not decrypt in the Jotty web app until web supports that preset.
- Settings → Appearance (notes list) — Control note list metadata (dates and categories), date format (absolute or relative), bottom navigation labels (icons only), and monospace Markdown editor font.
- Settings → Behavior (notes) — Preview length (title-only through 4 lines), open notes in edit mode, default visual/Markdown editor when the rich editor is on, and default category for new notes.
- Settings → Report an issue — Troubleshooting section links to GitHub Issues so users can report bugs or suggest features (mentions debug logs for easier diagnosis).
- Settings → Behavior categories — Options are grouped under General, Lists, Checklists, and Notes for easier scanning.
- Shared list filter header — Notes and checklists use the same search, sort, and category chip row; tap a category again to clear the filter.
- Settings → Save visual edits as Markdown — Optional toggle under Notes to convert WYSIWYG HTML back to GFM when saving for better Jotty web compatibility.
- Note unsaved-changes prompt — Leaving note edit with changes shows Save / Discard (matches Kanban item detail).
- Note list long-press menu — Share, archive, and delete from the notes list without enabling swipe-to-delete.
- WYSIWYG toolbar — Undo/redo, H1/H3 headings, task lists, and configurable table size; same-host images load with API auth in the visual editor.
Changed
- Encrypted note fingerprints — Ciphertext change detection now uses SHA-256 of the encrypted JSON body (more reliable than hashCode).
- Encrypted backup restore — When a session passphrase is available, restored encrypted backups are verified to decrypt before the operation completes.
- Passphrase minimum — The 12-character minimum is enforced in the crypto layer as well as the encrypt dialog.
- Biometric unlock — Fingerprint unlock now surfaces the legacy-format warning when applicable (same as manual decrypt).
- Visual editor saves — WYSIWYG saves also block HTML entity artifacts (
</>) that can corrupt encrypted note bodies. - Server verify failure message — Clearer guidance to copy your text and use Restore backup when the server stores undecryptable ciphertext.
- Rich editor saves — Plain-note saves from the visual editor now flush the WebView snapshot before persisting (same safety as encrypted saves).
- Rich editor link/image insert — Compose dialogs replace hardcoded English browser prompts.
- Online list sync indicator — Notes and checklists show refresh/sync status in the top bar when not using offline-only fetch.
- Rich text editor settings copy — Description now matches behavior (HTML/table notes open in Visual; encrypted notes default to Markdown).
- Failed note save — When local backups exist, the save-failure snackbar offers Restore backup instead of only a generic error.
- Deep links (offline) — Opening a note link triggers sync first when online; shows a clearer message when the note is not on the device yet.
- List/detail transition — A short cross-fade when switching between list and detail if motion effects are enabled.
- Settings → Behavior → Lists — Removed the non-interactive “List sort” hint row; sort is changed from the sort icon on each list toolbar.
Fixed
- Release rich editor — ProGuard keep rules for the WYSIWYG JavaScript bridge so release builds do not strip
@JavascriptInterfacemethods. - Corrupted visual saves — Plain-note saves refuse bodies containing JSON-escaped HTML (
\u003C) that would corrupt content on the server. - Instance switcher accessibility — Instance dropdown icons now have TalkBack labels.
- List/detail crossfade — Transition animation now correctly fades between list and detail instead of showing the same pane twice.
- Note deep links — Links resolve notes even when a category filter is active; online mode retries an unfiltered fetch before “not found”.
- List share (encrypted) — Text export from the notes list uses decrypted session content or prompts to unlock instead of sharing ciphertext.
- Note card long-press — Single combined click target (matches checklist cards) without duplicate ripples.
- Visual save guard scope — JSON-escaped HTML check applies only to visual-editor saves, not Markdown source edits.
- Dev-latest publish — Dev APK builds now run
:app:cleanbefore assemble and verify embedded commit/version code match release notes before upload, preventing stale APKs that loop the in-app updater. - Encrypted note re-save — Saving an edited encrypted note now uploads the encrypted JSON body only (matching the Jotty server), instead of YAML frontmatter the server strips and rewrites. If the server returns undecryptable ciphertext after save, the app rolls back to the pre-save copy automatically and keeps your edits visible locally.
- Encrypted note save verification — After re-encrypting, the app now re-fetches the note from the server and verifies that copy decrypts (the PUT response alone is not always what later GET/list reads from disk). Manual passphrase decrypt clears a stale biometric-stored passphrase so fingerprint unlock cannot use an old key after you typed a new one.