diff --git a/packages/frontend/src/pages/Setup.tsx b/packages/frontend/src/pages/Setup.tsx index f4d4173..ff7b371 100644 --- a/packages/frontend/src/pages/Setup.tsx +++ b/packages/frontend/src/pages/Setup.tsx @@ -5,7 +5,7 @@ import { api } from "../services/api"; const STEP_NAMES = [ "Welcome", "Prerequisites", - "GitHub PAT", + "Gitea Token", "Workspace", "NWN Home", "Fork Repos", @@ -118,7 +118,7 @@ function WelcomeStep({ onNext }: StepProps) { Welcome to Layonara Forge

- This wizard will walk you through setting up your local NWN development environment — Docker, GitHub + This wizard will walk you through setting up your local NWN development environment — Docker, Gitea access, workspace initialization, repository cloning, and database seeding.

@@ -183,8 +183,8 @@ function PrerequisitesStep({ onNext, onBack }: StepProps) { ); } -function GitHubPatStep({ onNext, onBack }: StepProps) { - const [pat, setPat] = useState(""); +function GiteaTokenStep({ onNext, onBack }: StepProps) { + const [token, setToken] = useState(""); const [username, setUsername] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); @@ -193,9 +193,9 @@ function GitHubPatStep({ onNext, onBack }: StepProps) { setLoading(true); setError(""); try { - const { login } = await api.github.validatePat(pat); + const { login } = await api.github.validatePat(token); setUsername(login); - await api.workspace.updateConfig({ githubPat: pat }); + await api.workspace.updateConfig({ githubPat: token }); } catch (err) { setError(err instanceof Error ? err.message : "Validation failed"); } finally { @@ -206,17 +206,25 @@ function GitHubPatStep({ onNext, onBack }: StepProps) { return (

- GitHub Personal Access Token + Gitea Access Token

- A PAT with repo scope is needed to fork and push to Layonara repositories. + A Gitea token is needed to fork and push to Layonara repositories. Generate one at{" "} + + gitea.layonara.com/user/settings/applications +

setPat(e.target.value)} - placeholder="ghp_..." + value={token} + onChange={(e) => setToken(e.target.value)} + placeholder="Enter your Gitea token" className="flex-1 rounded px-3 py-2 text-sm" style={{ backgroundColor: "var(--forge-bg)", @@ -226,7 +234,7 @@ function GitHubPatStep({ onNext, onBack }: StepProps) { />
))} +
+
+

+ plenarius/unified +

+

+ Read-only from GitHub (no fork needed) +

+
+ + Read-only + +
@@ -430,7 +454,8 @@ function CloneReposStep({ onNext, onBack }: StepProps) { Clone Repositories

- Clone all forked repositories into the workspace. + Clone all repositories into the workspace. Gitea repos clone from your fork; unified clones directly from + GitHub (public, read-only).

{repos.map((repo) => ( @@ -447,6 +472,11 @@ function CloneReposStep({ onNext, onBack }: StepProps) { {repo} + {repo === "unified" && ( + + (GitHub, read-only) + + )} {errors[repo] && ( {errors[repo]} @@ -665,7 +695,7 @@ export function Setup() { const stepComponents = [ , , - , + , , , ,