Install
Download jotty-android-1.10.0.apk from this release.
Full changelog: https://github.com/Darknetzz/jotty-android/blob/v1.10.0/CHANGELOG.md
Added
- Test connection — The add/edit instance form has a Test connection button that checks the server and API key without saving. Success shows a green check with the signed-in user, Jotty version and response time; failures explain what went wrong (server not found, refused, TLS/certificate, proxy login page, rejected key, too-old server, …) with a short list of things to check. Saving runs the same check and shows the same diagnostics.
- Minimum Jotty version (1.25.0) — Adding or editing an instance checks the
GET /api/healthversion and refuses servers older than 1.25.0 with “This app requires Jotty 1.25.0 or newer.” Servers that do not report a version can still connect. - Jotty 1.29 sharing — Share notes and checklists with users or a public link via
GET/PUT/DELETE /api/shares(Jotty 1.29+). Older servers keep the text-export fallback. - Checklist item sort — Simple checklist detail ⋮ → Sort items (alphabetical, created, modified, or shuffle) via
PUT /api/checklists/{id}/items/sort. - Notes from templates — Notes list overflow → New from template loads
GET /api/templatesand creates withtemplateId(online only; encrypted templates skipped). - In-note item links (Jotty 1.28+) — In note view mode,
/note/{uuid},/checklist/{uuid}, legacy/jotty/{uuid}, and resolved[[wikilinks]]open the linked note or checklist in the app. Unresolved titles stay plain text. Older servers without relations keep unique local-title fallback. - Server version compatibility warning — Settings → About warns (non-blocking) when the Jotty server’s major.minor is newer than 1.29.
- Change category — Notes and checklists can change category from detail and list ⋮ menus (without renaming or entering full edit mode). Uses existing item update APIs.
- Manage categories — Browse note and checklist categories (path and counts) from Settings or the notes/checklists list overflow. Folder create/rename/delete awaits a Jotty REST API.
- Default checklist category — Settings → Behavior prefills the category when creating a checklist (parity with new notes).
- Visual editor table editing — When the cursor is inside a table, add row/column and exit-table actions appear in the toolbar (quick buttons by default, full menu on the table button). Tab moves between cells; Enter or arrow down from the last row exits below the table. Settings → Behavior → Compact table toolbar hides the quick buttons.
Fixed
- Jotty 1.29 attachment URLs — Note media paths
/api/attachment/{noteUuid}/{name}are treated like other Jotty media (host rewrite +x-api-key), so images from migrated 1.29 notes load when the host differs from the configured instance URL. - Jotty 1.28 search — Unified search prefers each hit’s
uuid(1.28 puts the filename slug in deprecatedid), falls back to list/qwhile the search index is building or when ranked ids cannot hydrate, and keeps older-server behavior whenuuidis absent. - Visual editor newlines — Pressing Enter after existing text no longer glues the next line onto the previous one when viewing or saving (WebView
<div>line breaks are converted with a proper newline). Multiple blank lines (several Enters) are preserved in view mode instead of collapsing to a single gap. - Offline note duplicates on reconnect — Sync for a given instance is process-wide (UI + background worker share one lock). Local-only creates are re-checked in Room before
POST /api/notes, so flaky reconnects no longer spawn multiple copies of the same offline note. - Visual editor table toolbar on Android — Table edit controls now appear for any note that contains a table (detected from note content, not only when the cursor is inside a cell). The table button opens the row/column/exit menu instead of “Insert table” on existing table notes. Delete row/column are enabled correctly for Jotty web tables (cells wrapped in
<p>tags). - Compose lint (LocalContext resources) — Category-filter empty snackbars and the server share dialog use
LocalResourcesinstead ofLocalContext.getString, satisfying the new Compose lint check from the BOM/AGP bump.
Changed
- Checklist item rename — Renaming any checklist or Kanban item, including parent/project items and nested subtasks, now updates it in place via
PATCH /api/checklists/{id}/items/{index}, keeping its position and checked state. Offline renames are queued and replayed as the same PATCH. - Online checklist category suggestions — The online checklists screen loads categories from
GET /api/categories(same as notes), not only from currently loaded list items. - New notes open in the editor — Tapping + (or the home-screen widget / share-into-app) creates an Untitled note with your default category and opens it in edit mode immediately, instead of a title/category dialog.
- Dependencies — AGP 9.4.1, KSP 2.3.12, Bouncy Castle 1.86, fragment-ktx 1.9.1, DataStore 1.3.0, WorkManager 2.12.0, OkHttp logging-interceptor 4.12.1 (certificate blocklist security fix), and Gradle 9.8.2 (#99, #100, #102, #108). Compose BOM stays on 2026.06.01 and navigation-compose on 2.9.8 until compileSdk 37; Kotlin stays on 2.3.21 until a coordinated 2.4 upgrade; Lifecycle stays on 2.10 (2.11 needs compileSdk 37); compose-markdown stays on 0.5.8 (0.6+ needs Coil 3).
- Dependabot — Ignore rules now cover Kotlin Gradle plugin ids (not only
org.jetbrains.kotlin:*), exclude Kotlin from grouped weekly/major PRs, and block Lifecycle 2.11+, Compose BOM 2026.08+, navigation-compose 2.10+, compose-markdown 0.6+, until their prerequisites land (see closed #85, #98). - GitHub Actions —
actions/checkoutv7,android-emulator-runner2.38 (#79), andactions/setup-java6.1.0 (#97, #107).
Removed
- Old-server rename workaround — Dropped the add-and-delete rename fallback for servers without item PATCH (from v1.3.6, #33), the “leaf items only” rename hints, and the server PATCH compatibility banner.
Documentation
- Jotty 1.25.0 minimum — JOTTY_SERVER_COMPATIBILITY.md now documents the minimum server version, PATCH-only checklist rename, and that rich Kanban item fields are available on every supported server.
- Release scripts —
release.ps1andrelease.shnow share the same dry-run validation, changelog promotion, line-ending preservation, and version-link insertion behavior. - Jotty 1.29.2 compatibility — Documented
/api/attachment/media,/api/shares, checklist item sort, note templates, and raised the Settings version ceiling to 1.29 (docs/JOTTY_SERVER_COMPATIBILITY.md). - Jotty 1.28.0 compatibility — Documented search uuid preference, in-note links / relations, admin overview removal, and the Settings version ceiling warning (docs/JOTTY_SERVER_COMPATIBILITY.md).
- Category folder CRUD — Noted that empty-folder create/rename/delete is web-only until Jotty exposes REST; Android assigns categories via item create/update and browse via Manage categories (docs/JOTTY_SERVER_COMPATIBILITY.md).
- Jotty 1.27.0 compatibility — Documented that Kanban card comments (and TipTap description editing) are web/server-action only with no public REST yet; Android needs no client change for REST compatibility (docs/JOTTY_SERVER_COMPATIBILITY.md).