26 Commits

Author SHA1 Message Date
self 80101b7e78 fix: tolerate Parrhesia EOSE hints
Handle the NIP-67 EOSE tuple shape emitted by newer Parrhesia while keeping compatibility with the previous message format.
2026-06-08 21:53:24 +02:00
self 34bec7225b feat: use shared Tribes gettext
Use tgettext for shared sign-in UI copy.
2026-05-27 20:07:00 +02:00
self b4b8c83ddb feat: namespace plugin identity
Adopt canonical plugin id/slug manifest fields, vendor-prefixed OTP app naming, and fully-qualified capability ids for Aether.
2026-05-27 19:05:51 +02:00
self c1f4339dde refactor: move Aether into TribeOne plugin namespace
Use TribeOne.TribesPlugin.Aether modules throughout the plugin and expose chat@1 from the entry module for capability-based consumers.
2026-05-26 01:13:28 +02:00
self 446fffcadc feat: implement NIP-17 direct messages
Use the session-unlocked Nostr private key to publish and read NIP-17/NIP-59 gift-wrapped DMs via Parrhesia events, with a read-only NIP-04 import path. Wire the chat UI to pass signer context and add nak-backed interoperability tests for inbound and outbound DMs.
2026-05-25 17:13:34 +02:00
self 8b1990ee25 feat: add chat backend contract and recipient picker
Introduce plain-Elixir chat backends, participant projections, a chat@1 recipient picker component, and a public-sync user-to-user message flow test while scaffolding NIP-17/NIP-04/Marmot backend capabilities.
2026-05-25 15:54:58 +02:00
self a55bd9612d refactor: extract reusable chat panel component
Move Aether chat panel behavior into a LiveComponent so other plugins can embed it without an iframe while ChatLive continues to own standalone routing.
2026-05-25 12:50:05 +02:00
self d257221dc8 feat: scaffold marmot chat backend
Pin marmot-ts 0.5.1, expose Marmot chat routes/configuration, and keep the web UI disabled until transport, storage, and signing adapters are implemented.
2026-05-25 05:47:49 +02:00
self 421fa01076 feat: add embeddable chat panel
Add compact embedded chat routing and provider helpers so other plugins can attach Aether chat channels by URL without linking against Aether internals.
2026-05-25 05:39:37 +02:00
self f386cd38f5 feat: add public synced chat
Introduce the chat@1 capability, public Ash-backed chat channels/messages, standalone Aether chat page, migrations, and plugin tests.
2026-05-25 05:37:15 +02:00
self 0fa953420b fix: handle batched aether note events
Accept Parrhesia batch delivery in the timeline LiveView and reuse the existing note processing path for filtering, de-duplication, profile cache updates, and stream insertion.

Add a regression test that sends the batched message shape to the LiveView.
2026-05-23 15:59:44 +02:00
self dbb5491020 fix: remove relay internals from timeline
Drop user-facing relay topology details from the Aether timeline and refresh the Parrhesia lock entry used by the plugin.
2026-05-18 12:19:35 +02:00
self da003b0a4f fix: use alliance plugin service
Switch Aether's timeline feed from the removed communities service to the new alliance service contract.
2026-05-14 19:17:46 +02:00
self c121bde9b8 test(aether): adopt host-backed plugin workflow
Switch Aether to the stricter plugin-facing auth and community contract.
Replace local structural coverage with host-backed contract and page tests.
Add plugin helper wrappers and shared test config for the host devenv flow.
2026-04-27 15:42:31 +02:00
self 2afde628ca refactor: Adjust for tribes data model 2026-04-27 12:42:13 +02:00
self 5024e8857c build: Credo, precommit 2026-04-26 22:06:08 +02:00
self 1a0ba6a93c refactor: switch timeline auth state to scope 2026-04-11 18:29:55 +02:00
self 118d32241f refactor: use typed plugin nostr data 2026-04-10 18:38:06 +02:00
self 6fc8be20bf refactor: use plugin route helpers in timeline 2026-04-10 13:58:45 +02:00
self 8297334ea5 refactor: keep aether timeline on cluster-aware nostr wrappers
Retain TimelineLive on the plugin-facing Nostr service after the host implementation switched to multi-relay defaults, so the plugin benefits from cluster-aware reads and publish fanout without falling back to direct host internals.
2026-04-10 12:31:59 +02:00
self c904de90d7 refactor: switch aether timeline to plugin host services
Replace direct Tribes and TribesWeb module references in TimelineLive with the new Tribes.Plugin wrappers so the plugin can compile cleanly against tribes_plugin_api instead of host internals.

Use the new cluster relay discovery service to surface the known cluster relay set in the timeline UI while keeping the current local-relay publish and live-read behavior explicit.
2026-04-10 11:57:44 +02:00
self a07942b644 Render Aether in Tribes layout 2026-04-08 18:33:17 +02:00
self 63e10ad5bc Align aether plugin entrypoint and docs 2026-04-08 13:11:39 +02:00
self f833791991 Build Aether against tribes_plugin_api 2026-04-08 01:16:15 +02:00
self 78f6c11b30 Rename to aether plugin and add /aether timeline integration 2026-04-04 20:33:51 +02:00
self 647d5537ff skeleton 2026-03-25 12:42:19 +01:00