Commit graph

48 commits

Author SHA1 Message Date
fdbf8461cd Point org-social links to git.andros.dev 2026-08-20 10:24:14 +02:00
9c0e825fa1 Add License section to README 2026-08-20 10:02:19 +02:00
349a5e1376 Add ActivityPub and RSS bridges serving virtual social.org feeds
Expose external accounts as virtual Org Social feeds that any client
can follow with a plain #+FOLLOW: line:

- /bridge/activitypub/@{user}@{instance}/ bridges a Mastodon or any
  ActivityPub account (WebFinger, actor and paginated outbox; only
  public top-level notes, with CW, hashtags, language and attachments)
- /bridge/rss/?url={feed} bridges any RSS/Atom feed (entry title as
  *** sub-heading, converted body and link to the original article)

Registration is implicit on first GET. Bridged data is stored in the
existing Profile/Post tables so /profile/, /search/ and the rest of
the API work on bridged feeds. Active bridges are refreshed every 15
minutes; bridges unrequested for 90 days are cleaned up.

Remote HTML is converted to Org text, escaping headline-like lines so
external content cannot inject posts. Fetches enforce the Webmention
SSRF protections, a 10s timeout and a 5MB size cap. Bridged posts
never queue Webmentions nor publish notifications.
2026-07-17 15:26:41 +02:00
22271f2e0d Send Webmentions for external links found in posts
Implements the sender side of https://www.w3.org/TR/webmention/. During
feed scans, external URLs found in new posts (and links added by edits)
are queued as OutgoingWebmention rows; a periodic task discovers each
target's endpoint and delivers the notification. The unique
(source, target) pair guarantees a webmention is sent at most once, no
matter how many times a feed is rescanned. Targets without an endpoint
are marked permanently, failures retry with exponential backoff, and
endpoints resolving to loopback/private addresses are rejected.
Receiving webmentions is out of scope: plain text feeds cannot
advertise an endpoint.
2026-07-16 10:22:47 +02:00
f7f85153f6 Add /stats/ endpoint with monthly activity and global counters 2026-07-10 08:19:10 +02:00
0a66cfcf7a Make ?feed optional in /sse/notifications/, add global stream
Without ?feed=, the endpoint subscribes to all notification channels via
Redis psubscribe("notifications:*") and adds target_feed to each event.
With ?feed=, behavior is unchanged. Updates README and root _links.
2026-05-19 09:06:44 +02:00
347369868d Add /profile/ endpoint returning feed followers
New GET /profile/?feed={url} endpoint that returns the list of feed URLs
that follow the given profile, using the existing Follow model.
Includes cache support, 400/404 error handling, and 8 unit tests.
2026-05-16 11:58:45 +02:00
5a6e953786 Update Contributing section with contribution guidelines link 2026-02-23 09:58:13 +01:00
a47aa3ad35 Update 2026-01-19 14:59:42 +01:00
338a8b3121 Simplify diagram labels: use 'Relay' instead of 'Node'
Changed node labels from 'Node X (relay-list.txt)' to simply 'Relay X'
for cleaner visualization. Also updated Concepts section to use 'Relay'
terminology consistently throughout the documentation.
2026-01-19 14:58:52 +01:00
5483f1b7a4 Update diagram: remove centralized 'List nodes'
The relay list is now decentralized - each node maintains its own
local relay-list.txt file. Nodes share feeds directly with each other
in a P2P fashion, without needing a centralized list endpoint.

Changes:
- Remove 'List nodes' from mermaid diagram
- Add relay-list.txt notation to each node
- Update 'Share Users' to 'Share Feeds' for accuracy
- Simplify Concepts section to reflect decentralized architecture
2026-01-19 14:57:19 +01:00
17fe6a9fca Update README: relay list is now in this repository
The relay-list.txt file is now part of this repository, so the
instructions for making a relay public have been updated to reflect
that users should make PRs to this repo instead of the external
org-social repository.

