Skip to content

YATA v0.90 beta

Pre-release
Pre-release

Choose a tag to compare

@rjwarrier rjwarrier released this 02 Aug 16:22

[0.90 beta] - 2026-08-02

versionCode 12. Upgrades in place over 0.89 beta.

Added

  • One backup covers every destination you've set up. Backing up — from the Today sync button,
    from Settings, on the periodic schedule, or automatically after a task changes — now writes to
    Google Drive, this device, and your own server, whichever of them you've switched on. Each is
    attempted independently, so one failing doesn't stop the others, and the result names what
    actually failed ("Backed up 1, but failed for your server") rather than a blanket message that
    would be wrong for the copies that succeeded. The Today sync button now appears whenever any
    destination is configured, not only when Google Drive is.
  • A single backup schedule replaces the four separate per-destination schedules, so every copy
    is the same age instead of one quietly falling days behind another. Your existing frequency
    carries over.
  • Backups to keep is configurable for self-hosted backup (Settings → Self-Hosted Backup),
    2–15, matching the Google Drive setting. Was fixed at 5.
  • Restoring from a server shows what's in the backup first — total tasks, open tasks and
    projects — so you can tell a full backup from one taken when there was barely anything in it.
    A backup that can't be read (wrong passphrase, truncated file) says so and can't be restored.
  • Compare with Backup now works for self-hosted backup too. The Self Host tab can compare
    current tasks with the latest FTP/FTPS/SFTP backup using the same diff view as Google Drive:
    pending/done totals, tasks added since the backup, tasks missing locally, and tasks whose title
    or completion state changed. The row is visible in the Self Host tab whenever that destination
    is enabled, and stays greyed out with a "Not configured" hint until server details are saved.
  • A progress spinner on the self-hosted "Back up now", matching the Google Drive one.
  • A peek at tomorrow when Today is empty. When there's nothing due today, a "Show upcoming
    tasks" button appears below the empty state — tapping it reveals tomorrow's and the day after's
    open tasks, dimmed but fully clickable and completable, for that visit only. Settings → Task
    Defaults has a toggle to show them automatically every time instead, no button needed.
  • Self-hosted backup over SFTP or FTP/FTPS. Settings → Self-Hosted Backup connects to any
    server you already run (password or private-key auth for SFTP, password for FTP; configurable
    remote folder) and schedules the same JSON payload the Google Drive and on-device backups use —
    no vendor account, no lock-in to a specific host. A protocol picker switches between the two;
    FTP defaults to FTPS (TLS) and only sends plain, unencrypted FTP if you explicitly opt out, with
    a warning shown while that's on. An optional backup passphrase encrypts the backup file
    itself (AES-256-GCM) before it leaves the device, so it stays private even on a server you don't
    fully control — and unlike the on-device encrypted backup, a passphrase you know can be used to
    restore onto a different phone. Keep a copy of it: without it the backup can't be restored.
    Uploads are verified byte-for-byte against the server after transfer, and a short or interrupted
    upload is deleted and reported rather than left sitting there looking like a good backup. Host
    key trust is TOFU (trust-on-first-use) for SFTP: the
    server's fingerprint is shown and must be explicitly confirmed on first connection, and every
    later connection has to present that exact same key or the connection is refused outright — a
    changed key surfaces as a clear warning to trust or reject, never a silent downgrade. FTPS
    validates the server's certificate against the platform's own trust store, same as a browser.
    Password, private key, and passphrase are stored in their own encrypted keystore, separate from
    the app's regular settings.
  • A center crosshair guide (horizontal + vertical) in the profile/avatar crop circle, to help
    line up the shot.
  • White/transparent logo uploads for profile and person photos now get the app-icon treatment.
    A picked image that's mostly a white glyph on a transparent background (an SVG re-exported as
    PNG, or any icon-style upload — SVG itself can't be decoded directly) is detected automatically
    and recolored onto a Material You background instead of rendering invisible white-on-white.
    Ordinary photos are left untouched. The crop screen now hints at this so it isn't a surprise.

Changed

  • Remote Backup settings are now cohesive. Google Drive and Self Host live under one section
    with Material 3 segmented destination tabs, shared frequency/retention/back-up-now controls,
    and less duplicated setup.
  • The remote destination picker now uses a Material 3 segmented control with Drive/Self Host
    icons instead of an in-card tab strip, making the two backup destinations read as peers.
  • Password, private-key passphrase, and backup-encryption passphrase fields now show a masked
    placeholder when a saved value exists, while still keeping the actual secret write-only.
  • Google Drive backup is limited to the test profile email for now; other profiles see the option
    disabled with an "Option under limited testing" note, and automatic/manual Drive backup is
    skipped at the backup layer for non-test profiles rather than merely hidden in the UI.
  • "Archive old completed tasks" moved out of the Drive tab and into Backup & Data where it reads
    as general backup/data behavior.

Fixed

  • New tasks in a project with no due date no longer default to today. Picking (or opening the
    sheet already inside) a project with no due date of its own now leaves the new task's due date
    empty too, matching the project — it was silently defaulting to today regardless.
  • Your profile picture now shows on tasks assigned to you. The "You" person used for assignee
    avatars everywhere (task rows, person detail, mentions) was seeded once with no photo and never
    kept in sync with the picture set in Settings, so it always fell back to "Y" initials. Existing
    profile photos are picked up automatically on next launch; new ones sync immediately, including
    through backup restore.
  • FTPS uploads now publish through a temporary .part file and rename only after the byte count
    matches, so an interrupted transfer cannot leave a half-written file that looks like a valid
    backup.
  • FTPS certificate handling now validates the certificate chain through the platform trust store
    without requiring a hostname/SAN match, which keeps secure self-hosted servers with legacy
    certificates usable while still rejecting untrusted certificate chains.
  • FTP/FTPS self-hosted backup comparison now prefers the server's IPv4 address before IPv6/NAT64,
    avoiding a connection-denied path some Android networks picked for ranjithj.in.