stoat-release[bot]
d52e84c5d3
chore(main): release 0.13.0 ( #722 )
...
Co-authored-by: stoat-release[bot] <245062572+stoat-release[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v0.13.0
2026-05-09 17:26:38 +01:00
İspik
d76a71141f
fix: don't strip ICC from exif ( #735 )
...
* fix: don't strip ICC from exif
Signed-off-by: ispik <ispik@ispik.dev >
* fix: refactor ICC profile handling in image processing
Signed-off-by: ispik <ispik@ispik.dev >
---------
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-08 15:49:31 -07:00
Taureon
6f3441cf4a
feat: Add webhook endpoints for editing and deleting messages ( #682 )
...
* feat: ErrorType.CannotDeleteMessage, needed later
Signed-off-by: Taureon <taureon@noreply.codeberg.org >
* feat: webhook edit/delete message endpoints
Signed-off-by: Taureon <taureon@noreply.codeberg.org >
* lol, lmao even
Signed-off-by: Taureon <taureon@noreply.codeberg.org >
* fix contradictory comment
Signed-off-by: Taureon <taureon@noreply.codeberg.org >
---------
Signed-off-by: Taureon <taureon@noreply.codeberg.org >
Co-authored-by: Taureon <taureon@noreply.codeberg.org >
2026-05-08 15:37:00 -07:00
Gabriel
23ad135983
feat: add emoji rename endpoint ( #714 )
...
* feat: add rename endpoint with rename-only update
Signed-off-by: Gabriel <60961939+gabrielfordevelopment@users.noreply.github.com >
* fix: enforce detached emoji edit restrictions
Signed-off-by: Gabriel <60961939+gabrielfordevelopment@users.noreply.github.com >
* fix: always enforce emoji edit permissions
Signed-off-by: Gabriel <60961939+gabrielfordevelopment@users.noreply.github.com >
---------
Signed-off-by: Gabriel <60961939+gabrielfordevelopment@users.noreply.github.com >
2026-05-08 15:23:57 -07:00
İspik
d46c7f7f3c
feat: add embed support for YouTube Shorts ( #734 )
...
* feat: add embed support for YouTube Shorts
Signed-off-by: ispik <ispik@ispik.dev >
* feat: blacklist private ip ranges and add january domain blocklist
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: remove duplicates
Signed-off-by: ispik <ispik@ispik.dev >
---------
Signed-off-by: ispik <ispik@ispik.dev >
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
Co-authored-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-05-08 15:23:30 -07:00
Tom
0719985ac5
fix: docker compose file had personal url in it ( #742 )
2026-05-08 15:22:10 -07:00
Tom
ab5bd47a39
feat: Rewrite acks ( #741 )
...
* feat: rewrite ack system
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* feat: rewrite acks to crond + rabbit task
* fix: review changes
---------
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-05-08 14:39:16 -07:00
İspik
9fd7128f80
fix: encode filenames in redirects ( #737 )
...
* fix: encode filenames in redirects
Signed-off-by: ispik <ispik@ispik.dev >
* refactor: don't add another dependency when the one needed exists
Signed-off-by: ispik <ispik@ispik.dev >
---------
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-08 14:38:57 -07:00
İspik
df276ac40b
chore: update emoji list ( #740 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-08 14:37:35 -07:00
Tom
356491e934
fix: january ip redirects & domain resolver ( #738 )
...
* fix: properly block private ip ranges
I'm a dunce and forgot that domains do in fact resolve to ips.
* fix: reimplement max redirects
* fix: remove my debug error
* fix: actually check redirect urls
kind of the whole point of this thing.
2026-05-06 21:33:52 -07:00
İspik
21d82018cf
feat: add legal links to root payload ( #733 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-06 16:35:20 -07:00
Tom
6b41db984b
feat: blacklist private ip ranges and add january domain blocklist ( #731 )
...
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-05-06 16:25:31 -07:00
İspik
5378cd22b4
fix: use correct response for NoEffect errors ( #732 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-05 11:57:42 -07:00
İspik
841985d3b9
feat: add role icon support ( #724 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-02 17:04:28 -07:00
İspik
279f5d5fd7
fix: add new_user_hours to configuration limits ( #729 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-04-26 22:47:52 -07:00
jarvarvarvis
e93769786c
feat: automatically sanitise usernames on create/update ( #689 )
...
* feat: automatically sanitise usernames on create/update
Signed-off-by: higgs01 <6546697+higgs01@users.noreply.github.com >
* test: add tests for validation and sanitasion
Signed-off-by: higgs01 <6546697+higgs01@users.noreply.github.com >
* fix: Return only the sanitised string in sanitise_username (#424 )
* fix: Use as_str for role.id in insert_role
* Run rustfmt for code changes
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* feat: Make minimum username length configurable in Revolt.toml (#424 )
* fix: Remove redundant call to is_match with blocked username regex
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* Update crates/core/database/src/models/users/model.rs
Co-authored-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: jarvarvarvis <53998846+jarvarvarvis@users.noreply.github.com >
* Update crates/core/database/src/models/users/model.rs
Co-authored-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: jarvarvarvis <53998846+jarvarvarvis@users.noreply.github.com >
* Update crates/core/database/src/models/users/model.rs
Co-authored-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: jarvarvarvis <53998846+jarvarvarvis@users.noreply.github.com >
* Update crates/core/database/src/models/users/model.rs
Co-authored-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: jarvarvarvis <53998846+jarvarvarvis@users.noreply.github.com >
* fix: Implement suggested changes and clean up last 4 commits
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* fix: Disallow stoat as username, update create_user test
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* fix: Use sanitised username to find updated discriminator
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* feat: Sanitise revolt.chat in username
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* fix: Implement discussed changes
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* test: Fix create_user test
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
* fix: don't overflow the stack
not entirely sure why this fixes it and I don't like it. But work it does.
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: revert odd file mode change
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
---------
Signed-off-by: higgs01 <6546697+higgs01@users.noreply.github.com >
Signed-off-by: jarvarvarvis <jarvistrigo@gmail.com >
Signed-off-by: jarvarvarvis <53998846+jarvarvarvis@users.noreply.github.com >
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
Co-authored-by: higgs01 <6546697+higgs01@users.noreply.github.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
2026-04-23 21:02:28 -07:00
İspik
ed4fd5ebfe
fix: update message length validation to remove upper limit ( #723 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-04-23 20:39:13 -07:00
Angelo Kontaxis
89171e9bd0
fix: dont send notification in fcm ( #721 )
...
* fix: dont send notification in fcm
Signed-off-by: Zomatree <me@zomatree.live >
* fix: add notification type to fcm
Signed-off-by: Zomatree <me@zomatree.live >
* fix: switch to structured notification data
Signed-off-by: Zomatree <me@zomatree.live >
---------
Signed-off-by: Zomatree <me@zomatree.live >
2026-04-22 23:48:26 -07:00
Infiland
057f2bb8b3
fix: add reconnection policy to Redis subscriber to prevent ghost state ( #708 )
...
* fix: add reconnection policy to Redis subscriber to prevent ghost state
- Add ReconnectPolicy::new_exponential(0, 100, 30_000, 2) to the subscriber builder, unlimited retries with exponential backoff (100ms min, 30s max)
- Add on_reconnect handler that signals the listener loop to force a subscription reset, re-subscribing to all topics on the new connection
- Add warn-level logging to on_error for all Redis subscriber errors (previously only Canceled was handled, others were silently ignored)
Signed-off-by: Infiland <ljubica.citydesign@gmail.com >
* Update websocket.rs
Signed-off-by: Infiland <88491175+Infiland@users.noreply.github.com >
* Auto-manage subscriptions on reconnect
Call subscriber.manage_subscriptions() so the subscriber will automatically re-subscribe tracked channels after a Redis reconnect. Remove the manual reconnect channel and on_reconnect handler along with the select branch that forced SubscriptionStateChange::Reset.
Signed-off-by: Infiland <88491175+Infiland@users.noreply.github.com >
---------
Signed-off-by: Infiland <ljubica.citydesign@gmail.com >
Signed-off-by: Infiland <88491175+Infiland@users.noreply.github.com >
2026-04-17 20:15:54 -07:00
Angelo Kontaxis
3675ff1a1f
chore: migrate all local dependancies to workspace dependancies ( #710 )
...
* chore: start moving all deps to workspace deps
Signed-off-by: Zomatree <me@zomatree.live >
* chore: migrate all deps to workspace deps
Signed-off-by: Zomatree <me@zomatree.live >
* chore: add more dep groups
Signed-off-by: Zomatree <me@zomatree.live >
* fix: add migration to update existing files to be animated (#705 )
* fix: add migration to update existing files to be animated
Signed-off-by: Zomatree <me@zomatree.live >
* Revert "fix: add migration to update existing files to be animated"
This reverts commit 4e1f1c116c .
Signed-off-by: Zomatree <me@zomatree.live >
* fix: calculate animated for existing files when fetched
Signed-off-by: Zomatree <me@zomatree.live >
---------
Signed-off-by: Zomatree <me@zomatree.live >
* fix: mise start + missing docker image (#564 )
* fix: mise start + missing docker image
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: bump livekit version
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
---------
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
Signed-off-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
* docs: update donation link (#709 )
Signed-off-by: Zomatree <me@zomatree.live >
* fix: remove usage of deprecated functions
Signed-off-by: Zomatree <me@zomatree.live >
---------
Signed-off-by: Zomatree <me@zomatree.live >
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
Signed-off-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
Co-authored-by: Damocles <106018783+Damocles078@users.noreply.github.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
Co-authored-by: Paul Makles <me@insrt.uk >
2026-04-17 19:02:18 -07:00
infi
144e939c6b
docs: add run in yaak button to endpoints page ( #711 )
2026-04-12 00:46:05 +01:00
stoat-release[bot]
61fd13629f
chore(main): release 0.12.1 ( #700 )
...
Co-authored-by: stoat-release[bot] <245062572+stoat-release[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v0.12.1
2026-04-11 12:31:11 +01:00
Paul Makles
47336a7940
docs: pr template ( #713 )
2026-04-10 20:44:29 +01:00
Paul Makles
4ea8f90c0d
docs: update donation link ( #709 )
2026-04-03 00:28:49 +01:00
Damocles
fb8fe16557
fix: mise start + missing docker image ( #564 )
...
* fix: mise start + missing docker image
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: bump livekit version
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
---------
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
Signed-off-by: Tom <iamtomahawkx@gmail.com >
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
2026-04-01 19:51:14 -07:00
Angelo Kontaxis
f2c056a151
fix: add migration to update existing files to be animated ( #705 )
...
* fix: add migration to update existing files to be animated
Signed-off-by: Zomatree <me@zomatree.live >
* Revert "fix: add migration to update existing files to be animated"
This reverts commit 4e1f1c116c .
Signed-off-by: Zomatree <me@zomatree.live >
* fix: calculate animated for existing files when fetched
Signed-off-by: Zomatree <me@zomatree.live >
---------
Signed-off-by: Zomatree <me@zomatree.live >
2026-04-01 19:48:22 -07:00
Tom
f30b729ca9
fix: don't send self dm notifications ( #706 )
...
* fix: don't send self dm notifications
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: test failure due to wrong assertion (#707 )
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: RA auto import moment
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
---------
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-03-31 15:25:36 -07:00
Tom
f81e3291bd
fix: test failure due to wrong assertion ( #707 )
2026-03-31 11:06:39 +01:00
Tom
1e80916b65
Fix/release please fix 4 ( #703 )
...
* fix: release-please-3
* fix: release please bs v4
v0.12.0
2026-03-28 23:05:01 -07:00
Tom
8814bf4c23
fix: release-please-3 ( #702 )
2026-03-28 22:53:12 -07:00
Tom
5466ada9ae
Fix: release please bs 2 electric boogaloo ( #701 )
...
* fix: update release (me from this) please
* fix: add dep to release please
* Revert "fix: update release (me from this) please"
This reverts commit 0618c492c7 .
delete
2026-03-28 22:42:13 -07:00
Tom
f0e513ccae
fix: update release (me from this) please ( #699 )
2026-03-28 22:35:51 -07:00
stoat-release[bot]
4d4b0dd864
chore(main): release 0.12.0 ( #602 )
...
Co-authored-by: stoat-release[bot] <245062572+stoat-release[bot]@users.noreply.github.com>
2026-03-28 22:22:37 -07:00
Tom
f181edc8f2
feat: update livekit ( #698 )
2026-03-27 21:14:22 -07:00
Angelo Kontaxis
ccda6f5c53
fix: pass &str to Reference ( #697 )
...
Signed-off-by: Zomatree <me@zomatree.live >
2026-03-27 18:39:00 -07:00
Damocles
52ed5100c2
fix: improve generated openapi.json ( #584 )
...
* fix: /bots/{bot}
Paths "/bots/{bot}" and "/bots/{target}" must not be equivalent.
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: /channels/{group_id}/recipients/{member_id}
Paths "/channels/{group_id}/recipients/{member_id}" and "/channels/{target}/recipients/{member}" must not be equivalent.
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: /channels/{channel_id}/webhook
Paths "/channels/{target}/webhooks" and "/channels/{channel_id}/webhooks" must not be equivalent.
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: /servers/{server_id}/members/{member_id}
Paths "/servers/{target}/members/{member}" and "/servers/{server}/members/{member}" must not be equivalent.
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
* fix: /custom/emoji/{emoji_id}
Paths "/custom/emoji/{id}" and "/custom/emoji/{emoji_id}" must not be equivalent.
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
---------
Signed-off-by: Damocles078 <hellodamocles078@gmail.com >
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com >
2026-03-27 17:31:57 -07:00
newt (
c2d4369e16
feat: compute thumbhash for images ( #596 )
...
* feat: compute thumbhash for images
Signed-off-by: newt <hi@newty.dev >
* Merge branch 'main' into feat/thumbhash
Signed-off-by: newt <hi@newty.dev >
* style: move comment onto newline
Signed-off-by: newt <hi@newty.dev >
* feat: make thumbhash optional
Signed-off-by: newt <hi@newty.dev >
---------
Signed-off-by: newt <hi@newty.dev >
Signed-off-by: newt (: <hi@newty.dev >
Signed-off-by: Tom <iamtomahawkx@gmail.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
2026-03-27 17:29:55 -07:00
Angelo Kontaxis
91783b9066
fix: only show first line on commit messages ( #696 )
...
Signed-off-by: Zomatree <me@zomatree.live >
2026-03-27 17:29:37 -07:00
LazyCat
735d644e04
feat: Transfer ownership ( #396 )
...
* feat: Transfer ownership
Signed-off-by: LazyCat2 <68156188+LazyCat2@users.noreply.github.com >
* Allow privileged users to change ownership
Signed-off-by: LazyCat2 <68156188+LazyCat2@users.noreply.github.com >
* Require TOTP
Signed-off-by: LazyCat2 <68156188+LazyCat2@users.noreply.github.com >
* Require TOTP or password
Signed-off-by: LazyCat2 <68156188+LazyCat2@users.noreply.github.com >
---------
Signed-off-by: LazyCat2 <68156188+LazyCat2@users.noreply.github.com >
Signed-off-by: Tom <iamtomahawkx@gmail.com >
Co-authored-by: Tom <iamtomahawkx@gmail.com >
2026-03-27 17:24:53 -07:00
Tom
d1e72cee42
feat: parse message push notification content and replace internal formatting ( #693 )
...
* parse message push notification content and replace internal formatting
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: don't unwrap the error I was using for db debugging
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: emojis & remove compiler warning
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* fix: emojis in pushd
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
* feat: report errors in the render function to sentry
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
---------
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-03-27 17:15:05 -07:00
İspik
6107f242fd
feat: Add slowmode functionality to text channels ( #680 )
...
* feat: Add slowmode functionality to text channels
Signed-off-by: arsabutispik <ispik@ispik.dev >
* fix: use atomic check-and-set to prevent spamming with scripts
Signed-off-by: arsabutispik <ispik@ispik.dev >
* feat: Add BypassSlowmode permission to channel permissions
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: Use set_options instead of manually building the command
Signed-off-by: arsabutispik <ispik@ispik.dev >
---------
Signed-off-by: arsabutispik <ispik@ispik.dev >
2026-03-27 17:09:15 -07:00
Tom
a5cd08a655
fix: add flag for disabling events instead of commenting them out ( #695 )
...
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-03-27 17:03:48 -07:00
İspik
98c7b1b5a5
feat: implement time based message sweep on user ban ( #670 )
...
* feat: implement time based message sweep on user ban
- Adds `delete_message_seconds` (0 to 7 days in seconds) to the ban request payload.
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: pass ulid conversion to database
Signed-off-by: arsabutispik <ispik@ispik.dev >
* fix: use COL constant instead of hardcoded string in error mapper
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: broadcast bulk delete events during ban sweep
Updates the `delete_messages_by_author_since` trait to return a
HashMap of deleted message IDs grouped by channel.
The MongoDB implementation now uses a two-step process: it first
runs a projected `find` query to gather the target `_id` and
`channel` fields, then executes the `delete_many` operation.
This allows the ban route to loop through the affected channels and
dispatch `EventV1::BulkMessageDelete` WebSocket events, ensuring
that the swept messages are instantly removed from the UI for
all connected clients.
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: optimize message deletion by using $group and aggregate
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: use with_type in query
Signed-off-by: arsabutispik <ispik@ispik.dev >
* refactor: abstract function to Message model and mark attachments as deleted
Signed-off-by: arsabutispik <ispik@ispik.dev >
---------
Signed-off-by: arsabutispik <ispik@ispik.dev >
2026-03-27 17:02:12 -07:00
flexxyfluxx
ec22deb2cd
docs(readme): remove outdated reference to scripts/install.sh; add instruction to run mise install ( #691 )
...
* chore: fill in missing install step: mise install
Signed-off-by: flexxyfluxx <82163962+flexxyfluxx@users.noreply.github.com >
* chore: remove outdated reference to scripts/start.sh
Signed-off-by: flexxyfluxx <82163962+flexxyfluxx@users.noreply.github.com >
---------
Signed-off-by: flexxyfluxx <82163962+flexxyfluxx@users.noreply.github.com >
2026-03-27 13:25:57 -07:00
stoat-tofu[bot]
ecb94e278c
chore: modify .github/workflows/validate-pr-title.yml
2026-03-24 19:03:59 +00:00
stoat-tofu[bot]
1a9d5b4b65
chore: modify .github/workflows/release-webhook.yml
2026-03-24 19:03:39 +00:00
stoat-tofu[bot]
abfb3925fd
chore: modify .github/workflows/git-town.yml
2026-03-24 19:03:37 +00:00
stoat-tofu[bot]
2a73d82250
chore: modify .github/workflows/git-town.yml
2026-03-24 18:59:15 +00:00
Tom
edfa97db10
feat: Allow restricting server creation to specific users ( #685 )
...
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-03-23 12:25:33 -07:00
Tom
cf2cedcee1
chore: silence git town errors ( #687 )
...
Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com >
2026-03-23 11:51:22 -07:00