|
|
b0b3c6a59b
|
feat: BoostRemoved → Undo(Announce) fan-out via OutboundFederationPort
|
2026-05-14 14:10:11 +02:00 |
|
|
|
eaf079069f
|
fix(application): gate federation broadcast on Public/Unlisted visibility only
|
2026-05-14 14:03:31 +02:00 |
|
|
|
a37c877172
|
chore(worker): remove stale dependencies after business logic migration
|
2026-05-14 13:59:45 +02:00 |
|
|
|
904916d4c1
|
refactor(worker): thin handlers + factory — move all business logic to application services
|
2026-05-14 13:57:14 +02:00 |
|
|
|
057fc29abc
|
fix(activitypub-base): validate update Note id URL, add updated field to Update Notes
|
2026-05-14 13:50:05 +02:00 |
|
|
|
1fa8389a69
|
feat(activitypub-base): Announce broadcast + impl OutboundFederationPort for ActivityPubService
|
2026-05-14 13:46:31 +02:00 |
|
|
|
83e87e644b
|
test(application): document user-not-found silent-skip and locality guard in FederationEventService
|
2026-05-14 13:44:13 +02:00 |
|
|
|
13282fc88e
|
feat(application): FederationEventService — content fan-out business logic
|
2026-05-14 13:40:10 +02:00 |
|
|
|
10605bbf2f
|
test(application): add self_boost_creates_no_notification test
|
2026-05-14 13:37:29 +02:00 |
|
|
|
2d742bdbe3
|
feat(application): NotificationEventService — move notification business logic out of worker
|
2026-05-14 13:35:20 +02:00 |
|
|
|
925856f6b8
|
feat(domain): OutboundFederationPort — thin AP broadcast abstraction
|
2026-05-14 13:32:23 +02:00 |
|
|
|
114d9f9558
|
fix(activitypub): re-export NoteType from activitypub-base, drop direct activitypub_federation dep
|
2026-05-14 12:51:47 +02:00 |
|
|
|
69b55058ce
|
feat(worker): use EventConsumerAdapter<NatsMessageSource> — transport-agnostic consuming
|
2026-05-14 12:37:16 +02:00 |
|
|
|
e995b29be1
|
refactor(nats): replace NatsEventConsumer with NatsMessageSource implementing MessageSource
|
2026-05-14 12:36:45 +02:00 |
|
|
|
c202eded05
|
feat(event-transport): MessageSource trait + EventConsumerAdapter for transport-agnostic consuming
|
2026-05-14 12:34:45 +02:00 |
|
|
|
f9ca5836fb
|
refactor: rename event-publisher → event-transport
|
2026-05-14 12:30:58 +02:00 |
|
|
|
7963278189
|
docs: event-transport rename + consumer abstraction plan
|
2026-05-14 12:29:28 +02:00 |
|
|
|
ff82764eb0
|
feat(bootstrap): wire EventPublisherAdapter<NatsTransport> — transport-agnostic event publishing
|
2026-05-14 12:24:15 +02:00 |
|
|
|
cfc8c19175
|
refactor(nats): strip NatsEventPublisher, add NatsTransport implementing Transport
|
2026-05-14 12:22:11 +02:00 |
|
|
|
a684c922e0
|
feat(event-publisher): Transport trait + EventPublisherAdapter for transport-agnostic event routing
|
2026-05-14 12:20:29 +02:00 |
|
|
|
42d3dbd251
|
docs: event-publisher transport abstraction plan
|
2026-05-14 12:18:41 +02:00 |
|
|
|
c072ee95cd
|
refactor(presentation): pure HTTP library — remove concrete adapter deps and binary
|
2026-05-14 12:07:18 +02:00 |
|
|
|
0c7a6fe9be
|
feat(bootstrap): composition root with Config + factory.rs
|
2026-05-14 12:05:00 +02:00 |
|
|
|
53185efe5e
|
docs: bootstrap factory implementation plan
|
2026-05-14 12:00:20 +02:00 |
|
|
|
1866eef770
|
feat(presentation): OpenAPI docs at /docs (Swagger) and /scalar
|
2026-05-14 11:41:12 +02:00 |
|
|
|
137d1a0c6a
|
feat(presentation): add utoipa::path annotations to all handlers
|
2026-05-14 11:34:02 +02:00 |
|
|
|
4f990afe5e
|
feat(api-types): add utoipa ToSchema and IntoParams derives
|
2026-05-14 11:30:11 +02:00 |
|
|
|
fb8c75af72
|
docs: OpenAPI documentation implementation plan
|
2026-05-14 11:27:43 +02:00 |
|
|
|
2524440fe4
|
feat(presentation): GET /health endpoint
|
2026-05-14 11:21:58 +02:00 |
|
|
|
6082766935
|
feat(presentation): GET /users/me, GET /users/{username}/thoughts, GET /tags/{name}
|
2026-05-14 11:20:48 +02:00 |
|
|
|
e408a53136
|
docs: v1 parity gaps implementation plan
|
2026-05-14 11:19:29 +02:00 |
|
|
|
68fe8624cd
|
feat(worker): Reply notification when ThoughtCreated has in_reply_to_id
|
2026-05-14 11:08:30 +02:00 |
|
|
|
1127a5946f
|
feat: UserUnblocked + UserRegistered events, fix unblock_user and register signatures
|
2026-05-14 11:06:36 +02:00 |
|
|
|
f0b87311e3
|
docs: audit gap fixes implementation plan
|
2026-05-14 11:03:36 +02:00 |
|
|
|
ea14035062
|
fix: wire PgActivityPubRepository into ThoughtsObjectHandler — closes activitypub→postgres violation
|
2026-05-14 10:59:43 +02:00 |
|
|
|
4ae3af8086
|
refactor(activitypub): ThoughtsObjectHandler uses ActivityPubRepository port, drops postgres dep
|
2026-05-14 10:58:25 +02:00 |
|
|
|
e0b0a71f1d
|
feat(postgres): PgActivityPubRepository implementing ActivityPubRepository port
|
2026-05-14 10:55:58 +02:00 |
|
|
|
5f8e96b9be
|
feat(domain): ActivityPubRepository port with federation vocabulary
|
2026-05-14 10:52:35 +02:00 |
|
|
|
54bd1c193b
|
docs: ActivityPubRepository port implementation plan
|
2026-05-14 10:50:06 +02:00 |
|
|
|
e0a27c99a4
|
feat(presentation): ActivityPub routes — WebFinger, NodeInfo, inbox, outbox
|
2026-05-14 10:28:22 +02:00 |
|
|
|
2080fec347
|
feat(activitypub): ThoughtNote AP object and ThoughtsObjectHandler
|
2026-05-14 10:23:35 +02:00 |
|
|
|
21b6a04f97
|
feat(postgres-federation): FederationRepository and ApUserRepository
|
2026-05-14 10:19:57 +02:00 |
|
|
|
ebc612a311
|
feat(activitypub-base): copy from movies-diary with username-based actor URLs
|
2026-05-14 10:15:34 +02:00 |
|
|
|
c9b389a00c
|
docs: v2 Plan 4 federation implementation plan
|
2026-05-14 10:10:36 +02:00 |
|
|
|
3318635da6
|
feat(presentation): NatsEventPublisher with no-op fallback when NATS_URL unset
|
2026-05-14 10:00:39 +02:00 |
|
|
|
2e702c64cc
|
feat(worker): consumer loop binary connecting NATS to handlers
|
2026-05-14 09:58:33 +02:00 |
|
|
|
2cee884fe1
|
feat(worker): NotificationHandler and FederationHandler stub
|
2026-05-14 09:58:31 +02:00 |
|
|
|
a0893b1c69
|
feat(nats): NatsEventPublisher and NatsEventConsumer with payload conversion
|
2026-05-14 09:54:50 +02:00 |
|
|
|
57232705fe
|
feat(event-payload): serializable NATS event payload types
|
2026-05-14 09:48:58 +02:00 |
|
|
|
02de6b6f83
|
docs: v2 Plan 3 events+worker implementation plan
|
2026-05-14 09:45:57 +02:00 |
|