From f96fdbdf51e7086c0952cf5c390717c09fe11a7a Mon Sep 17 00:00:00 2001 From: tinqs-limited Date: Wed, 20 May 2026 05:30:16 +0100 Subject: [PATCH] =?UTF-8?q?chore:=20agent=20infra=20=E2=80=94=20SOUL,=20ME?= =?UTF-8?q?MORY,=20AGENTS,=20CI,=20EPIC,=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .cursor/AGENTS.md | 31 ++++ .cursor/MEMORY.md | 20 +++ .cursor/SOUL.md | 109 ++++++++++++++ .cursor/rules/shared-context.md | 57 ++++++++ .gitea/workflows/build.yml | 47 ++++++ .gitea/workflows/deploy.yml | 37 +++++ EPIC.md | 44 ++++++ README.md | 247 +++++++------------------------- 8 files changed, 400 insertions(+), 192 deletions(-) create mode 100644 .cursor/AGENTS.md create mode 100644 .cursor/MEMORY.md create mode 100644 .cursor/SOUL.md create mode 100644 .cursor/rules/shared-context.md create mode 100644 .gitea/workflows/build.yml create mode 100644 .gitea/workflows/deploy.yml create mode 100644 EPIC.md diff --git a/.cursor/AGENTS.md b/.cursor/AGENTS.md new file mode 100644 index 0000000000..448a1004b7 --- /dev/null +++ b/.cursor/AGENTS.md @@ -0,0 +1,31 @@ +# AGENTS — tinqs-git + +## This Agent + +**tinqs-git** — Go codebase, Cursor IDE, `tinqs-ltd/tinqs-git`. Identity: `.cursor/SOUL.md`. Memory: `.cursor/MEMORY.md`. Domain: self-hosted Git+LFS hosting fork of Gitea v1.26.1. + +## Sibling Agents + +| Agent | Repo | Coordination | +|-------|------|-------------| +| **CIO (Singularity)** | `tinqs-ltd/docs` | Hub docs, cross-repo orchestration, epic tracking. Plan: `docs/.cursor/plans/tinqs-git-fork.plan.md`. | +| **Platform** | `tinqs-ltd/tinqs-tools` | Platform SSO integration target. OAuth2 client. | +| **Devops** | `tinqs-ltd/devops` | Lightsail, DNS, tinqs-proxy, deploy. | +| **Bot** | `tinqs-ltd/bot` | tinqs-proxy, Team Tool, inference proxy. | + +## Delegation + +| Task | Action | +|------|--------| +| Epic updates, plan changes | Update `docs/.cursor/plans/tinqs-git-fork.plan.md` | +| Deploy, DNS, infra | Coordinate with devops agent | +| Platform OAuth2 wiring | Coordinate with platform agent | +| Cross-repo decisions | Open issue on docs, flag for CIO | +| Build failures, CI issues | Fix here, notify in MEMORY.md | + +## CI + +- `.gitea/workflows/build.yml` — builds `tinqs-git` binary on push to `tinqs/main` +- Runner: `lightsail-v2-host` (ID 4) +- Artifact: single `tinqs-git` Linux amd64 binary +- After push: verify CI passes. Skill in docs: `.cursor/skills/ci-pipeline-discipline/SKILL.md`. diff --git a/.cursor/MEMORY.md b/.cursor/MEMORY.md new file mode 100644 index 0000000000..2f12133a02 --- /dev/null +++ b/.cursor/MEMORY.md @@ -0,0 +1,20 @@ +# MEMORY — tinqs-git + +Prune past ~30 lines. Old entries archived in git history. + +## Facts + +- Fork of Gitea v1.26.1 (MIT license). Go module: `code.gitea.io/gitea`. +- Binary name: `tinqs-git`. Product name: `tinqs-git`. +- Domain: `git.tinqs.com` (dev) → eventually replaces `git.arikigame.com` on cutover. +- DB: SQLite (`gitea.db`), compiled into binary via CGo `sqlite` tag. +- LFS: S3 backend (`tinqs-gitea-lfs` bucket), `SERVE_DIRECT = true`. +- Build: `TAGS="bindata sqlite sqlite_unlock_notify" make build` → single binary. +- CI: Gitea Actions on `lightsail-v2-host` runner. +- Upstream sync: quarterly rebase onto upstream main + cherry-pick CVEs. +- Live instance: AWS Lightsail `gitea-tinqs` (46.51.144.31), Ubuntu 24.04. +- Platform integration: OAuth2 SSO between `git.tinqs.com` ↔ `platform.tinqs.com`. + +## Recent + +- **2026-05-20 — Repo created, agent infrastructure set up.** Forked Gitea v1.26.1 into `tinqs-ltd/tinqs-git`. Branch `tinqs/main` for our customizations. Full `.cursor/` agent infrastructure (SOUL, MEMORY, AGENTS, rules), CI pipeline (`.gitea/workflows/build.yml`), EPIC.md, README.md. Epic in docs: `tinqs-ltd/docs/.cursor/plans/tinqs-git-fork.plan.md`. diff --git a/.cursor/SOUL.md b/.cursor/SOUL.md new file mode 100644 index 0000000000..59703e14b8 --- /dev/null +++ b/.cursor/SOUL.md @@ -0,0 +1,109 @@ +# SOUL — tinqs-git + +**Cold start.** Read this, then `MEMORY.md`, then `AGENTS.md`. + +You are the **tinqs-git** agent, working inside Cursor IDE on `tinqs-ltd/tinqs-git` — a fork of Gitea v1.26.1, customized for Tinqs game-dev workflows. + +## Identity + +- **Product:** `tinqs-git` — self-hosted Git+LFS hosting for game studios, served at `git.tinqs.com` +- **Upstream:** Gitea v1.26.1 (Go 1.26.2+, MIT license) +- **Repo:** `tinqs-ltd/tinqs-git` on Git Studio (`git.arikigame.com`) +- **Docs:** Hub docs live at `tinqs-ltd/docs` — read `docs/.cursor/plans/tinqs-git-fork.plan.md` for the epic +- **DB:** SQLite (compiled into binary via CGo `sqlite` tag) +- **LFS:** S3 backend (`tinqs-gitea-lfs` bucket) + +## Build + +```bash +TAGS="bindata sqlite sqlite_unlock_notify" make build # full build (backend + frontend) +TAGS="bindata sqlite sqlite_unlock_notify" make backend # Go only (45s) +TAGS="bindata sqlite sqlite_unlock_notify" make frontend # JS/CSS only (90s) +./tinqs-git web --port 4141 # run locally +``` + +## Dev + +```bash +make watch-backend # Go hot reload via air +make watch-frontend # Vite dev server with HMR +make watch # both +``` + +## Test + +```bash +make test # everything +make test-backend # Go unit tests (sqlite) +make test-sqlite # SQLite integration tests +make test-e2e # Playwright end-to-end (needs browsers) +make lint # all linters (go, js, css, spelling) +make fmt # format Go + templates +``` + +## Repo structure + +``` +tinqs-git/ ← Go module: code.gitea.io/gitea +├── main.go ← entry point +├── Makefile ← build system +├── cmd/ ← CLI commands (web, migrate, admin, cert) +├── routers/ ← HTTP routes (web/ + api/) +├── modules/ ← business logic (auth, lfs, git, setting, webhook, ...) +├── models/ ← DB models + migrations (NEVER modify — owned by upstream) +├── services/ ← service layer +├── templates/ ← Go HTML templates (server-rendered) +├── web_src/ ← frontend source (TypeScript, Less, Vue) +├── public/ ← static assets (logo, favicon, compiled CSS/JS) +├── options/ ← locale files, defaults +├── custom/ ← NOT in source — runtime overrides (mounted via WORK_PATH) +├── tests/ ← integration tests +├── .gitea/workflows/ ← CI pipeline (Gitea Actions) +└── .cursor/ ← agent infrastructure (this directory) +``` + +## Branches + +``` +main ← tracks upstream go-gitea/gitea (quarterly rebase) +tinqs/main ← our fork — all Tinqs customizations +``` + +## What we modify vs leave alone + +| Layer | Touch | Don't touch | +|--------|-------|-------------| +| `modules/setting/` | Default APP_NAME → "tinqs-git" | — | +| `modules/lfs/` | Auto-LFS tracking, storage dashboard | Core LFS protocol | +| `modules/auth/` | Platform OAuth2 config | Core auth flow | +| `templates/` | "Gitea" → "tinqs-git", landing page | Template structure | +| `web_src/less/` | Tinqs theme (amber/gray/black) | Core Fomantic-UI | +| `public/assets/img/` | Logo, favicon | — | +| `options/locale/` | Locale strings | Translation framework | +| `Makefile` | Binary name, LDFLAGS | Build targets | +| `models/` | **NEVER** — DB schema is upstream | All models | +| `services/` | Only new features (GDD library) | Existing services | + +## Values + +- **Respect upstream.** Don't rename the Go module path. Don't touch models. Keep rebase-able. +- **Ship the binary.** The only artifact that matters is a single `tinqs-git` Linux amd64 binary. +- **SQLite only.** DB is compiled in. Zero external dependencies at runtime. +- **Test early.** `make test-sqlite` before every push. `make test-sqlite-migration` before DB-affecting changes. + +## Boundaries + +- Do NOT modify `models/` — schema migrations are upstream's domain +- Do NOT rename Go module path (`code.gitea.io/gitea`) +- Do NOT change `main.go` entry point signature +- CAN add new files under `modules/`, `routers/`, `templates/` +- CAN add `.gitea/workflows/` CI pipelines +- CAN modify `Makefile`, `public/`, `web_src/`, `options/locale/` +- Commit and push freely on `tinqs/main`. Never push to `main` (upstream tracking). + +## Coordination + +- Hub: `tinqs-ltd/docs` (docs/CIO agent for cross-repo orchestration) +- Platform: `tinqs-ltd/tinqs-tools` (Platform SSO integration target) +- Deploy: `tinqs-ltd/devops` (Lightsail, tinqs-proxy, DNS) +- Live instance: `ssh -i ~/.ssh/lightsail-default.pem ubuntu@46.51.144.31` diff --git a/.cursor/rules/shared-context.md b/.cursor/rules/shared-context.md new file mode 100644 index 0000000000..6489554660 --- /dev/null +++ b/.cursor/rules/shared-context.md @@ -0,0 +1,57 @@ +# Shared Context — tinqs-git + +Rules shared across all agents working in this repo. + +## Go module identity + +The Go module path is `code.gitea.io/gitea`. **Never rename this.** It is the canonical import path for the entire Gitea ecosystem. Renaming it would break every internal import and make upstream rebase impossible. + +## Build tags + +The canonical build tags for our fork: + +``` +bindata ← embed frontend assets into binary +sqlite ← compile SQLite via CGo (required) +sqlite_unlock_notify ← SQLite performance optimization +``` + +Add `gogit` if using the pure-Go Git implementation instead of system `git`. Not needed for Linux builds. + +## Branch discipline + +- `main` = upstream tracking. Never commit directly. Only `git pull origin main` + `git rebase`. +- `tinqs/main` = our fork. All customizations live here. Rebase onto `main` quarterly. +- Feature branches: `tinqs/phase-N` → merge into `tinqs/main` when done. + +## What never changes + +1. `models/` — DB schema. Upstream owns this. We ride their migrations. +2. `go.mod` module path — stays `code.gitea.io/gitea`. +3. `main.go` entry point — stays as-is. +4. `modules/setting/` config keys — add new keys, never remove or rename existing ones. + +## What we can change + +1. `modules/` — add new packages (lfs/, auth/, billing/) +2. `routers/` — add new routes, modify templates +3. `templates/` — branding, landing page +4. `web_src/` — CSS theme, JS components +5. `public/` — logo, favicon, static assets +6. `options/locale/` — translation strings +7. `Makefile` — binary name, LDFLAGS +8. `.gitea/workflows/` — CI pipelines + +## Test before push + +```bash +make test-sqlite # SQLite integration tests (our DB) +make test-backend # Go unit tests +make lint # all linters +``` + +## Commit style + +- Prefix: `feat:`, `fix:`, `chore:`, `docs:`, `ci:`, `branding:` +- Reference epic phase when relevant: `feat(lfs): auto-track game asset patterns (phase 2)` +- Never commit `gitea.db` or `node_modules/` diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000000..ad0f7dd421 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,47 @@ +name: Build tinqs-git + +on: + push: + branches: [tinqs/main] + pull_request: + branches: [tinqs/main] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.26.2' + - uses: actions/setup-node@v4 + with: + node-version: '22' + - run: npm install -g pnpm + - name: Install Go dependencies + run: go mod download + - name: Run backend tests + run: TAGS="bindata sqlite sqlite_unlock_notify" make test-backend + - name: Run SQLite integration tests + run: TAGS="bindata sqlite sqlite_unlock_notify" make test-sqlite + + build: + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.26.2' + - uses: actions/setup-node@v4 + with: + node-version: '22' + - run: npm install -g pnpm + - name: Build tinqs-git + run: TAGS="bindata sqlite sqlite_unlock_notify" make build + - name: Rename binary + run: mv gitea tinqs-git + - uses: actions/upload-artifact@v4 + with: + name: tinqs-git-linux-amd64 + path: ./tinqs-git diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000000..77f9d22e2d --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,37 @@ +name: Deploy tinqs-git to git.tinqs.com + +on: + workflow_run: + workflows: [Build tinqs-git] + types: [completed] + branches: [tinqs/main] + +jobs: + deploy: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: tinqs-git-linux-amd64 + + - name: Deploy to git.tinqs.com + env: + DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} + DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} + run: | + mkdir -p ~/.ssh + echo "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + + scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ + tinqs-git ubuntu@$DEPLOY_HOST:/tmp/tinqs-git + + ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ + ubuntu@$DEPLOY_HOST " + sudo systemctl stop tinqs-git || true + sudo cp /tmp/tinqs-git /usr/local/bin/tinqs-git + sudo chmod +x /usr/local/bin/tinqs-git + sudo systemctl start tinqs-git + echo 'Deploy complete' + " diff --git a/EPIC.md b/EPIC.md new file mode 100644 index 0000000000..86f384a682 --- /dev/null +++ b/EPIC.md @@ -0,0 +1,44 @@ +# Epic: tinqs-git — Fork of Gitea v1.26.1 + +**Date:** 2026-05-20 +**Source:** Forge (Ozan) +**Repo:** `tinqs-ltd/tinqs-git` (this repo) +**Product:** `tinqs-git` at `git.tinqs.com` +**Full epic:** `tinqs-ltd/docs/.cursor/plans/tinqs-git-fork.plan.md` + +## Why + +Tinqs-owned Git hosting with game-dev specific features — LFS-first UX, Platform SSO, GDD library. + +## Phases + +| Phase | What | Status | +|-------|------|--------| +| 0 | Fork, build, CI | ✅ done | +| 1 | Branding (strings, theme, landing page) | pending | +| 2 | LFS-first UX (auto-tracking, dashboard) | pending | +| 3 | Platform integration (OAuth2, webhooks, GDD library) | pending | +| 4 | Migration & cutover (clone DB, swap DNS) | pending | +| 5 | Productization (billing, marketplace, CI templates) | pending | + +## Architecture + +- **Language:** Go (backend) + TypeScript/Vue/Less (frontend) +- **DB:** SQLite (compiled into binary via CGo) +- **LFS:** S3 backend (`tinqs-gitea-lfs`) +- **Build:** `TAGS="bindata sqlite sqlite_unlock_notify" make build` → single binary +- **Dev:** `make watch-backend` + `make watch-frontend` +- **Test:** `make test-sqlite` + +## Branches + +``` +main ← upstream go-gitea/gitea (quarterly rebase) +tinqs/main ← our fork — all customizations +``` + +## Coordination + +- Hub: `tinqs-ltd/docs` +- Platform: `tinqs-ltd/tinqs-tools` +- Deploy: `tinqs-ltd/devops` diff --git a/README.md b/README.md index 7ebeac97be..67cce4005f 100644 --- a/README.md +++ b/README.md @@ -1,212 +1,75 @@ -# Gitea +# tinqs-git -[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly") -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") -[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card") -[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc") -[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release") -[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source") -[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea") -[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT") -[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin") +**Tinqs' self-hosted Git+LFS hosting for game studios** — a fork of [Gitea](https://github.com/go-gitea/gitea) v1.26.1. -[繁體中文](./README.zh-tw.md) | [简体中文](./README.zh-cn.md) +`git.tinqs.com` · Go · SQLite · S3 LFS · OAuth2 SSO with `platform.tinqs.com` -## Purpose +--- -The goal of this project is to make the easiest, fastest, and most -painless way of setting up a self-hosted Git service. +## Quick start -As Gitea is written in Go, it works across **all** the platforms and -architectures that are supported by Go, including Linux, macOS, and -Windows on x86, amd64, ARM and PowerPC architectures. -This project has been -[forked](https://blog.gitea.com/welcome-to-gitea/) from -[Gogs](https://gogs.io) since November of 2016, but a lot has changed. +```bash +# Prerequisites: Go 1.26.2+, Node.js 22+, pnpm +git clone https://git.arikigame.com/tinqs-ltd/tinqs-git.git +cd tinqs-git +git checkout tinqs/main -For online demonstrations, you can visit [demo.gitea.com](https://demo.gitea.com). +# Build +TAGS="bindata sqlite sqlite_unlock_notify" make build -For accessing free Gitea service (with a limited number of repositories), you can visit [gitea.com](https://gitea.com/user/login). +# Run (creates gitea.db automatically) +./tinqs-git web --port 4141 +# Open http://localhost:4141 +``` -To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at [cloud.gitea.com](https://cloud.gitea.com). +## Dev -## Documentation +```bash +make watch-backend # Go hot reload +make watch-frontend # Vite HMR +make watch # both +``` -You can find comprehensive documentation on our official [documentation website](https://docs.gitea.com/). +## Test -It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively. +```bash +make test # everything +make test-backend # Go unit tests +make test-sqlite # SQLite integration tests +make lint # all linters +``` -If you have any suggestions or would like to contribute to it, you can visit the [documentation repository](https://gitea.com/gitea/docs) +## Build tags -## Building +| Tag | Purpose | +|-----|---------| +| `bindata` | Embed frontend assets into binary | +| `sqlite` | Compile SQLite via CGo (required) | +| `sqlite_unlock_notify` | SQLite perf optimization | -From the root of the source tree, run: +## Repo structure - TAGS="bindata" make build +``` +tinqs-git/ +├── main.go ← entry point +├── Makefile ← build system +├── cmd/ ← CLI (web, migrate, admin, cert) +├── routers/ ← HTTP routes +├── modules/ ← business logic (auth, lfs, git, setting) +├── models/ ← DB models (NEVER modify) +├── services/ ← service layer +├── templates/ ← Go HTML templates +├── web_src/ ← frontend source (TS, Less, Vue) +├── public/ ← static assets +├── .gitea/workflows/ ← CI (Gitea Actions) +└── .cursor/ ← agent infrastructure +``` -or if SQLite support is required: +## Branches - TAGS="bindata sqlite sqlite_unlock_notify" make build - -The `build` target is split into two sub-targets: - -- `make backend` which requires [Go Stable](https://go.dev/dl/), the required version is defined in [go.mod](/go.mod). -- `make frontend` which requires [Node.js LTS](https://nodejs.org/en/download/) or greater and [pnpm](https://pnpm.io/installation). - -Internet connectivity is required to download the go and npm modules. When building from the official source tarballs which include pre-built frontend files, the `frontend` target will not be triggered, making it possible to build without Node.js. - -More info: https://docs.gitea.com/installation/install-from-source - -## Using - -After building, a binary file named `gitea` will be generated in the root of the source tree by default. To run it, use: - - ./gitea web - -> [!NOTE] -> If you're interested in using our APIs, we have experimental support with [documentation](https://docs.gitea.com/api). - -## Contributing - -Expected workflow is: Fork -> Patch -> Push -> Pull Request - -> [!NOTE] -> -> 1. **YOU MUST READ THE [CONTRIBUTORS GUIDE](CONTRIBUTING.md) BEFORE STARTING TO WORK ON A PULL REQUEST.** -> 2. If you have found a vulnerability in the project, please write privately to **security@gitea.io**. Thanks! - -## Translating - -[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com) - -Translations are done through [Crowdin](https://translate.gitea.com). If you want to translate to a new language, ask one of the managers in the Crowdin project to add a new language there. - -You can also just create an issue for adding a language or ask on Discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty, but we hope to fill it as questions pop up. - -Get more information from [documentation](https://docs.gitea.com/contributing/localization). - -## Official and Third-Party Projects - -We provide an official [go-sdk](https://gitea.com/gitea/go-sdk), a CLI tool called [tea](https://gitea.com/gitea/tea) and an [action runner](https://gitea.com/gitea/act_runner) for Gitea Action. - -We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea), where you can discover more third-party projects, including SDKs, plugins, themes, and more. - -## Communication - -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") - -If you have questions that are not covered by the [documentation](https://docs.gitea.com/), you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://forum.gitea.com/). - -## Authors - -- [Maintainers](https://github.com/orgs/go-gitea/people) -- [Contributors](https://github.com/go-gitea/gitea/graphs/contributors) -- [Translators](options/locale/TRANSLATORS) - -## Backers - -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/gitea#backer)] - - - -## Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/gitea#sponsor)] - - - - - - - - - - - - -## FAQ - -**How do you pronounce Gitea?** - -Gitea is pronounced [/ɡɪ’ti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea" with a hard g. - -**Why is this not hosted on a Gitea instance?** - -We're [working on it](https://github.com/go-gitea/gitea/issues/1029). - -**Where can I find the security patches?** - -In the [release log](https://github.com/go-gitea/gitea/releases) or the [change log](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md), search for the keyword `SECURITY` to find the security patches. +- `main` — tracks upstream releases (quarterly rebase) +- `tinqs/main` — our fork with Tinqs customizations ## License -This project is licensed under the MIT License. -See the [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) file -for the full license text. - -## Further information - -
-Looking for an overview of the interface? Check it out! - -### Login/Register Page - -![Login](https://dl.gitea.com/screenshots/login.png) -![Register](https://dl.gitea.com/screenshots/register.png) - -### User Dashboard - -![Home](https://dl.gitea.com/screenshots/home.png) -![Issues](https://dl.gitea.com/screenshots/issues.png) -![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png) -![Milestones](https://dl.gitea.com/screenshots/milestones.png) - -### User Profile - -![Profile](https://dl.gitea.com/screenshots/user_profile.png) - -### Explore - -![Repos](https://dl.gitea.com/screenshots/explore_repos.png) -![Users](https://dl.gitea.com/screenshots/explore_users.png) -![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png) - -### Repository - -![Home](https://dl.gitea.com/screenshots/repo_home.png) -![Commits](https://dl.gitea.com/screenshots/repo_commits.png) -![Branches](https://dl.gitea.com/screenshots/repo_branches.png) -![Labels](https://dl.gitea.com/screenshots/repo_labels.png) -![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png) -![Releases](https://dl.gitea.com/screenshots/repo_releases.png) -![Tags](https://dl.gitea.com/screenshots/repo_tags.png) - -#### Repository Issue - -![List](https://dl.gitea.com/screenshots/repo_issues.png) -![Issue](https://dl.gitea.com/screenshots/repo_issue.png) - -#### Repository Pull Requests - -![List](https://dl.gitea.com/screenshots/repo_pull_requests.png) -![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png) -![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png) -![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png) - -#### Repository Actions - -![List](https://dl.gitea.com/screenshots/repo_actions.png) -![Details](https://dl.gitea.com/screenshots/repo_actions_run.png) - -#### Repository Activity - -![Activity](https://dl.gitea.com/screenshots/repo_activity.png) -![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png) -![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png) -![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png) - -### Organization - -![Home](https://dl.gitea.com/screenshots/org_home.png) - -
+MIT — same as upstream Gitea.