Skip to content

Releases: Lwb89dev/echoes

echoes.v.0.2

Choose a tag to compare

@Lwb89dev Lwb89dev released this 15 Jul 08:01

Echoes v0.2.0

A big one — new ways to organize and personalize your notes, a much nicer voice note experience, and several real data-integrity fixes found through actual daily use.

✨ New

  • Per-note colors — pick a background for any note from seven pastel options (post-it yellow, red, purple, blue, green, orange, white). Text color is never guessed: it's chosen by comparing WCAG contrast ratios against the actual background, so it stays readable in both light and dark app themes. Picking a color triggers a circular reveal animation that sweeps across the whole screen — title bar included.
  • Voice notes, reworked — recordings are now inline and positionable in the note body, just like images: write a line, drop in a 25-minute recording, keep writing below it. The recorder panel slides in/out, has a proper red record button, keeps the screen awake while recording, and lets you set a custom timestamp on any recording (long-press it).
  • Note search — a search icon in the Home app bar filters the current tab (Notes or Diary) by title, body, or checklist item text.
  • Checklist quality-of-life — hide/show completed items, clear all completed items in one tap, and a live "N of M done" counter. Checklists now always open straight into editing — there's nothing to "read" in a working list.
  • Contextual formatting toolbar — bold/italic/heading/list/link now appear only when you actually select text, freeing up the space above the body for the voice recorder instead of a permanently-docked ribbon.
  • Autosave — edits are saved locally a moment after you stop typing, as a safety net against the back button or the app closing mid-edit.
  • List/grid toggle moved to Home, next to search, instead of buried in Settings.
  • The note's own title now lives in the app bar — editable in place, no more redundant "Edit note" label with the real title further down.
  • Smaller downloads: release APKs are now split per architecture (arm64/armeabi-v7a) alongside the universal one.

Fixed

  • Attachments silently failing to reach relays: Primal's Blossom host and nostr.build's NIP-96 host both turned out to actively reject encrypted uploads outright (verified by direct probing) — every image/voice note sent through them was doomed from the start. Swapped the built-in defaults to hosts confirmed to store opaque encrypted blobs correctly.
  • A real data-loss race: a background sync cycle uploading an attachment (and deleting the local plaintext) could have its result overwritten by a stale in-memory copy from an open editor's autosave — permanently losing the decryption key while the plaintext was already gone. Fixed at the storage layer (uploaded state can no longer regress to pending), with the in-memory note list and any open editor now kept in sync with what actually lands on disk.
  • Voice notes always playing back the first recording when a note had more than one — missing widget identity (Key) caused Flutter to reuse the wrong player state.
  • New recordings were stored in a cache directory the OS is allowed to purge at any time — losing not-yet-synced voice notes for good. They now live in persistent app storage.
  • Saving a note (✓) now returns you to the note itself instead of kicking you back to the list.

echoes v.0.1

Choose a tag to compare

@Lwb89dev Lwb89dev released this 12 Jul 19:57
7742f9e

Echoes v0.1 — Initial Release 🎉

Echoes is here: an offline-first, end-to-end encrypted notes app that syncs privately over the Nostr protocol, on your own terms.

Every note, checklist, image, and voice memo is saved locally first and stays fully usable with no connection at all. Syncing is a separate, explicit action — never automatic, never required — and everything that leaves the device is encrypted before it goes.

✨ Highlights

  • 📝 Notes, checklists & diary entries — plain notes, checklists, and a journal-style diary mode (date-tagged, freely backdated) all in one app.
  • 🔒 Private by design — note content is NIP-44 self-encrypted before it ever reaches a relay; images and voice notes are AES-256-GCM encrypted client-side before upload. Relays and file hosts only ever see ciphertext.
  • 📡 Sync on your terms — per-note or bulk publishing to any Nostr relay you choose, including a self-hosted one over ws:// on your local network or Tailscale.
  • 🎙️ Rich attachments — inline images with a lightweight markdown formatting toolbar (bold/italic/heading/list/link), and Telegram-style voice messages with waveform playback.
  • 🔑 Flexible sign-in — import a private key directly, or delegate signing to Amber (NIP-55) so your key never touches the app.
  • 🗝️ Optional at-rest encryption — password-protect your local note database (PBKDF2 + AES-256-GCM).
  • 💾 Backups that make sense — encrypted JSON export/import, plus a one-tap "republish all" to backfill a newly added relay (e.g. your own backup node).
  • 🌍 26 languages, light/dark themes, and a choice of list or masonry grid layout.

📦 Getting started

flutter pub get
flutter gen-l10n
flutter run

See the README for the full feature list, architecture notes, and development instructions.

📄 License

Released under the GNU General Public License v3.0.


This is the first tagged release — feedback and bug reports are welcome via Issues.