Commit graph

156 commits

Author SHA1 Message Date
5c0c981465 Meta: Run clang-format 2025-06-07 08:42:32 -04:00
9513a70a98 Meta: Update scripts/build-all 2025-06-07 08:42:10 -04:00
b22e40248d Meta: Update README.md 2025-05-24 14:57:09 -04:00
e0236f9f65 Meta: Add slon-web-preview.png 2025-05-24 14:33:30 -04:00
e4daaf36f2 Update README.md 2025-05-17 10:29:03 -04:00
497a05f183 Slon/Http/Server: Set SLON_HTTP_REQUEST_TIMEOUT at 3000 ms 2025-03-30 19:07:31 -04:00
2dc8eac296 System/Setup/Environment: Don't deadlock on spawning multicore tasks simultaneously 2025-03-28 10:31:06 -04:00
a4d127796c Slon/Api/V1/Statuses: Properly increment reblogs_count locally
We create a clone of the object to apply the user's actions (pinned,
reblogged, etc.) and we were passing this clone to
@slon_api_(reblog|unreblog)_status(), instead of the actual object.
2025-03-22 18:35:51 -04:00
0d19f9fa33 Slon/Api/V1/Accounts: Handle badly-behaved JSON API clients
An array of String is still an array, even if it contains a single
element. I'm looking at you,
[Tuba](https://github.com/GeopJr/Tuba/blob/main/src/API/Relationship.vala#L48).

Ref: https://docs.joinmastodon.org/methods/accounts/#relationships

It shouldn't be our responsibility to handle this, but life isn't fair,
so we'll begrudgingly handle it anyway.
2025-03-21 16:34:55 -04:00
3369304fb4 System/Libraries/Json: Add KeyValueAsArray(), ItemValueAsArray()
We need these two functions for Objects and Arrays, respectively, to
deal with applications that incorrectly implement the JSON API spec.
2025-03-21 16:30:00 -04:00
3468d97da9 Slon/Modules/Api: Update whitelist_ip to specify multiple values
The whitelist_ip setting will now match on any value encapsulated by
single quotes, regardless of delimiter.
2025-03-21 14:18:48 -04:00
329c7fabf7 Slon/Static/js/statuses: Show '<username> boosted' on hover 2025-03-21 10:53:04 -04:00
6f57c05145 Slon/Static/js/statuses: Make replies_count clickable if > 0 2025-03-21 10:49:23 -04:00
deaae41ae6 Slon/Static/js/statuses: Get context for statuses with replies 2025-03-21 10:42:45 -04:00
0d88ccf0c4 Slon/Api/V1/Statuses: Don't require authorization for 'context' endpoint 2025-03-21 09:18:51 -04:00
c5378f5cfd Slon/Endpoints/Get/Instance: Add placeholder for /api/v1/instance/activity 2025-03-21 09:08:03 -04:00
75787090d2 Slon/Endpoints/Get/Web: Set correct MIME type for about.html 2025-03-21 08:33:34 -04:00
a84ddb4ec1 Slon/Static/html/about: Add about.html template page 2025-03-21 08:31:18 -04:00
5c8839db20 Slon/Static/html/about: Add about page
You can set the content for this page using the "about_page_content" key
in database settings.
2025-03-21 08:28:51 -04:00
d64fbfdea8 Meta: Update css/js timestamps on each build 2025-03-21 06:59:05 -04:00
b29eff6123 Slon/Static/js/statuses: Fix profile links in boosted statuses 2025-03-21 06:32:08 -04:00
e3a3259bf3 Slon/Static/css: Correct image aspect ratio in web view 2025-03-21 06:26:51 -04:00
022fceb21b Slon/Api/V1/Notifications: Add initial support for Notifications 2025-03-20 09:54:24 -04:00
bd8c5009fc Slon/Endpoints/Get/ActivityPub: Properly check for JSON in Accept header
Unlike whatever the hell I was thinking with 5f2ed89, sleep deprivation,
maybe? Oh well.
2025-03-19 12:38:24 -04:00
128d7d4f3a Slon/Modules/ActivityPub: Use NULL account_id for status lookup
Fixes regression introduced by a5460ec
2025-03-17 23:52:09 -04:00
0a3e307916 Slon/Modules/ActivityPub: Increment replies_count on local status when receiving replies 2025-03-17 18:14:52 -04:00
a5460ece4b Slon/Modules/ActivityPub: Use @slon_api_find_status_by_uri to handle receiving replies to statuses 2025-03-17 17:45:30 -04:00
ffc37f220a Slon/Static/html/user: Display Boosted statuses in user's timeline web view 2025-03-17 17:36:20 -04:00
966be78422 Slon/Api/V1/Polls: Implement Polls
Fixes #8
2025-03-16 19:21:44 -04:00
9a2a68ef93 Slon/Modules/Db: Load/save votes 2025-03-16 10:04:18 -04:00
8fc990670b Slon/Modules/ActivityPub: Create Poll object if present
This creates a poll for a status received via ActivityPub, partially
implementing #8
2025-03-16 08:45:53 -04:00
35ff50746c Slon/Api/V1/Statuses: Implement Boosts
Fixes #4
2025-03-15 20:28:04 -04:00
57ab5d1d1f Slon/Modules/ActivityPub: Translate Announce requests to Boosts
When we receive an Announce from someone we are following, we will
lookup and/or create the author of the boosted status, followed by the
status itself, which will be attached to a new status from the followed
user as a "reblog" object. Partially implements #4.
2025-03-15 18:22:48 -04:00
5d7efab319 Meta: Suppress compiler warning 2025-03-15 18:10:21 -04:00
c4ec8ae999 Slon/Modules/ActivityPub: Add http_signature_is_always_valid option
For testing purposes, we can set http_signature_is always_valid to any
value in the db settings Object. This allows us e.g. to replay
ActivityPub payloads using curl, without having to deal with signatures
while we are implementing new features.
2025-03-15 18:02:47 -04:00
11d114aa9d System/Setup/Environment: Patch reboot-on-crash to Fault2 instead of Dbg2 2025-03-15 17:53:06 -04:00
8175debbac Meta: Remove newline for debugging separator 2025-03-15 17:52:31 -04:00
400d9c9c01 Slon/Api/V1/Bookmarks: Implement Bookmarks
Fixes #10
2025-03-14 18:24:10 -04:00
5a9bf4f32b Slon/Api/V1/CustomEmojis: Implement Custom Emojis
Fixes #6
2025-03-13 15:50:48 -04:00
a4a959d875 Meta: Suppress compiler warnings 2025-03-12 20:49:05 -04:00
401035a0d1 Slon/Api/V1/Favourites: Implement Favourites
Fixes #7
2025-03-12 20:33:39 -04:00
475e648feb Slon/Api/V1/Announcements: Implement Announcements
Fixes #9
2025-03-12 16:19:00 -04:00
6e9f86b4ae Slon/Modules/Db: Show progress when loading profiles and statues 2025-03-12 13:41:05 -04:00
de213e35fe System/Libraries/Json: Implement array->contains() 2025-03-12 13:38:11 -04:00
8ef544d912 System/Libraries/Json: Set arr->last_item to NULL if arr->length is zero 2025-03-12 09:39:51 -04:00
fd8d6ca2b7 Slon/Modules/ActivityPub: Fix offset for HTTP signatures (for now) 2025-03-12 09:05:42 -04:00
c726b7e206 Slon/Http/AdminServer: Display free memory in /info/stats 2025-03-12 08:23:41 -04:00
06c8433616 Slon/Static/html/admin: Make whitelist_ip a protected settings field
Just a simple QoL change, not "security" by any means.
2025-03-12 08:03:25 -04:00
5f2ed89f61 Slon/Endpoints/Get/ActivityPub: Match json anywhere in Accept header
We shouldn't 404 if a client accepts many different content-types, or is
unnecessarily verbose, when requesting a user profile.
2025-03-12 07:58:44 -04:00
3faed0e966 Slon/Modules/OAuth: Return client state for /oauth/verify_access
Most clients don't care about this, but the (deprecated) Tooot iOS app
does, so now we support it.
2025-03-12 07:47:09 -04:00