You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Windshift currently supports GitHub and Gitea/Forgejo as SCM providers, but not GitLab. Teams using GitLab cannot connect their repositories to a workspace or use the existing development-panel and SCM automation features.
Although GitLab is mentioned in some UI copy and schema comments, provider_type: gitlab is rejected by the backend. Configuring GitLab as a Gitea provider is not a viable workaround because the API routes, authentication, project identifiers, and merge request payloads differ.
Proposed solution
Add a first-class GitLab SCM provider with support for both GitLab.com and self-managed GitLab instances.
Provider and authentication
Add gitlab as a supported SCM provider type.
Support Personal Access Token and OAuth authentication.
Allow an optional base URL for self-managed GitLab; default to GitLab.com.
Discover and select accessible projects/repositories.
Correctly support nested group paths such as group/subgroup/project.
Repository and merge request integration
List and fetch projects, branches, commits, tags, releases, and merge requests.
Create branches and merge requests from a Windshift item.
Map GitLab merge request states to Windshift's open, merged, and closed states.
Use the GitLab project-scoped merge request IID as the external PR/MR number.
Detect Windshift item keys in merge request titles/descriptions, source branch names, and commit messages.
Display GitLab merge requests, branches, and commits in the item's Development section with correct GitLab URLs.
Support merge request comments/reviews and repository permission checks where the equivalent GitHub/Gitea features are available, including the @agent continuation flow.
Register/delete GitLab webhooks, or document polling as the supported synchronization mechanism.
Tags, releases, and milestones
GitLab should have parity with the existing SCM tag/release workflows:
Implement the provider capabilities required for listing tags, comparing commits between refs, and listing/creating releases.
Allow a GitLab tag or release to be attached to a Windshift milestone/release record.
Preserve the existing scm_tag_created and release-branch automation behavior for GitLab repositories.
Show the linked tag/release and a direct link back to GitLab in the milestone UI.
Allow items referenced by commits between release tags to be associated with the corresponding milestone.
Expected workflow
An administrator configures a GitLab.com or self-managed GitLab provider.
A workspace connects the provider and selects one or more GitLab projects.
A developer creates a branch or merge request containing an item key such as PROJ-123.
Windshift automatically links the branch, commits, and merge request to PROJ-123 and keeps the MR state synchronized.
When a matching release tag is created, existing tag/release automation can create or promote a milestone, attach the GitLab release, and associate shipped items.
Acceptance criteria
GitLab appears as a selectable SCM provider.
PAT and OAuth work with GitLab.com and self-managed GitLab.
Projects in nested groups can be discovered and synchronized.
Branch, commit, and merge request links are detected from Windshift item keys.
Users can create a GitLab branch and merge request from an item.
Merge request status and metadata are displayed and refreshed correctly.
GitLab tags/releases participate in the existing milestone and release automation.
GitLab-specific URLs use /-/merge_requests/, /-/tree/, and /-/commit/ where appropriate.
Provider behavior is covered by unit/integration tests and documented.
Treat GitLab tags and releases as related but distinct entities: a tag may exist without a release, while an associated release should synchronize its name, description, release date, status, assets, and external URL.
Creating a release from Windshift should use an existing Git tag or create it from the selected branch/commit when necessary.
Release synchronization must be idempotent per project and tag name.
Notes
This likely requires a dedicated GitLab provider rather than adapting the Gitea driver. GitLab uses /api/v4/projects/:id/..., URL-encoded project paths, and merge requests instead of the GitHub/Gitea pull request API shape.
Problem
Windshift currently supports GitHub and Gitea/Forgejo as SCM providers, but not GitLab. Teams using GitLab cannot connect their repositories to a workspace or use the existing development-panel and SCM automation features.
Although GitLab is mentioned in some UI copy and schema comments, provider_type: gitlab is rejected by the backend. Configuring GitLab as a Gitea provider is not a viable workaround because the API routes, authentication, project identifiers, and merge request payloads differ.
Proposed solution
Add a first-class GitLab SCM provider with support for both GitLab.com and self-managed GitLab instances.
Provider and authentication
Repository and merge request integration
Tags, releases, and milestones
GitLab should have parity with the existing SCM tag/release workflows:
Expected workflow
Acceptance criteria
Notes
This likely requires a dedicated GitLab provider rather than adapting the Gitea driver. GitLab uses /api/v4/projects/:id/..., URL-encoded project paths, and merge requests instead of the GitHub/Gitea pull request API shape.