Document the current social and chat feature set, NIP-17/NIP-04 behavior, runtime requirements, and plugin API surface. Remove obsolete template content and bump the plugin version to 0.2.0.
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.
Add deterministic nak coverage for NIP-17/NIP-59 gift wrapping and NIP-04 decryptability, plus a thin algia JSON-consumption smoke test with isolated config.
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.
Move Aether chat panel behavior into a LiveComponent so other plugins can embed it without an iframe while ChatLive continues to own standalone routing.
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.
Add compact embedded chat routing and provider helpers so other plugins can attach Aether chat channels by URL without linking against Aether internals.
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.
Forward ash.codegen and ecto.migration through the Aether plugin wrapper and update agent guidance to prefer AshPostgres codegen for resource-backed schema changes.
Route raw Mix test and precommit aliases through the plugin wrapper workflow.
Document that normal plugin checks should use plugin test or plugin precommit.
Extend the local plugin helper to forward the new validate command through the host environment and document the validate/test/precommit workflow in the plugin README.
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.
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.
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.