Commit graph

130 commits

Author SHA1 Message Date
e82d53bc04
Bump version: 0.2.19 → 0.2.20
Some checks failed
publish-pypi / publish (push) Has been cancelled
build / build (push) Has been cancelled
coverage / coverage (push) Has been cancelled
v0.2.20
2026-03-20 14:02:42 +01:00
1fef6e6900
fix(inbox): Reject non-object activities
Raise ActivityPubError when activity data is not a dict
2026-03-20 14:02:29 +01:00
97a145fee2
Bump version: 0.2.18 → 0.2.19
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.19
2026-03-20 13:20:07 +01:00
84dca734ff
docs(changelog): Updated CHANGELOG 2026-03-20 13:20:04 +01:00
a76a8ada4b
fix(outbox): Respect explicit to/cc and avoid DM follower fanout
- Preserve empty cc when to/cc provided; default only when unaddressed
- Fan out to follower inboxes only when activity targets followers/public
- Add tests for direct message and unlisted delivery behavior
2026-03-20 13:18:48 +01:00
42cece9a34
Bump version: 0.2.17 → 0.2.18
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.18
2026-03-20 08:55:26 +01:00
c719363adf
fix(inbox): Skip storing private/direct AP interactions
Some checks are pending
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
- Add _is_publicly_addressed check before storing Create interactions
- Private mentions/replies (no Public in to/cc) are not stored
- Unlisted posts (Public in cc) are still stored
- Callback still fires for all interactions (enables notifications)
- Document behavior in README under Interaction Callbacks
2026-03-20 01:44:35 +01:00
b52001ba0a
Bump version: 0.2.16 → 0.2.17
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.17
2026-03-19 21:58:20 +01:00
4f1e8c3de0
docs(changelog): Updated CHANGELOG 2026-03-19 21:58:18 +01:00
9eae846f12
fix: Sign actor GET fetches in inbox/outbox processors
Fixes fetch issues (401) with instances that enforce signed requests.

- Add HTTP Signature headers via sign_request for actor fetch requests
- Add tests asserting signing and signed headers are included
2026-03-19 21:56:39 +01:00
91ff1d50bd
Bump version: 0.2.15 → 0.2.16
Some checks failed
build / build (push) Has been cancelled
coverage / coverage (push) Has been cancelled
publish-pypi / publish (push) Has been cancelled
v0.2.16
2026-03-15 01:13:16 +01:00
ea505d4c7b
feat: Add async delivery option for outbox fan-out
- Add `async_delivery` param to handler and outbox (default True)
- Run delivery in background daemon thread when enabled
- Update docs and adjust tests to use synchronous delivery
2026-03-15 01:12:55 +01:00
1eb0b89fed
Bump version: 0.2.14 → 0.2.15
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.15
2026-03-14 18:11:18 +01:00
2c3b0208ce
feat(outbox): Add publish_activity and Like/Announce/Undo builders
- Add OutboxProcessor builders for Like, Announce, and generic Undo
- Add ActivityPubHandler.publish_activity pass-through for non-Create types
2026-03-14 18:10:44 +01:00
ac192e602f
Bump version: 0.2.13 → 0.2.14
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.14
2026-03-13 23:19:21 +01:00
76f09cb9cd
feat(outbox): Deliver activities to mentioned actors in to/cc fields
OutboxProcessor.publish() now delivers to actors in the activity's
to and cc fields, not just followers. This enables notifications
for mentioned users (e.g., @user@domain mentions).

