# Phase 6: Gitea Integration **Status:** ⬜ Not Started **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** backend ## Objective Implement Gitea integration to display recent commits, open pull requests, CI/CD status, and releases from Gitea instances. ## Tasks - [ ] Task 1: Create `src/lib/server/integrations/gitea/schema.ts` — Zod schemas for auth config (`{ apiToken: string, repos?: string[] }`) and endpoint responses. - [ ] Task 2: Create `src/lib/server/integrations/gitea/client.ts` — HTTP client for Gitea API v1. Auth via `Authorization: token ` header. Endpoints: `/api/v1/repos/search`, `/api/v1/repos/{owner}/{repo}/commits`, `/api/v1/repos/{owner}/{repo}/pulls`, `/api/v1/repos/{owner}/{repo}/releases`, `/api/v1/repos/{owner}/{repo}/actions/runners`. - [ ] Task 3: Create `src/lib/server/integrations/gitea/transform.ts` — Transform: commits → list with author/message/date, PRs → stat-card (open count) + list, CI → list with pass/fail badges, releases → list with tag/date. - [ ] Task 4: Create `src/lib/server/integrations/gitea/index.ts` — Integration implementation. Endpoints: `recent-commits` (list), `open-prs` (stat-card), `ci-status` (list), `releases` (list). testConnection: fetch authenticated user. - [ ] Task 5: Register Gitea integration in registry. ## Files to Modify/Create - `src/lib/server/integrations/gitea/schema.ts` — new - `src/lib/server/integrations/gitea/client.ts` — new - `src/lib/server/integrations/gitea/transform.ts` — new - `src/lib/server/integrations/gitea/index.ts` — new - `src/lib/server/integrations/registry.ts` — modify: register Gitea ## Acceptance Criteria - Recent commits across repos with author, message, timestamp - Open PR count as stat-card, PR list with title/author/repo - CI/CD status with workflow name and pass/fail badge - Releases list with tag, name, and date - Optional repo filter (if configured, only show data from those repos) - Test connection validates API token ## Notes - If `repos` config is empty, auto-discover all accessible repos - Limit commits/PRs to last N per repo for performance - CI status depends on Gitea Actions being enabled (act-runner) - API pagination: use `?limit=N&page=1` parameters ## Review Checklist - [ ] All tasks completed - [ ] Handles empty repos list (auto-discovery) - [ ] Code follows project conventions ## Handoff to Next Phase