Merge branch 'main' into feat/admin-api

# Conflicts:
#	crates/delta/src/routes/mod.rs
This commit is contained in:
İspik
2026-06-12 23:00:48 +03:00
8 changed files with 144 additions and 55 deletions

30
.github/workflows/renovate.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
# DO NOT EDIT DIRECTLY IN REPOSITORY
# Managed in Terraform templates
name: Renovate
on:
workflow_dispatch:
schedule:
- cron: '0/15 * * * *'
jobs:
renovate:
runs-on: ubuntu-latest
steps:
- id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.GH_STOAT_RELEASE_APP_ID }}
private-key: ${{ secrets.GH_STOAT_RELEASE_APP_PRIVATE_KEY }}
- name: Setup Mise
uses: immich-app/devtools/actions/use-mise@7b8610a904d57da241e4ddba17fa62b62b15aed4 # use-mise-action-v2.0.2
with:
github_token: ${{ steps.app-token.outputs.token }}
- name: Self-hosted Renovate
uses: renovatebot/github-action@v46.1.14
with:
token: '${{ steps.app-token.outputs.token }}'
env:
RENOVATE_PLATFORM_COMMIT: 'enabled'
RENOVATE_REPOSITORIES: '${{ github.repository }}'

View File

@@ -1,4 +1,3 @@
*️⃣ *️⃣
0 0
1 1
@@ -242,6 +241,7 @@
🆘 🆘
🆙 🆙
🆚 🆚
🇦
🇦🇨 🇦🇨
🇦🇩 🇦🇩
🇦🇪 🇦🇪
@@ -259,6 +259,7 @@
🇦🇼 🇦🇼
🇦🇽 🇦🇽
🇦🇿 🇦🇿
🇧
🇧🇦 🇧🇦
🇧🇧 🇧🇧
🇧🇩 🇧🇩
@@ -280,6 +281,7 @@
🇧🇼 🇧🇼
🇧🇾 🇧🇾
🇧🇿 🇧🇿
🇨
🇨🇦 🇨🇦
🇨🇨 🇨🇨
🇨🇩 🇨🇩
@@ -301,6 +303,7 @@
🇨🇽 🇨🇽
🇨🇾 🇨🇾
🇨🇿 🇨🇿
🇩
🇩🇪 🇩🇪
🇩🇬 🇩🇬
🇩🇯 🇩🇯
@@ -308,6 +311,7 @@
🇩🇲 🇩🇲
🇩🇴 🇩🇴
🇩🇿 🇩🇿
🇪
🇪🇦 🇪🇦
🇪🇨 🇪🇨
🇪🇪 🇪🇪
@@ -317,12 +321,14 @@
🇪🇸 🇪🇸
🇪🇹 🇪🇹
🇪🇺 🇪🇺
🇫
🇫🇮 🇫🇮
🇫🇯 🇫🇯
🇫🇰 🇫🇰
🇫🇲 🇫🇲
🇫🇴 🇫🇴
🇫🇷 🇫🇷
🇬
🇬🇦 🇬🇦
🇬🇧 🇬🇧
🇬🇩 🇬🇩
@@ -342,12 +348,14 @@
🇬🇺 🇬🇺
🇬🇼 🇬🇼
🇬🇾 🇬🇾
🇭
🇭🇰 🇭🇰
🇭🇲 🇭🇲
🇭🇳 🇭🇳
🇭🇷 🇭🇷
🇭🇹 🇭🇹
🇭🇺 🇭🇺
🇮
🇮🇨 🇮🇨
🇮🇩 🇮🇩
🇮🇪 🇮🇪
@@ -359,10 +367,12 @@
🇮🇷 🇮🇷
🇮🇸 🇮🇸
🇮🇹 🇮🇹
🇯
🇯🇪 🇯🇪
🇯🇲 🇯🇲
🇯🇴 🇯🇴
🇯🇵 🇯🇵
🇰
🇰🇪 🇰🇪
🇰🇬 🇰🇬
🇰🇭 🇰🇭
@@ -374,6 +384,7 @@
🇰🇼 🇰🇼
🇰🇾 🇰🇾
🇰🇿 🇰🇿
🇱
🇱🇦 🇱🇦
🇱🇧 🇱🇧
🇱🇨 🇱🇨
@@ -385,6 +396,7 @@
🇱🇺 🇱🇺
🇱🇻 🇱🇻
🇱🇾 🇱🇾
🇲
🇲🇦 🇲🇦
🇲🇨 🇲🇨
🇲🇩 🇲🇩
@@ -408,6 +420,7 @@
🇲🇽 🇲🇽
🇲🇾 🇲🇾
🇲🇿 🇲🇿
🇳
🇳🇦 🇳🇦
🇳🇨 🇳🇨
🇳🇪 🇳🇪
@@ -420,7 +433,9 @@
🇳🇷 🇳🇷
🇳🇺 🇳🇺
🇳🇿 🇳🇿
🇴
🇴🇲 🇴🇲
🇵
🇵🇦 🇵🇦
🇵🇪 🇵🇪
🇵🇫 🇵🇫
@@ -435,12 +450,15 @@
🇵🇹 🇵🇹
🇵🇼 🇵🇼
🇵🇾 🇵🇾
🇶
🇶🇦 🇶🇦
🇷
🇷🇪 🇷🇪
🇷🇴 🇷🇴
🇷🇸 🇷🇸
🇷🇺 🇷🇺
🇷🇼 🇷🇼
🇸
🇸🇦 🇸🇦
🇸🇧 🇸🇧
🇸🇨 🇸🇨
@@ -462,6 +480,7 @@
🇸🇽 🇸🇽
🇸🇾 🇸🇾
🇸🇿 🇸🇿
🇹
🇹🇦 🇹🇦
🇹🇨 🇹🇨
🇹🇩 🇹🇩
@@ -479,6 +498,7 @@
🇹🇻 🇹🇻
🇹🇼 🇹🇼
🇹🇿 🇹🇿
🇺
🇺🇦 🇺🇦
🇺🇬 🇺🇬
🇺🇲 🇺🇲
@@ -486,6 +506,7 @@
🇺🇸 🇺🇸
🇺🇾 🇺🇾
🇺🇿 🇺🇿
🇻
🇻🇦 🇻🇦
🇻🇨 🇻🇨
🇻🇪 🇻🇪
@@ -493,11 +514,15 @@
🇻🇮 🇻🇮
🇻🇳 🇻🇳
🇻🇺 🇻🇺
🇼
🇼🇫 🇼🇫
🇼🇸 🇼🇸
🇽
🇽🇰 🇽🇰
🇾
🇾🇪 🇾🇪
🇾🇹 🇾🇹
🇿
🇿🇦 🇿🇦
🇿🇲 🇿🇲
🇿🇼 🇿🇼

