Bendik Aagaard Lynghaug ca6b50ae07 feat: let a user mute a peer's activity in their own feed
Real gap: there was no way to stop a specific peer's noise (new
readings, replies, hearts) from showing up, short of disconnecting
them entirely. Mute is deliberately narrower than a network-level
block: their content is still fully synced and stored (protocol
correctness for the rest of the network is untouched), only the local
social feed and store insertion for their InterpAuthored/AffirmAdded/
ResponseAdded activity is suppressed. Collaborative-doc mechanics,
display names, and circle invites always apply regardless — muting
someone's chatter shouldn't corrupt a shared document or hide a
functional message addressed to you.

- store: new `muted_peers` table + mute_peer/unmute_peer/muted_peers,
  covered by a roundtrip unit test.
- app/feed_item: `is_muted_social_event` is a small pure predicate,
  unit-tested directly (red-first: wrote the five cases, then the
  three-line match) rather than needing network-level BDD coverage
  for what's an entirely local, app-layer concern.
- app: AppModel caches the muted set in memory (loaded once at start)
  so the hot SyncStateEvent path never awaits a DB round-trip; a new
  "Mute"/"Unmute" button on each connected peer's sidebar row (dimming
  their name when muted, mirroring the existing pending-row dim-label
  convention) toggles it.
2026-08-04 20:57:13 +02:00
2026-04-27 16:59:15 +02:00
2026-08-04 13:21:46 +02:00
2026-08-04 13:21:46 +02:00
2026-03-23 11:19:00 +01:00
2026-04-27 18:26:03 +02:00
2026-03-23 14:38:33 +01:00

Zodia

A peer-to-peer astrological companion. Zodia connects you with others who share meaningful chart alignments — no accounts, no servers — just enabling technology for the astrology-minded.

Zodia screenshot


How it works

Zodia announces a coarse astrological fingerprint (solar month + approximate location) to a peer-to-peer network. Other Zodia users appear in the Network view as their announces reach you — over your local network or across the wider p2panda overlay.

When you and another user mutually consent, you exchange exact birth data over a direct encrypted channel, compute your synastry, and can chat, place voice calls, and share interpretations of specific aspects.

Interpretations are signed by their author and replicated across the network through the same gossip layer, so the body of community readings grows whenever Zodia users meet. There's no central authority — contributions stand on their own.

Privacy

Everything you don't share stays on your device. Zodia's announces carry only your solar month and a rough location (~600 km); exact birth data is exchanged only after you choose to connect with someone. Interpretations you publish are signed with your local identity key and replicated across the network — they cannot be unpublished once shared. Zodia has no central authority to verify identities, so share at your own discretion.

Building from source

Linux (Ubuntu 24.04 or equivalent)

sudo apt install libgtk-4-dev libadwaita-1-dev libopus-dev libasound2-dev pkg-config
cargo build --release --bin zodia

macOS

brew install gtk4 libadwaita pango opus pkg-config glib
cargo build --release --bin zodia

Requires Rust 1.75+ and GTK 4 / libadwaita 1.4+.

License

Zodia is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version.

Because Zodia is peer-to-peer software, the AGPL's network-use clause applies: if you modify Zodia and let others connect to your modified version, you must make the source available to them under the same terms.

S
Description
Peer-to-peer astrology app: natal charts, transits, synastry
Readme AGPL-3.0
14 MiB
Languages
Rust 94.4%
Gherkin 3.7%
Python 1.5%
Shell 0.4%