From d12ea701784ed11b37bbc81ff5e694685910b438 Mon Sep 17 00:00:00 2001
From: javery556 <128285906+javery556@users.noreply.github.com>
Date: Wed, 18 Mar 2026 22:32:55 +1100
Subject: [PATCH 1/3] feat: add Gitea account auth in integrations settings
---
Cargo.lock | 16 ++
Cargo.toml | 3 +
.../src/components/GiteaAccountBadge.svelte | 27 +++
.../src/components/GiteaIntegration.svelte | 173 ++++++++++++++++
.../src/components/GiteaUserLoginState.svelte | 70 +++++++
.../IntegrationsSettings.svelte | 2 +
apps/desktop/src/lib/bootstrap/deps.ts | 3 +
.../forge/gitea/giteaUserService.svelte.ts | 121 +++++++++++
.../lib/forge/gitea/giteaUserService.test.ts | 38 ++++
apps/desktop/src/lib/state/tags.ts | 1 +
crates/but-api/Cargo.toml | 1 +
crates/but-api/src/gitea.rs | 54 +++++
crates/but-api/src/lib.rs | 3 +
crates/but-forge-storage/src/controller.rs | 49 +++++
crates/but-forge-storage/src/settings.rs | 28 +++
crates/but-gitea/Cargo.toml | 32 +++
crates/but-gitea/src/client.rs | 105 ++++++++++
crates/but-gitea/src/lib.rs | 191 +++++++++++++++++
crates/but-gitea/src/token.rs | 193 ++++++++++++++++++
crates/but-server/src/lib.rs | 14 +-
crates/gitbutler-tauri/src/main.rs | 7 +-
packages/core/src/generated/gitea/index.ts | 5 +
packages/core/src/generated/gitea/token.ts | 3 +
packages/core/src/generated/index.ts | 2 +
24 files changed, 1139 insertions(+), 2 deletions(-)
create mode 100644 apps/desktop/src/components/GiteaAccountBadge.svelte
create mode 100644 apps/desktop/src/components/GiteaIntegration.svelte
create mode 100644 apps/desktop/src/components/GiteaUserLoginState.svelte
create mode 100644 apps/desktop/src/lib/forge/gitea/giteaUserService.svelte.ts
create mode 100644 apps/desktop/src/lib/forge/gitea/giteaUserService.test.ts
create mode 100644 crates/but-api/src/gitea.rs
create mode 100644 crates/but-gitea/Cargo.toml
create mode 100644 crates/but-gitea/src/client.rs
create mode 100644 crates/but-gitea/src/lib.rs
create mode 100644 crates/but-gitea/src/token.rs
create mode 100644 packages/core/src/generated/gitea/index.ts
create mode 100644 packages/core/src/generated/gitea/token.ts
diff --git a/Cargo.lock b/Cargo.lock
index 4e2f1538958..f6670681541 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -881,6 +881,7 @@ dependencies = [
"but-forge",
"but-forge-storage",
"but-gerrit",
+ "but-gitea",
"but-github",
"but-gitlab",
"but-graph",
@@ -1207,6 +1208,21 @@ dependencies = [
"snapbox",
]
+[[package]]
+name = "but-gitea"
+version = "0.0.0"
+dependencies = [
+ "anyhow",
+ "but-error",
+ "but-forge-storage",
+ "but-schemars",
+ "but-secret",
+ "reqwest 0.12.28",
+ "schemars 1.2.1",
+ "serde",
+ "ts-rs",
+]
+
[[package]]
name = "but-github"
version = "0.0.0"
diff --git a/Cargo.toml b/Cargo.toml
index e263193e138..50f70af5250 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -67,6 +67,8 @@ members = [
# 👉lacks top-level docs and docs.
"crates/but-gitlab", # 📄A thin wrapper of the GitLab API, for authentication and resource access.
# 👉No tests, lacks top-level docs, purpose somewhat unclear.
+ "crates/but-gitea", # 📄A thin wrapper of the Gitea API, for authentication and resource access.
+ # 👉No tests, lacks top-level docs, purpose somewhat unclear.
"crates/but-cursor", # 📄Integration with Cursor
# 👉Kind of no docs, no tests, and unclear purpose.
"crates/but-forge", # 📄A generalised interface to communicate with forges.
@@ -174,6 +176,7 @@ but-cherry-apply = { path = "crates/but-cherry-apply" }
but-irc = { path = "crates/but-irc" }
but-github = { path = "crates/but-github" }
but-gitlab = { path = "crates/but-gitlab" }
+but-gitea = { path = "crates/but-gitea" }
but-error = { path = "crates/but-error" }
but-serde = { path = "crates/but-serde" }
but-schemars = { path = "crates/but-schemars" }
diff --git a/apps/desktop/src/components/GiteaAccountBadge.svelte b/apps/desktop/src/components/GiteaAccountBadge.svelte
new file mode 100644
index 00000000000..49bce4a609b
--- /dev/null
+++ b/apps/desktop/src/components/GiteaAccountBadge.svelte
@@ -0,0 +1,27 @@
+
+
+
+ 🔒 Credentials are persisted locally in your OS Keychain / Credential Manager. +
+ + diff --git a/apps/desktop/src/components/GiteaUserLoginState.svelte b/apps/desktop/src/components/GiteaUserLoginState.svelte new file mode 100644 index 00000000000..7306e74ae82 --- /dev/null +++ b/apps/desktop/src/components/GiteaUserLoginState.svelte @@ -0,0 +1,70 @@ + + +