Commit Graph

303 Commits

Author SHA1 Message Date
2fb577af65 fix: apply dedup window + max_deliver to existing jetstream stream/consumer 2026-10-26 01:35:33 +01:00
818ab893a1 fix: real AP id tests, exact poster key check, exists port, list_movies fake 2026-10-26 01:33:29 +01:00
4cb2972f63 feat: idempotent handlers, deterministic activity ids 2026-10-26 01:27:03 +01:00
7f9c252d35 fix: NewRemoteReview param struct, atomic review+orphan movie delete 2026-10-26 01:19:09 +01:00
9a4d0c1714 feat: atomic social local writes, remote review enrichment
SocialCommand methods take events. Local follow ops = one FollowCommand::apply
tx (rows + events). k_ap path (remote, block/unblock): best-effort publish in
CompositeSocialAdapter after k_ap write; not atomic, k_ap owns tx.
save_remote_review takes events, enqueued in same tx via
sqlite::persistence::enqueue_events. Deps drop event_publisher: social
command, ReviewObjectHandler.

Remaining .publish( sites:
announce-only: users/delete_account UserDeleted, person/get + get_credits
PersonEnrichmentRequested, jobs/enrichment_staleness, http-axum search,
ImageStored (sync_poster, poster_sync_handler, image-converter backfill,
update_profile; object storage), federation_event_bridge (handler reaction),
nats relay (transport).
non-atomic by necessity: CompositeSocialAdapter::announce (k_ap-owned write).
Everything else rides its write.
2026-10-26 01:12:58 +01:00
6c295866a0 feat: atomic wrapup, movie, integration writes
Ride writes: WrapUpRequested/Completed (wrapup create/set_complete),
MovieDiscovered (resolve upsert, new+ext id only), PosterSynced (poster
handler upsert), MovieDeleted (delete_movie), WatchEventIngested (save).
Deps drop event_publisher: wrapup, ingest, delete_review, watchlist add,
review logger.

Remaining .publish( sites:
announce-only: users/delete_account UserDeleted, person/get +
get_credits PersonEnrichmentRequested, jobs/enrichment_staleness,
http-axum search, movies/sync_poster + poster_sync_handler +
image-converter backfill + users/update_profile ImageStored (object
storage), activitypub federation_event_bridge (reacting to events).
rides write, deferred: social/execute (see report),
activitypub review_handler MovieEnrichmentRequested (after
save_remote_review).
2026-10-26 01:02:34 +01:00
2f133afb96 fix: honest review update rollback test, goal delete NotFound fake, read before write 2026-10-26 00:52:45 +01:00
62ad9f4017 feat: atomic goal, watchlist, profile writes 2026-10-26 00:49:28 +01:00
c8a1e8bfe4 feat: atomic review writes with events 2026-10-26 00:40:43 +01:00
0236a488fa fix: defer blocked deliveries, claim owner token 2026-10-26 00:33:29 +01:00
53892847f2 fix: per-handler claim lease in ledger, nats max_deliver, pin handler names 2026-10-26 00:24:56 +01:00
5681d0c034 feat: processed-event ledger, idempotent dispatch 2026-10-26 00:17:28 +01:00
fa8e94817a fix: relay shutdown, claim lease, dead-letter undecodable, dedup window 2026-10-26 00:11:06 +01:00
c06d3d9207 feat: worker relays outbox to nats 2026-10-26 00:06:11 +01:00
32dfc84697 feat: event ids, outbox identity migration 2026-10-25 23:57:24 +01:00
c31aa033cc test: harden claim race test 2026-10-25 23:40:43 +01:00
b96f03f86f fix(sqlite): dedup clears old external id before canonical upsert 2026-10-25 23:39:04 +01:00
d073922308 fix(sqlite): atomic event queue claim 2026-10-25 23:39:04 +01:00
b7e69b69dc refactor: drop postgres leftovers, narrow bootstrap api 2026-10-25 23:25:16 +01:00
ec2760fd48 chore: drop unused deps 2026-10-25 23:19:19 +01:00
980de9697a refactor: rename application AppConfig to AppSettings 2026-10-25 23:19:18 +01:00
80072eb463 docs: update for new crate layout 2026-10-25 22:58:46 +01:00
a1c3f7760d test: move http-axum tests to tests/
Drop bootstrap dev-dep. Extractor + api handler + app-context tests (need full AppState via build_deps) -> bootstrap/tests/http_handlers/. forms tests -> http-axum/tests/log_review_form_test.rs.
Federation collection tests now go through public federation::html_routes().
Kept inline (private fns): api/social social_actor_to_dto (4), federation/blocklist_api social_actor_to_blocked_dto (1), html/social social_actor_to_template (1), router slow_down/api_governor (2).
2026-10-25 22:52:41 +01:00
07c8b011d8 fake user store: list_with_stats sorted by email 2026-10-25 22:52:41 +01:00
52bbb85980 test: move importer tests to tests/ (via DocumentParser) 2026-10-25 22:48:30 +01:00
760acb1f9f test: move image-converter tests to tests/ 2026-10-25 22:48:29 +01:00
74674b157c test: move small adapter tests to tests/
event-publisher, export, rss, media-server, object-storage, nats(config).
Kept inline (private fn, no public path): nats src/subject.rs
tests::{review_logged_subject,review_updated_subject,movie_discovered_subject,
consumer_subject_filter_appends_wildcard} - event_to_subject/consumer_subject_filter private.
object-storage build_local_store tests rewritten via StorageConfig::from_config.
2026-10-25 22:47:54 +01:00
ec22ac1d75 test: move sqlite-federation tests to tests/
No inline exceptions.
2026-10-25 22:41:31 +01:00
5118bf4700 test: move activitypub tests to tests/
Assert via serialized JSON (fields pub(crate)); normalize_hashtag covered via review tags. No inline exceptions.
2026-10-25 22:41:26 +01:00
f6383d6c04 test: move sqlite tests to tests/
No inline exceptions; migrate via sqlite::migrate, renamed diary/social tests.
2026-10-25 22:40:53 +01:00
5256c6e851 test: refusing fakes, failure-path tests, shared panic stubs 2026-10-25 22:25:36 +01:00
06eec2feae test: cascading in-memory store 2026-10-25 22:19:24 +01:00
51d92e08a7 test: shared factories and command builders 2026-10-25 22:08:17 +01:00
2ac1d4e0cf refactor: Upload extractor, 429 refusal test, stricter contract test 2026-10-25 21:59:31 +01:00
c8d9138349 refactor: single refusal shape with openapi contract test 2026-10-25 21:55:38 +01:00
614aec8df9 refactor: http-axum split into api/html/federation modules, router.rs, templates per page group 2026-10-25 21:46:03 +01:00
a931fb548f refactor: presentation becomes http-axum adapter, absorbs templates 2026-10-25 21:34:09 +01:00
b5bfdadcd9 refactor: merge media-server parsers, move poster sync and event payload 2026-10-25 21:22:59 +01:00
a00a5dc655 fix: config empty values unset, drop adapter from_vars 2026-10-25 21:18:16 +01:00
9bf9342fc0 refactor: bootstrap crate, thin server/worker binaries 2026-10-25 21:16:38 +01:00
04f9c13625 refactor: adapters configured from config crate 2026-10-25 21:07:19 +01:00
ab4e4c3138 refactor: sqlite repositories per aggregate 2026-10-25 20:55:33 +01:00
67597ec9a6 refactor: merge sqlite adapter family into one crate 2026-10-25 20:48:30 +01:00
1ece8032ff test: track pre_merge.db fixture 2026-10-25 20:44:46 +01:00
f8fe49f739 test: pin migration ledger 2026-10-25 20:44:10 +01:00
933400e1c2 refactor: drop postgres backend 2026-10-25 20:34:07 +01:00
59238a36d8 refactor: typed errors in rss/import ports 2026-10-25 20:30:28 +01:00
18c179e14c chore: gate test helpers, code style, stricter clippy 2026-10-25 20:26:50 +01:00
2ce7db12c2 fix(rss): absolute item/channel links, atom self, application/xml
Some checks failed
CI / Check / Test (push) Failing after 30m12s
2026-10-25 19:59:07 +01:00
4f3d99ec8e feature/spoiler-flag (#25)
Some checks failed
CI / Check / Test (push) Has been cancelled
Reviewed-on: #25
2026-10-25 18:52:11 +00:00