Gitea Pull RequestGitea Pull Request is a Visual Studio Code extension by zheddhe for working with pull requests, reviews, issues and CI context on self-hosted Gitea instances. The product uses a sidebar-first workflow inspired by the ergonomics of GitHub Pull Requests for VS Code while remaining implemented specifically for Gitea and its REST API. Current release lineThe standalone product line uses roadmap phases as minor-version boundaries while the extension is still pre-
Patch releases are reserved for corrections within an existing phase boundary. See Product directionThe normal workflow is split across two Activity Bar workspaces:
The first workspace is the general Gitea/forge browser. The second is contextual and follows the currently active pull request through review, merge and post-merge cleanup. On first entry into the Gitea workspace, detected repository groups plus All Open and Waiting for my review are expanded by default so the primary open and assigned/review queues are immediately visible. The dedicated Gitea Pull Request Activity Bar icon is deliberately distinct from the official GitHub Pull Requests icon so both extensions can coexist without relying on color alone for identification. Current features
Multi-VCS coexistenceGitea Pull Request is designed to coexist with GitHub Pull Requests and Issues and other forge integrations in the same VS Code installation/workspace. Repository discovery is scoped to configured/authenticated Gitea endpoints and excludes public GitHub, GitLab, Bitbucket and Azure DevOps hosts from implicit Gitea detection. A GitHub repository therefore remains managed by the GitHub extension while Gitea repositories are handled by this extension. Two Gitea-specific Activity Bar containers separate general forge browsing from the active pull-request lifecycle. Their icons are monochrome/theme-compatible and intentionally distinguish both Gitea workspaces from GitHub Pull Requests. Architecture principles
Requirements
Version Recommended Gitea token permissions
Development and local installationDevelopment build, dependency locking, validation, packaging and local installation are centralized in the repository The packaging tool is pinned to After a fresh clone, or after modifying
Normal validation:
Build and reinstall the local VSIX:
Generated packages are stored under:
Release promotionPhase development stays on the last merged release version until implementation and documentation are ready for the release gate. Promote explicitly with:
For Phase 6:
This updates Useful targets:
ConfigurationRun
Existing command and configuration identifiers remain under the stable Pull request workflowGeneral Gitea workspaceThe Gitea Activity Bar workspace is the discovery/forge view. It contains Pull Requests, Create Pull Request, Issues and CI / Actions. Pull Requests are grouped by repository and categories such as All Open, Waiting for my review and Created by me. On first entry the repository, All Open and Waiting for my review nodes are expanded so actionable work is visible immediately; users may collapse them afterwards normally. The current Waiting for my review category uses the available Gitea assignment signals as its discovery heuristic. Exact review state remains authoritative in the contextual review workflow. Create Pull RequestThe primary creation path opens a dedicated sidebar WebviewView in the general Gitea workspace. Create mode uses temporary view IDs so its focused layout does not overwrite the user's normal Pull Requests / Issues / CI proportions. It supports:
The title starts empty rather than being inferred from the branch name. Projects remain intentionally omitted while reliable PR ↔ Project API read/write support is unavailable. Activate and refresh a pull requestActivating a PR establishes the active Gitea PR session, focuses the dedicated Gitea Pull Request Activity Bar workspace and opens the PR Detail panel. The contextual Changes and Review views expose the same title-action pattern:
Refresh reloads the PR itself and rebinds Changes in Pull Request. Additional pushed commits therefore update the diff when Refresh is invoked instead of retaining stale cached state. Refresh remains explicit; the extension does not use aggressive polling. Changes in Pull RequestThe Changes in Pull Request tree follows the active session and exposes branch identity, commits, reviews and changed files using native VS Code tree/file presentation, viewed-state checkboxes and the native diff editor. An empty diff is a valid loaded state. If the head is already contained in the target branch, the view remains stable and merge is blocked as having no content left to merge. Review Pull RequestThe contextual Review Pull Request #N (owner/repository) view is intentionally action-oriented. Its sections follow the review workflow:
Top-level PR discussion comments are intentionally kept in PR Detail rather than duplicated in the sidebar Review view. Mergeability is presented separately where possible:
The extension does not fabricate exact conflicting-file details when the supported Gitea API cannot provide them reliably. PR DetailPR Detail is the richer inspection/discussion surface and keeps its active tab across refreshes. Its tabs are:
The PR title, description and discussion comments can be edited inline. Description/comments are rendered using VS Code's Markdown renderer, with explicit HTTP(S) link handling. Browser and Refresh actions are kept next to the title. After mergeAfter successful merge the active Changes/Review views are replaced in the contextual workspace by Pull Request #N Merged. The post-merge workflow:
No branch is deleted merely because its name resembles the PR head; deletion uses resolved repository-local Git identities. IssuesIssues stay in the general Gitea workspace. A native TreeView/QuickPick control switches between Open and Closed issue scopes. Issue children keep View Details first for fast access, followed by contextual metadata/browser entries. Issue Detail provides:
Close/Re-open remain issue workflow commands rather than being duplicated inside the detail panel. Notifications/activity feed, saved queries and broader issue search are intentionally deferred because they do not currently justify the added UI/state complexity. CI / ActionsGeneral CI / Actions remains in the main Gitea workspace and supports workflow runs, job status, logs, reruns and cancellation. PR-specific checks are also surfaced in the contextual Review view with explicit external links when Gitea provides a target URL. Project originGitea Pull Request is an independent product/version line originating from an earlier MIT-licensed Gitea VS Code extension codebase and a short-lived enhanced fork. The standalone changelog begins at Inherited copyright/license attribution remains preserved. Contributions intended for the predecessor project should be prepared separately from the appropriate historical fork baseline. Development roadmapSee
Each phase is reviewed as a coherent release increment: implementation/tests, package + lock metadata, changelog, user documentation, roadmap/Story, Make validation and local VSIX validation must agree before merge. ContributingSee CONTRIBUTING.md. LicenseMIT. See LICENSE. Existing copyright and license notices are preserved as required by the license. |