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