Add a GitLab adapter #137

Closed
opened 2026-10-12 07:47:38 -05:00 by deadstyle · 2 comments
Owner

Problem

lazyforge supports Forgejo, Gitea and GitHub. Add a GitLab adapter so it works against gitlab.com and self-managed GitLab. The PM asked for it on 2026-10-12, ahead of the post-v1 items design.md lists before it (diffs in the Files tab, box [4]).

Acceptance criteria

  • A user can onboard a GitLab host (gitlab.com or self-managed) and use every feature that works on GitHub: repo list, boxes [1]–[3], the Repo box, details, ★ Renovate, merge, approve, close, comment, labels, update (u), open in browser (PM, 2026-10-12; design.md → v1 scope, Keymap).
  • All children below are merged or closed with evidence.

Tracking

Tracking issue, too big for one MR.

# Child Driver Depends on
#138 Client and core Forge methods, Approver, ADR 0018 opus none
#139 Pipelines, jobs, job logs and labels sonnet #138
#140 Repo box (README, branches, commits, files) and update branch sonnet #138
#141 Connect to GitLab from onboarding and the host picker; design.md + README sonnet #138
#142 Run Renovate now on GitLab sonnet #138
#145 Name box [3] on GitLab hosts sonnet #139
#143 Inline images on GitLab opus #138

#138 first; the rest are independent of each other afterwards. Close this when the last child lands.

Context

  • API research done 2026-10-12 against docs.gitlab.com (summarised in #138's Context). No live GitLab account is wired up yet, so fixtures are synthesised from the docs and the architecture.md GitLab column stays "unverified" row by row until someone runs it against gitlab.com. The employer GitLab instance is never used for this project.
  • gitlab.com's Free tier drops to 100 API requests a minute from 2026-10-19 (GitLab blog), so request cost matters even more than on GitHub.
## Problem lazyforge supports Forgejo, Gitea and GitHub. Add a GitLab adapter so it works against gitlab.com and self-managed GitLab. The PM asked for it on 2026-10-12, ahead of the post-v1 items design.md lists before it (diffs in the Files tab, box `[4]`). ## Acceptance criteria - A user can onboard a GitLab host (gitlab.com or self-managed) and use every feature that works on GitHub: repo list, boxes `[1]`–`[3]`, the Repo box, details, ★ Renovate, merge, approve, close, comment, labels, update (`u`), open in browser *(PM, 2026-10-12; design.md → v1 scope, Keymap)*. - All children below are merged or closed with evidence. ## Tracking Tracking issue, too big for one MR. | # | Child | Driver | Depends on | |---|---|---|---| | #138 | Client and core Forge methods, Approver, ADR 0018 | opus | none | | #139 | Pipelines, jobs, job logs and labels | sonnet | #138 | | #140 | Repo box (README, branches, commits, files) and update branch | sonnet | #138 | | #141 | Connect to GitLab from onboarding and the host picker; design.md + README | sonnet | #138 | | #142 | Run Renovate now on GitLab | sonnet | #138 | | #145 | Name box `[3]` on GitLab hosts | sonnet | #139 | | #143 | Inline images on GitLab | opus | #138 | #138 first; the rest are independent of each other afterwards. Close this when the last child lands. ## Context - API research done 2026-10-12 against docs.gitlab.com (summarised in #138's Context). No live GitLab account is wired up yet, so fixtures are synthesised from the docs and the architecture.md GitLab column stays "unverified" row by row until someone runs it against gitlab.com. The employer GitLab instance is never used for this project. - gitlab.com's Free tier drops to 100 API requests a minute from 2026-10-19 (GitLab blog), so request cost matters even more than on GitHub.
Author
Owner

🤖 Status: #138 (#144), #139 (#148), #140 (#147), #141 (#146) and #143 (#149) are merged. Left: #145 (box [3] name on GitLab) and #142 (N on GitLab), both waiting on a product answer in their comments.

🤖 Status: #138 (#144), #139 (#148), #140 (#147), #141 (#146) and #143 (#149) are merged. Left: #145 (box `[3]` name on GitLab) and #142 (`N` on GitLab), both waiting on a product answer in their comments.
Author
Owner

🤖 All children merged into develop: #138 (MR #144), #141 (#146), #140 (#147), #139 (#148), #143 (#149), #145 (#150), #142 (#151). Every GitLab row in architecture.md stays marked unverified until it runs against gitlab.com with a real token.

🤖 All children merged into develop: #138 (MR #144), #141 (#146), #140 (#147), #139 (#148), #143 (#149), #145 (#150), #142 (#151). Every GitLab row in architecture.md stays marked unverified until it runs against gitlab.com with a real token.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
deadstyle/lazyforge#137
No description provided.