When PRs are merged, all relay nodes that update their code will
automatically get the updated relay list.
2026-01-19 14:55:27 +01:00
13d80cfa0f Isolate list 2026-01-19 14:50:13 +01:00
Andros Fenollosa
9ccd326bea Realtime notification had been added 2025-12-05 09:13:52 +01:00
Andros Fenollosa
7c60f060c8 Added feed content 2025-11-30 17:03:53 +01:00
Andros Fenollosa
0873f18c00 Added interactions 2025-11-17 08:07:07 +01:00
Andros Fenollosa
aa5f200fb5 Added boosts 2025-11-16 18:41:45 +01:00
Andros Fenollosa
79ff3a63a5 Added RSS feature 2025-11-15 10:12:46 +01:00
Andros Fenollosa
2e3bc8328b Update instructions had been added 2025-11-05 15:17:23 +01:00
Andros Fenollosa
551651afd9 Added etag and mod header 2025-11-05 15:03:20 +01:00
Andros Fenollosa
d2014085f0 Fix parent 2025-11-05 09:37:07 +01:00
Andros Fenollosa
7e0cb6330b Added https://github.com/tanrax/org-social-relay/issues/3 2025-11-05 09:05:50 +01:00
Andros Fenollosa
20c8d7465d Document automatic feed cleanup in README
Added documentation for the new cleanup_stale_feeds cron job that runs every 3 days.
2025-10-11 11:05:26 +02:00
Andros Fenollosa
388ed52285 Add new notification endpoints: reactions, replies-to, and notifications
This commit introduces three new REST API endpoints to the Org Social Relay:

1. /reactions/ - Retrieves reactions (posts with mood emojis) to a user's posts
2. /replies-to/ - Gets direct replies to a user's posts (excluding reactions and poll votes)
3. /notifications/ - Unified endpoint combining mentions, reactions, and replies with optional type filtering

Implementation details:
- All endpoints follow the existing API pattern with caching, validation, and error handling
- Comprehensive test suites with 35 passing tests
- Updated README with full documentation and examples
- Integrated into Django settings and URL configuration
- Code formatted with Ruff

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-10-11 10:36:47 +02:00
Andros Fenollosa
1512437147 Updated name groups with spaces 2025-10-10 07:54:55 +02:00
Andros Fenollosa
7345e56148 Deleted join group 2025-10-09 16:23:51 +02:00
Andros Fenollosa
0da9a18ac9 Updated crons 2025-09-30 12:13:02 +02:00
Andros Fenollosa
f9373b97a0 Added moods 2025-09-25 08:05:30 +02:00
Andros Fenollosa
d02aa2b55b Update 2025-09-23 18:28:48 +02:00
Andros Fenollosa
d21a996bb3 Updated endpoints 2025-09-23 16:53:11 +02:00
Andros Fenollosa
5b2b15f390 Removed old code 2025-09-23 16:30:48 +02:00
Andros Fenollosa
ae6fc61245 Updated 2025-09-22 19:33:14 +02:00
Andros Fenollosa
77e9f9b4ad Added groups 2025-09-22 16:51:18 +02:00
Andros Fenollosa
9e28b70ba5 Updated 2025-09-22 14:53:12 +02:00
Andros Fenollosa
9015df68c0 Update polls endpoint status from to 2025-09-22 12:18:08 +02:00
Andros Fenollosa
04e0bfa66f Update README.md 2025-09-22 12:17:36 +02:00
Andros Fenollosa
8a53198ad6 Added polls 2025-09-20 20:05:16 +02:00
Andros Fenollosa
4bf78d0648 Updated mentions 2025-09-20 10:18:17 +02:00
Andros Fenollosa
9616c5c581 Added mentions and tasks 2025-09-19 16:09:27 +02:00
Andros Fenollosa
f828698892 Added table 2025-09-17 09:12:27 +02:00
Andros Fenollosa
d4b6b41071 Updated Redis connection and README 2025-09-17 09:09:35 +02:00
Andros Fenollosa
d5a1fc36b1 Fixed routers 2025-09-17 08:47:28 +02:00
Andros Fenollosa
d3f5e38a54 Feeds endpoints 2025-09-16 15:28:21 +02:00
Andros Fenollosa
ee9a3e23eb Fix 2025-09-12 07:32:11 +02:00
Andros Fenollosa
7847b52e96 Updated 2025-09-11 12:12:24 +02:00
Andros Fenollosa
371cb5e2c0 Test 2025-09-11 10:50:37 +02:00
Andros Fenollosa
8a9bbfd1ac Test 2025-09-11 10:48:26 +02:00
Andros Fenollosa
96d1159f73 Updated 2025-09-11 10:46:15 +02:00