Commit Graph

286 Commits

Author SHA1 Message Date
4890501512 chore: add deploy.sh — build amd64 image and push to registry
Some checks failed
lint / lint (push) Has been cancelled
test / integration (push) Has been cancelled
test / unit (push) Has been cancelled
lint / lint (pull_request) Failing after 5m4s
test / unit (pull_request) Successful in 16m39s
test / integration (pull_request) Failing after 16m56s
2026-05-14 15:46:53 +02:00
cc9658975f fix: tag feed returns full FeedEntry with author and counts
Some checks failed
lint / lint (push) Has been cancelled
test / unit (push) Has been cancelled
test / integration (push) Has been cancelled
lint / lint (pull_request) Failing after 5m2s
test / unit (pull_request) Successful in 16m3s
test / integration (pull_request) Failing after 16m59s
2026-05-14 15:43:02 +02:00
38b4774a63 feat(bootstrap): configurable HOST, CORS_ORIGINS, and optional rate limiting
Some checks failed
lint / lint (push) Has been cancelled
test / unit (push) Has been cancelled
test / integration (push) Has been cancelled
lint / lint (pull_request) Failing after 5m3s
test / unit (pull_request) Successful in 16m6s
test / integration (pull_request) Failing after 17m45s
2026-05-14 15:37:38 +02:00
9b47779e63 feat: GET /tags/popular — top tags by usage count 2026-05-14 15:34:40 +02:00
eb7dbb0aee feat: GET /users (search/list) and GET /users/count 2026-05-14 15:34:37 +02:00
a2cc4fba21 feat(presentation): wire GET /users/{username}/follower-list and /following-list 2026-05-14 15:34:33 +02:00
6eba91e699 fix(presentation): hydrate feed responses with full ThoughtResponse — remove UUID-only stubs 2026-05-14 15:31:44 +02:00
cf94b0ba6c ci(test): split into unit (no DB) and integration (postgres) jobs
Some checks failed
lint / lint (push) Has been cancelled
test / unit (push) Has been cancelled
test / integration (push) Has been cancelled
lint / lint (pull_request) Failing after 5m9s
test / unit (pull_request) Successful in 15m59s
test / integration (pull_request) Failing after 16m59s
2026-05-14 15:17:59 +02:00
057f10cb69 chore: Dockerfile, README, LICENSE, .env.example, CI workflows (lint/test/deploy)
Some checks failed
lint / lint (push) Has been cancelled
test / test (push) Has been cancelled
lint / lint (pull_request) Failing after 5m3s
test / test (pull_request) Failing after 18m48s
2026-05-14 15:15:18 +02:00
ed744046f4 refactor(activitypub-base): eliminate double get_local_actor — extract thought_note_json, remove dead broadcast_to_followers methods 2026-05-14 14:36:54 +02:00
931894d77a refactor(activitypub-base): extract accepted_follower_inboxes helper — eliminate 7x duplicated filtering 2026-05-14 14:23:38 +02:00
2485869af6 fix(activitypub-base): deterministic announce IDs so Undo(Announce) can reference original activity 2026-05-14 14:16:48 +02:00
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