ispik
93a00ffbf8
Merge branch 'main' into feat/admin-api
...
# Conflicts:
# crates/core/database/src/util/mod.rs
# crates/core/result/src/axum.rs
2026-05-23 13:26:21 +03:00
İspik
2d308e03d5
fix: sanitize emoji input to handle variation selectors ( #774 )
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-21 08:21:43 -07:00
İspik
af0d8aad14
feat: user slowmode events ( #760 )
...
* feat: user slowmode events
Signed-off-by: ispik <ispik@ispik.dev >
* fix: remove debug print statement for slowmodes
Signed-off-by: ispik <ispik@ispik.dev >
* refactor: Send user slowmodes as websocket connects instead of trying to send it in ready payload
Signed-off-by: ispik <ispik@ispik.dev >
* refactor: optimize user slowmode handling with bulk operations
Signed-off-by: ispik <ispik@ispik.dev >
* chore: specify release version
Release-As: 0.13.6
---------
Signed-off-by: ispik <ispik@ispik.dev >
2026-05-18 14:51:43 -07: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
İspik and IAmTomahawkx
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
İ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
İ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
İ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
ispik
2d8b7481bc
fix: use the correct permissions
...
Signed-off-by: ispik <ispik@ispik.dev >
2026-04-27 10:40:07 +03:00
ispik
8bd5542e71
Merge branch 'main' into feat/admin-api
...
# Conflicts:
# crates/core/database/src/models/users/model.rs
2026-04-27 10:29:19 +03: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
İ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
ispik
533cc5835a
feat: add admin channel deletion endpoint
2026-04-18 19:31:38 +03:00
ispik
80b749d6fc
Merge branch 'main' into feat/admin-api
2026-04-18 18:54:02 +03:00
ispik
74ce10162c
Merge branch 'main' into feat/admin-api
2026-04-12 14:50:04 +03:00
ispik
9a67cb139c
feat: implement admin account deletion endpoint
2026-04-12 14:49:41 +03:00
ispik
5e98a01624
refactor: disable account before creating audit action
2026-04-12 14:41:02 +03:00
ispik
9fe7de709a
fix: refactor account disabling logic to use disable method
2026-04-12 14:38:29 +03:00
ispik
5b9a909923
fix: update audit action for accurate account actions
2026-04-12 14:18:22 +03:00
ispik
913946cfa1
feat: expose account modules in mod.rs and add it to routes
2026-04-12 14:15:40 +03:00
ispik
01e0c30596
fix: update permissions for accounts routes to ManageAccounts
2026-04-12 14:12:15 +03:00
ispik
1bb12b416a
fix: update account disable endpoint to return EmptyResponse
2026-04-12 13:53:30 +03:00
ispik
5e577358ac
feat: add optional case parameter to admin account disable endpoint
2026-04-12 13:49:34 +03:00
ispik
6e78f0b9c0
feat: implement admin account disable functionality
2026-04-11 14:00:50 +03:00
ispik
26faa18d6e
chore: add files to mod.rs
2026-04-11 12:19:22 +03:00
ispik
a152d825a2
fix: update Reference type to be lifetime parameterized in admin API functions
2026-04-11 01:01:57 +03:00
ispik
85ad261cc3
Merge branch 'main' into feat/admin-api
...
# Conflicts:
# crates/core/database/src/util/bridge/v0.rs
# crates/core/result/src/axum.rs
# crates/core/result/src/lib.rs
# crates/core/result/src/rocket.rs
2026-04-11 00:49:36 +03: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
İ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