Tracker: forge backend abilities #367

Open
opened 2026-04-20 15:58:11 +00:00 by barrettruth · 0 comments
barrettruth commented 2026-04-20 15:58:11 +00:00

Tracker: unresolved forge backend abilities

Problem

:h forge-compatibility defines Forge's expected backend capability surface,
but there is no single tracker that keeps the full matrix and any concrete
upstream blockers together.

The matrix below is copied from the current vimdoc compatibility table and
seeded with the upstream trackers we know today.

Proposed solution

Keep the full vimdoc-derived matrix here and add upstream tracker links only
where there is a concrete external dependency.

Ability GitHub GitLab Forgejo Tracked upstream
PR list/filter yes yes yes
PR create yes yes yes
PR create (draft) yes yes yes (WIP) (7) forgejo/forgejo#12206
PR template selection yes yes single only
PR draft toggle yes yes yes (WIP) (7) forgejo/forgejo#12206
PR add/remove reviewer yes yes yes
PR add/remove label yes yes yes
PR add assignee yes yes yes
PR remove assignee yes yes no (1) gitea/tea#965
PR set/clear milestone yes yes yes
Issue add/remove label yes yes yes
Issue add assignee yes yes yes
Issue remove assignee yes yes no (8) gitea/tea#966
Issue set/clear milestone yes yes yes
Per-PR CI checks yes yes yes (2)
Per-check log viewing yes yes partial (9) forgejo/forgejo#11859
Per-job live watch no (6) yes no (9) cli/cli#3484; forgejo/forgejo#11859
CI runs (repo-wide) yes yes yes
CI cancel yes yes yes (5)
CI rerun yes yes (4) no (10) go-gitea/gitea#37223
Issue create / edit / list yes yes yes
Branches / commits yes yes yes
Worktrees yes yes yes
Release list / browse yes yes yes
Release delete yes yes yes
Release draft/prerelease yes no (3) yes gitlab-org/gitlab#517424; gitlab-org/gitlab#32589
Browse yes yes yes
Source URL yank yes yes yes

Notes copied from :h forge-compatibility:

  • (1) tea pr edit only exposes --add-assignees; removing or clearing
    PR assignees is tracked by gitea/tea#965.
  • (2) Forgejo per-PR checks show external commit statuses. Browse opens the
    provider page; log viewing requires forge-native CI.
  • (3) GitLab releases currently expose released_at / upcoming_release,
    but no draft or prerelease release field. Draft release support is tracked
    by gitlab-org/gitlab#517424;
    prerelease release support is tracked by
    gitlab-org/gitlab#32589.
  • (4) GitLab rerun retries failed and cancelled jobs only. Cancel uses
    glab ci cancel pipeline.
  • (5) Forgejo cancel uses the documented tea actions runs delete --confirm
    command. Some self-hosted instances may still reject the command with
    404 or 405 responses.
  • (6) gh run watch only supports live watch at the run level. When opening a
    job during an active watch, Forge falls back to a refreshing job log. Tracked
    by cli/cli#3484.
  • (7) Forgejo still treats draft pull requests as WIP title prefixes rather
    than a native toggleable draft/ready state. Forge keeps the user-facing
    draft and ready vocabulary, but maps those actions to the default
    WIP:/[WIP] title-prefix mode. Native Forgejo draft state is tracked
    by forgejo/forgejo#12206,
    which tracks go-gitea/gitea#30600.
  • (8) tea issues edit only exposes --add-assignees; removing or
    clearing issue assignees is tracked by
    gitea/tea#966.
  • (9) Forgejo does not expose first-class Actions job log API endpoints in
    current releases. Forge uses the web log endpoint for forge-native Actions
    logs and keeps in-progress buffers refreshing while jobs are not available
    yet. Upstream API support is tracked by
    forgejo/forgejo#11859.
  • (10) Forgejo rerun remains hidden because tea does not expose a documented
    workflow-run rerun command. Upstream Gitea job-rerun behavior is
    tracked by go-gitea/gitea#37223.

