Repository navigation
Releases: runoverlabs/kandev-plugin-forgejo
Release list
v0.4.0
Pull request actions (merge, review, request reviewers, comment, update branch)
in the review panel and as agent tools, and review watches with cleanup. Adds no
capability, so there is no re-approval prompt. Verified against Gitea 1.20 and
1.27 and Forgejo 7 and 16, and on a real Kandev 0.97.0.
-
Fixed after the first real-installation run of 0.4.0-rc.1:
- A watch labelled with a name no issue carries matched every issue, because
Forgejo and Gitea ignore an unknown label name instead of matching nothing.
Issue and review watches now check the labels each result really carries. - A malformed watch body (a wrong type, invalid JSON) and a
change_requests.linkor.unlinkbody with a missing or wrong field came
back as 503 "plugin action unavailable". They are now 422 with the reason.
watches.createandwatches.updatealso acceptreposas the
{owner, name}objectswatches.listreturns. - The fork guard now also refuses a column whose on_enter actions include
queue_run,queue_run_for_each_participantorrun_code_review, not only
auto_start_agent, and reports a fork task that workflow automation moved out
of the column it was filed in.
- A watch labelled with a name no issue carries matched every issue, because
-
A merge blocked by required approvals is now reported as branch protection.
Every host answers it with 405 andnot allowed to merge [reason: …], which
was read as a permission problem. A token missing a scope is now a permission
problem rather than branch protection, and the message nameswrite:repository
andwrite:issue(comments and labels need the latter, the review search
read:issue). -
Review watches. A new watch kind, next to issue watches, files a task for
every pull request that asks for your review (the instance's own
review_requestedsearch, so team requests count by default, with an "only me"
scope that checks the reviewer list). Tasks get the titlePR #N: …, a prompt
with{{pr.*}}placeholders filled in (a default modelled on Kandev's GitHub
review prompt), and, for same-repository pull requests, the head branch checked
out. Drafts are left out unless asked for, using thedraftfield or aWIP:
title prefix. Settings: scope, drafts, repositories, labels, search, column,
profiles, interval (60 s floor), open task limit. See
Review watches. -
Fork pull requests never start an agent on their own. The plugin cannot
set Kandev's manual-start marker, so a fork's task is never started, never has
the fork's branch checked out, and lands in a column that does not start agents
(a per-watch "fork column") or is left out and counted. The column is checked
again on every run, and a fork column that starts agents is refused at save.
Documented as weaker than GitHub's indocs/security.md. -
Cleanup. A review watch can retire the task of a merged or closed pull
request: archived through the host's exact archive command (on Kandev 0.97.0 the
approval for it comes with the plugin's one capability approval), completed
when the host cannot (and the watch says which). A completed task no longer
counts against the open task limit. Never deleted. Opt-in
per watch, no instance request for tasks already archived or complete, at most
40 checks per pass, and a rate limit or refused token ends the pass. New action
watches.cleanup("Clean up now"), which brings the manifest to 27 actions. -
Watch errors now reach the operator. The host replaces any Go error from an
action with "plugin action unavailable", so a rejected watch (a missing name or
workflow, a bad repository, a fork column that starts agents) showed that
instead of the reason. Validation failures, a missing watch, a paused watch and
the like now travel as 422, 404 or 409 with their message. -
Review watches are stored under their own
rwatch.key prefix, and issue
watches are stored byte-for-byte as before, so downgrading to 0.3.x leaves
issue watches working and review watches unseen.watches.listtakes an
optionalkind;watches.optionsalso returns the review minimum interval,
the default prompt, whether archiving is granted, and which steps start agents. -
No new capability. Verified against Gitea 1.20 and 1.27 and Forgejo 7 and 16
(TestLiveReviewRequestedSearch); the probe results are in
docs/development.md. -
The review panel is now fully wired. It loads the real pull request detail
(author, branches, line counts, reviews, requested reviewers, checks, comments)
throughchange_requests.details, shows why a merge is blocked, and offers
merge (with the styles the repository allows and a delete-branch option),
a review dialog (approve, request changes, comment, inline comments) and a
comment box. Verified against a real Kandev 0.97.0 and Forgejo 16. -
Writes are audited. Each leaves an entry (actor, task, pull request number,
action, outcome, never text) in Host state, readable through the new
connection.auditaction, because a plugin's stderr never reaches Kandev's
log on v0.97.0. -
The
pragent tool gainsmerge,review,request_review,updateand
comment, acting on the task's one linked pull request (several linked: it
refuses).getnow reports the headsha, whichmergerequires. Agents
cannot merge until an operator switches it on for the workspace (new toggle in
the connection panel, actionconnection.set_agent_merge); with it on, merge
still refuses conflicts, missing approvals and failing or running checks. The
tool is now annotateddestructive_hint: trueandidempotent_hint: false,
which was previously understated. The definition grows from 591 to 999 bytes,
inside the existing ceilings. -
Five write actions on a linked pull request:
change_requests.merge,
.review,.request_reviewers,.update_branchand.comment. Each acts only
on a pull request the task has linked, merge requires the head SHA the caller
last saw, reviews and comments end with "Posted via Kandev.", and each write
logs one audit line (action, actor, task, number, outcome). Nothing calls them
yet; the review panel buttons and the agent tool ops follow. No new capability. -
A merge by a user without merge permission is now reported as a permission
problem. Gitea and Forgejo answer it with 405, which was read as "not
mergeable", and Gitea 1.27'swrite permission is requiredwas read as branch
protection. -
New read action
change_requests.details: everything the review panel needs
for one linked pull request in a single bounded response (merge styles the
repository allows, why a merge is blocked, reviews, requested reviewers,
comments). It only answers for a pull request the task has linked, and parts
the token cannot see come back empty rather than failing the read. Nothing
calls it yet; the panel and the write actions follow. Amergeable: falsenewer
than 30 seconds is reported as unknown: Gitea briefly reads false on a healthy
pull request, and a wrong "has conflicts" would block a clean merge. -
Groundwork for PR actions (client layer only, no user-visible change yet):
writes now classify failures into fixed reasons (not mergeable, conflict, out
of date, head changed, blocked by protection, self-review, forbidden), so a
403 on a write no longer reads as "the instance rejected the access token".
Adds merge, review, reviewer, update-branch, files, commits, diff, comment,
label and assignee calls to the Forgejo client. -
New plugin icon: the Forgejo branch mark drawn as a dot matrix, in Forgejo
orange inside a Kandev-indigo frame, on a dark rounded plate so it reads the
same on light and dark themes. It replaces the plain outline icon in the
marketplace and plugin lists. The in-app icon is unchanged: it keeps
currentColorso it follows the host's theme and status colours. -
Adds the logo to the top of the README.
assets/logo-dotmatrix.svgis the
transparent mark for dark backgrounds andassets/logo-dotmatrix-light.svga
variant for white ones.
v0.4.0-rc.1
Release candidate for 0.4. Pull request actions in the review panel and as agent
tools, and review watches with cleanup. Needs no new capability, so no
re-approval; it does need the manual checks in docs/testing-on-kandev.md.
-
A merge blocked by required approvals is now reported as branch protection.
Every host answers it with 405 andnot allowed to merge [reason: …], which
was read as a permission problem. A token missing a scope is now a permission
problem rather than branch protection, and the message nameswrite:repository
andwrite:issue(comments and labels need the latter, the review search
read:issue). -
Review watches. A new watch kind, next to issue watches, files a task for
every pull request that asks for your review (the instance's own
review_requestedsearch, so team requests count by default, with an "only me"
scope that checks the reviewer list). Tasks get the titlePR #N: …, a prompt
with{{pr.*}}placeholders filled in (a default modelled on Kandev's GitHub
review prompt), and, for same-repository pull requests, the head branch checked
out. Drafts are left out unless asked for, using thedraftfield or aWIP:
title prefix. Settings: scope, drafts, repositories, labels, search, column,
profiles, interval (60 s floor), open task limit. See
Review watches. -
Fork pull requests never start an agent on their own. The plugin cannot
set Kandev's manual-start marker, so a fork's task is never started, never has
the fork's branch checked out, and lands in a column that does not start agents
(a per-watch "fork column") or is left out and counted. The column is checked
again on every run, and a fork column that starts agents is refused at save.
Documented as weaker than GitHub's indocs/security.md. -
Cleanup. A review watch can retire the task of a merged or closed pull
request: archived through the host's exact archive command (on Kandev 0.97.0 the
approval for it comes with the plugin's one capability approval), completed
when the host cannot (and the watch says which). A completed task no longer
counts against the open task limit. Never deleted. Opt-in
per watch, no instance request for tasks already archived or complete, at most
40 checks per pass, and a rate limit or refused token ends the pass. New action
watches.cleanup("Clean up now"), which brings the manifest to 27 actions. -
Watch errors now reach the operator. The host replaces any Go error from an
action with "plugin action unavailable", so a rejected watch (a missing name or
workflow, a bad repository, a fork column that starts agents) showed that
instead of the reason. Validation failures, a missing watch, a paused watch and
the like now travel as 422, 404 or 409 with their message. -
Review watches are stored under their own
rwatch.key prefix, and issue
watches are stored byte-for-byte as before, so downgrading to 0.3.x leaves
issue watches working and review watches unseen.watches.listtakes an
optionalkind;watches.optionsalso returns the review minimum interval,
the default prompt, whether archiving is granted, and which steps start agents. -
No new capability. Verified against Gitea 1.20 and 1.27 and Forgejo 7 and 16
(TestLiveReviewRequestedSearch); the probe results are in
docs/development.md. -
The review panel is now fully wired. It loads the real pull request detail
(author, branches, line counts, reviews, requested reviewers, checks, comments)
throughchange_requests.details, shows why a merge is blocked, and offers
merge (with the styles the repository allows and a delete-branch option),
a review dialog (approve, request changes, comment, inline comments) and a
comment box. Verified against a real Kandev 0.97.0 and Forgejo 16. -
Writes are audited. Each leaves an entry (actor, task, pull request number,
action, outcome, never text) in Host state, readable through the new
connection.auditaction, because a plugin's stderr never reaches Kandev's
log on v0.97.0. -
The
pragent tool gainsmerge,review,request_review,updateand
comment, acting on the task's one linked pull request (several linked: it
refuses).getnow reports the headsha, whichmergerequires. Agents
cannot merge until an operator switches it on for the workspace (new toggle in
the connection panel, actionconnection.set_agent_merge); with it on, merge
still refuses conflicts, missing approvals and failing or running checks. The
tool is now annotateddestructive_hint: trueandidempotent_hint: false,
which was previously understated. The definition grows from 591 to 999 bytes,
inside the existing ceilings. -
Five write actions on a linked pull request:
change_requests.merge,
.review,.request_reviewers,.update_branchand.comment. Each acts only
on a pull request the task has linked, merge requires the head SHA the caller
last saw, reviews and comments end with "Posted via Kandev.", and each write
logs one audit line (action, actor, task, number, outcome). Nothing calls them
yet; the review panel buttons and the agent tool ops follow. No new capability. -
A merge by a user without merge permission is now reported as a permission
problem. Gitea and Forgejo answer it with 405, which was read as "not
mergeable", and Gitea 1.27'swrite permission is requiredwas read as branch
protection. -
New read action
change_requests.details: everything the review panel needs
for one linked pull request in a single bounded response (merge styles the
repository allows, why a merge is blocked, reviews, requested reviewers,
comments). It only answers for a pull request the task has linked, and parts
the token cannot see come back empty rather than failing the read. Nothing
calls it yet; the panel and the write actions follow. Amergeable: falsenewer
than 30 seconds is reported as unknown: Gitea briefly reads false on a healthy
pull request, and a wrong "has conflicts" would block a clean merge. -
Groundwork for PR actions (client layer only, no user-visible change yet):
writes now classify failures into fixed reasons (not mergeable, conflict, out
of date, head changed, blocked by protection, self-review, forbidden), so a
403 on a write no longer reads as "the instance rejected the access token".
Adds merge, review, reviewer, update-branch, files, commits, diff, comment,
label and assignee calls to the Forgejo client. -
New plugin icon: the Forgejo branch mark drawn as a dot matrix, in Forgejo
orange inside a Kandev-indigo frame, on a dark rounded plate so it reads the
same on light and dark themes. It replaces the plain outline icon in the
marketplace and plugin lists. The in-app icon is unchanged: it keeps
currentColorso it follows the host's theme and status colours. -
Adds the logo to the top of the README.
assets/logo-dotmatrix.svgis the
transparent mark for dark backgrounds andassets/logo-dotmatrix-light.svga
variant for white ones.
v0.3.1
Fixes three defects in 0.3.0. No capability changes, so Kandev does not ask for
re-approval.
- Pausing or resuming an issue watch no longer erases it. The pause toggle
sends only the new enabled state, but the update path overwrote the agent and
executor profiles, prompt, repository, base branch, query, labels and the
start-agent setting with empty values. An update now changes only the fields it
carries, and a field can still be cleared by sending it empty on purpose.
A watch that was paused or resumed on 0.3.0 has already lost those settings
and they cannot be recovered; open it and set them again. - The review panel could not render. The adapter handed Kandev's detail view
a different shape from the one it renders, and the view throws on the first
field it expects and does not find (the author, the reviewer list). The adapter
now supplies every field. What the review snapshot does not carry is shown as
a neutral placeholder rather than invented: the author reads "unknown", the
branches are blank, the line counts are 0, and the reviewer and comment lists
are empty. Loading the real values needs a detail request the panel does not
make yet. State, draft, checks, review state and pending reviewers are real. - Issue watches could miss issues on older instances. The watch walks a
repository's issues a page at a time and stopped at the first page that looked
short. A server that ignores the issue-only filter (older Gitea) mixes pull
requests into the page, so a full page of mostly pull requests looked short and
every issue after it was dropped. The walk now judges a page by the rows the
server sent.
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
- feat: issue watches, security workflow and docs split (0.3.0-rc.1) by @naerymdan in #4
- chore: release 0.3.0 by @naerymdan in #5
New Contributors
- @naerymdan made their first contribution in #4
Full Changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
- fix: emit provider_repository_id in repositories.inspect responses by @cgingue11 in #1
- feat: supply Git credentials through Kandev's credential broker by @cgingue11 in #2
New Contributors
- @cgingue11 made their first contribution in #1
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Full Changelog: v0.1.2...v0.2.0
v0.1.2
Full Changelog: v0.1.1...v0.1.2
v0.1.1
Full Changelog: v0.1.0...v0.1.1