49 Commits

Author SHA1 Message Date
self 995160f95e feat: prefix Aether plugin slug
Rename the canonical plugin slug to tribe-one-aether and update contract docs/tests accordingly.
2026-06-17 22:33:19 +02:00
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 1483d30d7e dev: add en_GB locale archive to devenv
Provide a Nix glibc locale archive with en_GB.UTF-8 so tools inside the devenv shell inherit a valid UTF-8 locale.
2026-06-08 21:52:55 +02:00
self 1cbcb5ea55 chore: use conventional Guix manifest
Rename the repo Guix development manifest to manifest.scm and update the wrapper and direnv integration.
2026-06-01 19:38:21 +02:00
self 742359c2cb build: load dotenv in Guix dev shell
Source the repo .env before entering the pinned Guix shell so Guix fallback commands match the devenv environment more closely.
2026-06-01 16:33:13 +02:00
self 3bc16c7cb5 docs: note Guix plugin shell fallback
Clarify that plugin workflows should use devenv when available and the repo-local Guix wrapper when devenv is unavailable.
2026-06-01 15:32:30 +02:00
self d0ba98f382 build: add pinned Guix dev shell wrapper
Add repo-local guix/channels.scm time-machine pins and a guix/guix-dev bootstrap wrapper. Update the Guix direnv path to use the pinned channel set.
2026-05-31 22:57:51 +02:00
self 603ad5d0ae feat: support Guix development shell
Add a repo-local Guix manifest, direnv backend selection, and PATH-based hook configuration for the Aether plugin development environment.
2026-05-30 22:29:37 +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 44b9c6caba chore: quiet dev Ash domain warnings
Suppress Ash domain config inclusion warnings while compiling the host as a dev-only plugin dependency.
2026-05-27 16:19:13 +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 341dcb573f docs: update Aether README for chat APIs
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.
2026-05-25 17:20:26 +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 2884f43f9a test: add external client interop checks
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.
2026-05-25 16:23: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 21dd359b2f docs: clarify plugin hook registration
Document that external plugin hooks are registered through global_js bundles and window.TribesPluginHooks rather than host-side colocated imports.
2026-05-24 23:46:10 +02:00
self 763f1ffe14 build: configure npm release delay
Use npm's native min-release-age setting in devenv and assets npm config so dependency resolution avoids very fresh publishes.
2026-05-24 19:53:30 +02:00
self 8f8748b278 build: update devenv inputs
Run devenv update to refresh pinned devenv and related inputs.
2026-05-24 16:26:21 +02:00
self a6fa08118f build: refresh devenv lock
Refresh devenv.lock after the devenv update normalized lock-file inputs.
2026-05-24 16:16:55 +02:00
self 09fa00c92c chore: declare git-hooks input in devenv.yaml
Newer devenv versions require git-hooks.nix to be declared as an
explicit input when devenv.nix uses `git-hooks.hooks`.
2026-05-24 15:20:00 +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 20be0857a5 feat: expose plugin migration commands
Forward ash.codegen and ecto.migration through the Aether plugin wrapper and update agent guidance to prefer AshPostgres codegen for resource-backed schema changes.
2026-05-23 15:58:13 +02:00
self ca4995aa2b build: ignore playwright mcp state
Exclude local Playwright MCP session state from the aether plugin repository.
2026-05-21 12:42:42 +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 24f314a6d5 fix: use host-backed plugin test aliases
Route raw Mix test and precommit aliases through the plugin wrapper workflow.

Document that normal plugin checks should use plugin test or plugin precommit.
2026-05-09 19:43:30 +02:00
self aecc7da70b fix: advertise social plugin contract 2026-05-09 17:31:18 +02:00
self c0eab283a1 chore: Update plugin scaffolding and nosdump wrapper 2026-05-07 16:49:20 +02:00
self 5d6ab457ef build(plugin): add shared plugin validate workflow
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.
2026-04-27 16:41:44 +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 4b7fe1b9ed dev: devenv.nix, nosdump pkg 2026-04-09 10:44:46 +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 6645ec48a0 Document tribes.migrate workflow in plugin README 2026-04-04 22:39:37 +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