Known tracked rows:

  • forgejo/forgejo#12206
    tracks replacing WIP-prefix PR draft semantics with a first-class
    draft/ready state for Forgejo, and points at
    go-gitea/gitea#30600
    upstream. This maps onto the current Forgejo PR create (draft) and
    PR draft toggle rows.
  • forgejo/forgejo#11859
    tracks first-class Actions job and log API endpoints. Forge currently uses
    the web log endpoint as a Forgejo fallback, which maps onto the current
    Forgejo Per-check log viewing and Per-job live watch rows.
  • go-gitea/gitea#37223
    tracks active-run job rerun eligibility and maps onto the current Forgejo
    CI rerun row.
  • cli/cli#3484 tracks log streaming
    for gh run watch, which maps onto the GitHub Per-job live watch row.
  • gitea/tea#965 tracks adding a
    remove/clear assignee path to tea pr edit, which maps onto the current
    Forgejo PR remove assignee row.
  • gitea/tea#966 tracks adding a
    remove/clear assignee path to tea issues edit, which maps onto the current
    Forgejo Issue remove assignee row.
  • gitlab-org/gitlab#517424
    tracks draft releases without a tag, which maps onto the draft half of the
    current GitLab Release draft/prerelease row.
  • gitlab-org/gitlab#32589
    tracks adding a prerelease release type, which maps onto the prerelease half
    of the current GitLab Release draft/prerelease row.
