Skip to content

kairos.0.1.1.apk

Latest

Choose a tag to compare

@Lwb89dev Lwb89dev released this 28 Jul 20:34

[0.1.1] - 2026-07-28

Added

  • Task reminders. A task with a due date can carry several notifications
    ("at the due time", 5/15/30 minutes, 1/2 hours or 1 day before); setting a
    deadline for the first time adds a one-hour reminder that can be changed or
    removed. Reminders are handed to the system when the task is saved and
    delivered by it, so nothing runs in the background, and they follow the task
    to the account's other devices. A single switch in Settings turns them all
    off and back on without losing the per-task choices.
  • Astraea calendar integration. A dated task can be published as an Astraea
    calendar event, so it appears in that app's calendar and home-screen widget
    on the day it is due. Opt-in per task, from the editor. When both apps are
    installed, Kairos also sends Astraea a local instruction with an explicit
    notification request, independently of Nostr.
  • Local Kairos ↔ Astraea interoperability. Android uses an explicit,
    package-bound intent; Linux uses a per-user Unix-domain socket. Upserts,
    edits, unchecks and deletions are delivered through a versioned JSON
    protocol, with notification deduplication instructions for Astraea.
  • The Astraea calendar option is now available for dated tasks even without a
    Nostr account or selected relay; the local bridge works offline and Nostr
    remains the durable cross-device channel when configured.
  • Four more suggested relays (relay.primal.net, relay.nostr.band,
    nostr.mom, relay.snort.social) alongside the existing two, for
    redundancy when one is slow or unreachable. As before, none is selected
    unless the user taps it.
  • Relays on the local network can now be added to the ordinary relay list,
    not only to the dedicated home-relay slot, over wss:// or plaintext
    ws://. Plaintext remains refused towards any host outside the local
    network.

Fixed

  • A personal home relay using a ws:// or private-network address was
    accepted by the interface but silently discarded when saved, and again when
    reloaded, so the setting was lost on restart. Relay normalization existed in
    three divergent copies; there is now a single one used everywhere.

Security

  • Bounded the work a relay reply can impose. A relay answering a request with
    thousands of events carrying the account's public key and an invalid
    signature could block the interface for tens of seconds. Replies are now
    reduced before any signature verification, the amount verified per sync is
    capped, and verification yields regularly so the app stays responsive.
  • Closed several ways to write an internal address that got past the
    loopback/private-network refusal on public relay entries, including
    IPv4-in-IPv6 forms and integer notations such as 2130706433 or 127.1.
  • Applied that same refusal to profile-avatar downloads, which follow
    redirects chosen by a remote host and previously had no such check.
  • Rejected relay URLs containing control characters or out-of-range ports
    instead of storing a normalized version of them.
  • Closed websocket connections to relays removed from the configuration
    instead of leaving them open until the app restarted.
  • Restricted Android TLS trust to the system certificate store.