View File

@@ -106,8 +106,8 @@ fn custom_openapi_spec() -> OpenApi {
extensions.insert( extensions.insert(
"x-logo".to_owned(), "x-logo".to_owned(),
json!({ json!({
"url": "https://revolt.chat/header.png", "url": "https://stoat.chat/header.png",
"altText": "Revolt Header" "altText": "Stoat Header"
}), }),
); );
@@ -115,7 +115,7 @@ fn custom_openapi_spec() -> OpenApi {
"x-tagGroups".to_owned(), "x-tagGroups".to_owned(),
json!([ json!([
{ {
"name": "Revolt", "name": "Stoat",
"tags": [ "tags": [
"Core" "Core"
] ]
@@ -196,18 +196,21 @@ fn custom_openapi_spec() -> OpenApi {
OpenApi { OpenApi {
openapi: OpenApi::default_version(), openapi: OpenApi::default_version(),
info: Info { info: Info {
title: "Revolt API".to_owned(), title: "Stoat API".to_owned(),
description: Some("Open source user-first chat platform.".to_owned()), description: Some("Open source user-first chat platform.".to_owned()),
terms_of_service: Some("https://revolt.chat/terms".to_owned()), terms_of_service: Some("https://stoat.chat/terms".to_owned()),
contact: Some(Contact { contact: Some(Contact {
name: Some("Revolt Support".to_owned()), name: Some("Stoat".to_owned()),
url: Some("https://revolt.chat".to_owned()), url: Some("https://stoat.chat".to_owned()),
email: Some("contact@revolt.chat".to_owned()), email: Some("contact@stoat.chat".to_owned()),
..Default::default() ..Default::default()
}), }),
license: Some(License { license: Some(License {
name: "AGPLv3".to_owned(), name: "AGPLv3".to_owned(),
url: Some("https://github.com/stoatchat/stoatchat/blob/main/crates/delta/LICENSE".to_owned()), url: Some(
"https://github.com/stoatchat/stoatchat/blob/main/crates/delta/LICENSE"
.to_owned(),
),
..Default::default() ..Default::default()
}), }),
version: env!("CARGO_PKG_VERSION").to_string(), version: env!("CARGO_PKG_VERSION").to_string(),
@@ -215,24 +218,19 @@ fn custom_openapi_spec() -> OpenApi {
}, },
servers: vec![ servers: vec![
Server { Server {
url: "https://api.revolt.chat".to_owned(), url: "https://api.stoat.chat".to_owned(),
description: Some("Revolt Production".to_owned()), description: Some("Stoat Production".to_owned()),
..Default::default() ..Default::default()
}, },
Server { Server {
url: "https://revolt.chat/api".to_owned(), url: "https://beta.stoat.chat/api".to_owned(),
description: Some("Revolt Staging".to_owned()), description: Some("Stoat Beta".to_owned()),
..Default::default()
},
Server {
url: "http://local.revolt.chat:14702".to_owned(),
description: Some("Local Revolt Environment".to_owned()),
..Default::default() ..Default::default()
}, },
], ],
external_docs: Some(ExternalDocs { external_docs: Some(ExternalDocs {
url: "https://developers.revolt.chat".to_owned(), url: "https://developers.stoat.chat".to_owned(),
description: Some("Revolt Developer Documentation".to_owned()), description: Some("Stoat Developer Documentation".to_owned()),
..Default::default() ..Default::default()
}), }),
extensions, extensions,
@@ -247,19 +245,19 @@ fn custom_openapi_spec() -> OpenApi {
Tag { Tag {
name: "Core".to_owned(), name: "Core".to_owned(),
description: Some( description: Some(
"Use in your applications to determine information about the Revolt node" "Use in your applications to determine information about the Stoat node"
.to_owned(), .to_owned(),
), ),
..Default::default() ..Default::default()
}, },
Tag { Tag {
name: "User Information".to_owned(), name: "User Information".to_owned(),
description: Some("Query and fetch users on Revolt".to_owned()), description: Some("Query and fetch users on Stoat".to_owned()),
..Default::default() ..Default::default()
}, },
Tag { Tag {
name: "Direct Messaging".to_owned(), name: "Direct Messaging".to_owned(),
description: Some("Direct message other users on Revolt".to_owned()), description: Some("Direct message other users on Stoat".to_owned()),
..Default::default() ..Default::default()
}, },
Tag { Tag {
@@ -276,7 +274,7 @@ fn custom_openapi_spec() -> OpenApi {
}, },
Tag { Tag {
name: "Channel Information".to_owned(), name: "Channel Information".to_owned(),
description: Some("Query and fetch channels on Revolt".to_owned()), description: Some("Query and fetch channels on Stoat".to_owned()),
..Default::default() ..Default::default()
}, },
Tag { Tag {
@@ -306,7 +304,7 @@ fn custom_openapi_spec() -> OpenApi {
}, },
Tag { Tag {
name: "Server Information".to_owned(), name: "Server Information".to_owned(),
description: Some("Query and fetch servers on Revolt".to_owned()), description: Some("Query and fetch servers on Stoat".to_owned()),
..Default::default() ..Default::default()
}, },
Tag { Tag {
@@ -342,7 +340,7 @@ fn custom_openapi_spec() -> OpenApi {
Tag { Tag {
name: "Onboarding".to_owned(), name: "Onboarding".to_owned(),
description: Some( description: Some(
"After signing up to Revolt, users must pick a unique username".to_owned(), "After signing up to Stoat, users must pick a unique username".to_owned(),
), ),
..Default::default() ..Default::default()
}, },
@@ -354,7 +352,7 @@ fn custom_openapi_spec() -> OpenApi {
Tag { Tag {
name: "Web Push".to_owned(), name: "Web Push".to_owned(),
description: Some( description: Some(
"Subscribe to and receive Revolt push notifications while offline".to_owned(), "Subscribe to and receive Stoat push notifications while offline".to_owned(),
), ),
..Default::default() ..Default::default()
}, },

View File

@@ -21,14 +21,8 @@ async fn main() -> Result<(), std::io::Error> {
// Configure API schema // Configure API schema
#[derive(OpenApi)] #[derive(OpenApi)]
#[openapi( #[openapi(
modifiers(&SecurityAddon), paths(api::root, api::proxy, api::embed),
paths( components(schemas(
api::root,
api::proxy,
api::embed
),
components(
schemas(
api::RootResponse, api::RootResponse,
revolt_result::Error, revolt_result::Error,
revolt_result::ErrorType, revolt_result::ErrorType,
@@ -42,11 +36,11 @@ async fn main() -> Result<(), std::io::Error> {
revolt_models::v0::WebsiteMetadata, revolt_models::v0::WebsiteMetadata,
revolt_models::v0::Text, revolt_models::v0::Text,
revolt_models::v0::Embed revolt_models::v0::Embed
) ))
)
)] )]
struct ApiDoc; struct ApiDoc;
#[allow(dead_code)]
struct SecurityAddon; struct SecurityAddon;
impl Modify for SecurityAddon { impl Modify for SecurityAddon {

View File

@@ -6,7 +6,7 @@ import type { ScalarOptions } from '@scalar/docusaurus';
const config: Config = { const config: Config = {
title: 'Stoat Developers', title: 'Stoat Developers',
tagline: 'Developer documentation for Stoat', tagline: 'Developer documentation for Stoat',
favicon: 'https://stoat.chat/favicon.svg', favicon: 'https://stoat.chat/favicon-stoat.svg',
future: { future: {
v4: true, v4: true,
@@ -80,10 +80,10 @@ const config: Config = {
respectPrefersColorScheme: true, respectPrefersColorScheme: true,
}, },
navbar: { navbar: {
title: 'Stoat Developers',
logo: { logo: {
alt: 'Stoat', alt: 'Stoat for Developers',
src: 'https://stoat.chat/favicon.svg', src: '/img/navbar.light.svg',
srcDark: '/img/navbar.dark.svg'
}, },
items: [ items: [
{ {

9
docs/static/img/navbar.dark.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

22
docs/static/img/navbar.light.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

11
renovate.json Normal file
View File

@@ -0,0 +1,11 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"cloneSubmodules": true,
"cloneSubmodulesFilter": [
"*",
"!packages/client/assets"
]
}