# Tracker: unresolved forge backend abilities ## Problem `:h forge-compatibility` defines Forge's expected backend capability surface, but there is no single tracker that keeps the full matrix and any concrete upstream blockers together. The matrix below is copied from the current vimdoc compatibility table and seeded with the upstream trackers we know today. ## Proposed solution Keep the full vimdoc-derived matrix here and add upstream tracker links only where there is a concrete external dependency. | Ability | GitHub | GitLab | Forgejo | Tracked upstream | | --- | --- | --- | --- | --- | | PR list/filter | yes | yes | yes | — | | PR create | yes | yes | yes | — | | PR create (draft) | yes | yes | yes (WIP) (7) | [forgejo/forgejo#12206](https://codeberg.org/forgejo/forgejo/issues/12206) | | PR template selection | yes | yes | single only | — | | PR draft toggle | yes | yes | yes (WIP) (7) | [forgejo/forgejo#12206](https://codeberg.org/forgejo/forgejo/issues/12206) | | PR add/remove reviewer | yes | yes | yes | — | | PR add/remove label | yes | yes | yes | — | | PR add assignee | yes | yes | yes | — | | PR remove assignee | yes | yes | no (1) | [gitea/tea#965](https://gitea.com/gitea/tea/issues/965) | | PR set/clear milestone | yes | yes | yes | — | | Issue add/remove label | yes | yes | yes | — | | Issue add assignee | yes | yes | yes | — | | Issue remove assignee | yes | yes | no (8) | [gitea/tea#966](https://gitea.com/gitea/tea/issues/966) | | Issue set/clear milestone | yes | yes | yes | — | | Per-PR CI checks | yes | yes | yes (2) | — | | Per-check log viewing | yes | yes | partial (9) | [forgejo/forgejo#11859](https://codeberg.org/forgejo/forgejo/issues/11859) | | Per-job live watch | no (6) | yes | no (9) | [cli/cli#3484](https://github.com/cli/cli/issues/3484); [forgejo/forgejo#11859](https://codeberg.org/forgejo/forgejo/issues/11859) | | CI runs (repo-wide) | yes | yes | yes | — | | CI cancel | yes | yes | yes (5) | — | | CI rerun | yes | yes (4) | no (10) | [go-gitea/gitea#37223](https://github.com/go-gitea/gitea/pull/37223) | | Issue create / edit / list | yes | yes | yes | — | | Branches / commits | yes | yes | yes | — | | Worktrees | yes | yes | yes | — | | Release list / browse | yes | yes | yes | — | | Release delete | yes | yes | yes | — | | Release draft/prerelease | yes | no (3) | yes | [gitlab-org/gitlab#517424](https://gitlab.com/gitlab-org/gitlab/-/issues/517424); [gitlab-org/gitlab#32589](https://gitlab.com/gitlab-org/gitlab/-/issues/32589) | | Browse | yes | yes | yes | — | | Source URL yank | yes | yes | yes | — | Notes copied from `:h forge-compatibility`: - (1) `tea pr edit` only exposes `--add-assignees`; removing or clearing PR assignees is tracked by [gitea/tea#965](https://gitea.com/gitea/tea/issues/965). - (2) Forgejo per-PR checks show external commit statuses. Browse opens the provider page; log viewing requires forge-native CI. - (3) GitLab releases currently expose `released_at` / `upcoming_release`, but no draft or prerelease release field. Draft release support is tracked by [gitlab-org/gitlab#517424](https://gitlab.com/gitlab-org/gitlab/-/issues/517424); prerelease release support is tracked by [gitlab-org/gitlab#32589](https://gitlab.com/gitlab-org/gitlab/-/issues/32589). - (4) GitLab rerun retries failed and cancelled jobs only. Cancel uses `glab ci cancel pipeline`. - (5) Forgejo cancel uses the documented `tea actions runs delete --confirm` command. Some self-hosted instances may still reject the command with 404 or 405 responses. - (6) `gh run watch` only supports live watch at the run level. When opening a job during an active watch, Forge falls back to a refreshing job log. Tracked by [cli/cli#3484](https://github.com/cli/cli/issues/3484). - (7) Forgejo still treats draft pull requests as WIP title prefixes rather than a native toggleable draft/ready state. Forge keeps the user-facing `draft` and `ready` vocabulary, but maps those actions to the default `WIP:`/`[WIP]` title-prefix mode. Native Forgejo draft state is tracked by [forgejo/forgejo#12206](https://codeberg.org/forgejo/forgejo/issues/12206), which tracks [go-gitea/gitea#30600](https://github.com/go-gitea/gitea/issues/30600). - (8) `tea issues edit` only exposes `--add-assignees`; removing or clearing issue assignees is tracked by [gitea/tea#966](https://gitea.com/gitea/tea/issues/966). - (9) Forgejo does not expose first-class Actions job log API endpoints in current releases. Forge uses the web log endpoint for forge-native Actions logs and keeps in-progress buffers refreshing while jobs are not available yet. Upstream API support is tracked by [forgejo/forgejo#11859](https://codeberg.org/forgejo/forgejo/issues/11859). - (10) Forgejo rerun remains hidden because tea does not expose a documented workflow-run rerun command. Upstream Gitea job-rerun behavior is tracked by [go-gitea/gitea#37223](https://github.com/go-gitea/gitea/pull/37223). Known tracked rows: - [forgejo/forgejo#12206](https://codeberg.org/forgejo/forgejo/issues/12206) tracks replacing WIP-prefix PR draft semantics with a first-class draft/ready state for Forgejo, and points at [go-gitea/gitea#30600](https://github.com/go-gitea/gitea/issues/30600) upstream. This maps onto the current Forgejo `PR create (draft)` and `PR draft toggle` rows. - [forgejo/forgejo#11859](https://codeberg.org/forgejo/forgejo/issues/11859) tracks first-class Actions job and log API endpoints. Forge currently uses the web log endpoint as a Forgejo fallback, which maps onto the current Forgejo `Per-check log viewing` and `Per-job live watch` rows. - [go-gitea/gitea#37223](https://github.com/go-gitea/gitea/pull/37223) tracks active-run job rerun eligibility and maps onto the current Forgejo `CI rerun` row. - [cli/cli#3484](https://github.com/cli/cli/issues/3484) tracks log streaming for `gh run watch`, which maps onto the GitHub `Per-job live watch` row. - [gitea/tea#965](https://gitea.com/gitea/tea/issues/965) tracks adding a remove/clear assignee path to `tea pr edit`, which maps onto the current Forgejo `PR remove assignee` row. - [gitea/tea#966](https://gitea.com/gitea/tea/issues/966) tracks adding a remove/clear assignee path to `tea issues edit`, which maps onto the current Forgejo `Issue remove assignee` row. - [gitlab-org/gitlab#517424](https://gitlab.com/gitlab-org/gitlab/-/issues/517424) tracks draft releases without a tag, which maps onto the draft half of the current GitLab `Release draft/prerelease` row. - [gitlab-org/gitlab#32589](https://gitlab.com/gitlab-org/gitlab/-/issues/32589) tracks adding a prerelease release type, which maps onto the prerelease half of the current GitLab `Release draft/prerelease` row.
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
barrettruth/forge.nvim#367
No description provided.