- Add _is_actor_url() to filter non-actor URLs
- Add _extract_recipient_actors() to extract actors from to/cc
- Add _fetch_actor() with caching for actor document fetches
- Add _collect_recipient_inboxes() to resolve actor inboxes
- Deduplicate inboxes when mentioned actor is also a follower
2026-03-13 23:18:50 +01:00
0407f19805
Bump version: 0.2.12 → 0.2.13
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.13
2026-03-12 23:57:42 +01:00
0a341d9f5c
docs(changelog): Updated CHANGELOG 2026-03-12 23:57:39 +01:00
3ecd2cb1b5
feat(storage): Add schema versioning and auto migrations to file storage
- Add .schema_version tracking and v2 object_id index backfill migration
- Document auto_migrate option in README and architecture docs
- Add tests for version file, opt-out, and index backfill behavior
2026-03-12 23:56:00 +01:00
1f1dd8d010
feat(storage): Add object_id index backfill migration
This follows the same migration pattern for file storage implemented for
the mentions index.
2026-03-12 23:45:37 +01:00
a95d04b4d8
Bump version: 0.2.11 → 0.2.12
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.12
2026-03-12 23:41:28 +01:00
2e92168624
docs(changelog): Updated CHANGELOG 2026-03-12 23:41:23 +01:00
31f7d55743
docs: Document get_interaction_by_object_id and file index layout
- Add README API docs for get_interaction_by_object_id
- Update architecture storage contract and _object_ids index directory
2026-03-12 23:40:07 +01:00
00f20eb294
docs(agents): Refined execution style 2026-03-12 23:38:09 +01:00
42a4bc6b46
Bump version: 0.2.10 → 0.2.11
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.11
2026-03-11 23:09:48 +01:00
b384e72c6b
docs(changelog): Updated CHANGELOG 2026-03-11 23:09:44 +01:00
6a4fd35155
docs(readme): Add more badges and table of contents
- Add shields for issues, activity, license, PyPI, stars, forks, sponsor
- Add generated TOC with section anchors
2026-03-11 23:08:19 +01:00
db78707d29
docs(license): Add AGPL-3.0 license file
It was already specified in the project setup, but the text file was
missing.
2026-03-11 23:06:44 +01:00
7b23f951ae
chore(pre-commit): Add md-toc hook for README
Configure md-toc with GitHub style and max depth 6
2026-03-11 23:03:59 +01:00
5ced9539bd
Bump version: 0.2.9 → 0.2.10
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.10
2026-03-11 22:23:12 +01:00
62fe40c4c8
docs(changelog): Updated CHANGELOG 2026-03-11 22:23:08 +01:00
22bf2c169f
fix: Include exception details in outbox delivery retry logs but not the full stack trace 2026-03-11 22:22:15 +01:00
785872cd7d
Bump version: 0.2.8 → 0.2.9
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.9
2026-03-11 20:11:31 +01:00
bc4b5cc8ac
docs(changelog): Updated CHANGELOG 2026-03-11 20:11:29 +01:00
80cdbd3427
style: Minor style tweaks
- Increase author photo dimensions to 35px
- Remove author name font-size override
- Use large max-height for expanded collapsible content
2026-03-11 20:10:45 +01:00
9b6483e53e
Bump version: 0.2.7 → 0.2.8
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.8
2026-03-11 18:34:46 +01:00
de477dd0fb
docs(changelog): Updated CHANGELOG 2026-03-11 18:34:44 +01:00
dca40b1707
style: Unset max-height for expanded interactions 2026-03-11 18:33:46 +01:00
1b4d77e546
Bump version: 0.2.6 → 0.2.7
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.7
2026-03-11 17:20:40 +01:00
33d0ba1c51
docs(changelog): Updated CHANGELOG 2026-03-11 17:20:37 +01:00
8e9cd6b7bd
fix(storage): More robust parsing in delete_interaction_by_object_id
The method scans `data_dir/interactions/*/*.json`.

That includes the reverse-mention index files under
`interactions/_mentions/*.json`, which are stored as a JSON list. When
the scan hits one of those, the old code did `data.get(...)` and crashed
with:

```
AttributeError: 'list' object has no attribute 'get'.
```

- Ignore non-dict JSON while scanning
- Keep the mention index consistent: when an interaction is deleted by
  object_id, we now remove its entry from _mentions (same behavior as
  delete_interaction).
2026-03-11 17:17:56 +01:00
d0078f0644
Bump version: 0.2.5 → 0.2.6
Some checks failed
build / build (push) Waiting to run
coverage / coverage (push) Waiting to run
publish-pypi / publish (push) Has been cancelled
v0.2.6
2026-03-11 00:29:37 +01:00
39ca57e546
docs: Document mention index and backfill mentions migration
- Add CHANGELOG entry for mention indexing, new APIs, and handler
  options
- Add README section on enabling DB mention index and using
  backfill_mentions
2026-03-11 00:29:18 +01:00
40ed794e0e
feat(storage): Add migration to backfill mentioned_actors
- Add backfill_mentions + mention extraction helper
- Export migration API from storage package
- Add tests for mention extraction and backfill behavior
2026-03-11 00:28:25 +01:00
7a21010c2a
fix(inbox): Store mentions only when local actor is tagged
If the handler is configured to store interactions only from a given set
of local URLs.

- Extract Mention hrefs from object tags and attach to Interaction
- Update Create handling to gate storage on local actor being mentioned
- Add tests for mention extraction and mentioned_actors population
2026-03-11 00:17:12 +01:00
4295437c71
refactor(db): Centralize upsert logic with fallback path
- Replace per-call upsert branches with shared _upsert() helper
- Support sqlite/postgres ON CONFLICT and insert-then-update fallback
2026-03-11 00:09:58 +01:00
6f31fb20c4
feat(db): Add mention index for interactions
- Add DbInteractionMention support and mention persistence on store
- Add get_interactions_mentioning() query helper
- Populate mentioned_actors on fetched interactions
- Add sqlite-backed tests for mention indexing and idempotency
2026-03-11 00:03:21 +01:00
fbbc76ff3f
refactor(db): Add dialect upsert helper and mention model
- Add DbInteractionMention model export
- Replace select-then-update with upsert in
  follower/interaction/activity/cache saves
- Add mention persistence when storing interactions
2026-03-11 00:02:19 +01:00
899202d42b
feat(storage): Add mention reverse index for file-based interactions
- Write/update per-actor mention index on store/delete
- Add get_interactions_mentioning lookup with type/status filters
- Add tests covering mention indexing and deletion
2026-03-10 23:42:15 +01:00
ee447c4496
feat(storage): Add get_interactions_mentioning default API
- Document optional storage hook in README
- Add base method to query interactions by mentioned actor URL
- Concrete implementation for db and file storage will follow up
2026-03-10 23:37:51 +01:00