Per-repository issue tracker configuration: configure tracker type (GitHub/GitLab/Gitea/Jira), owner, repo, and token per repository at creation or later via edit modal
Gitea tracker implementation: full IssueTracker trait impl using Gitea API v1 (issues, PR reviews, dedup search)
Stage 6 issue creation: scan pipeline now auto-creates issues in the configured tracker for new findings with severity >= Medium, with fingerprint-based deduplication
PR review pipeline: on PR open/sync webhook, runs incremental semgrep + LLM code review on changed files and posts review comments via tracker
Webhook infrastructure: per-repo auto-generated secrets, per-repo webhook URLs, dashboard proxies webhooks to agent (agent not exposed publicly)
Dashboard UI: edit modal with tracker config fields, webhook URL + secret display, Gitea option in tracker type dropdown
Misc: demote "Parsing file" log from info to debug
Test plan
Add a repo with Gitea tracker config (type, owner, repo, token)
Trigger scan and verify issues are created in Gitea for medium+ findings
Re-scan and verify duplicate issues are not created
Set up Gitea webhook using URL + secret from edit modal
Open a PR and verify review comments are posted
Verify push webhook triggers a scan
## Summary
- **Per-repository issue tracker configuration**: configure tracker type (GitHub/GitLab/Gitea/Jira), owner, repo, and token per repository at creation or later via edit modal
- **Gitea tracker implementation**: full IssueTracker trait impl using Gitea API v1 (issues, PR reviews, dedup search)
- **Stage 6 issue creation**: scan pipeline now auto-creates issues in the configured tracker for new findings with severity >= Medium, with fingerprint-based deduplication
- **PR review pipeline**: on PR open/sync webhook, runs incremental semgrep + LLM code review on changed files and posts review comments via tracker
- **Webhook infrastructure**: per-repo auto-generated secrets, per-repo webhook URLs, dashboard proxies webhooks to agent (agent not exposed publicly)
- **Dashboard UI**: edit modal with tracker config fields, webhook URL + secret display, Gitea option in tracker type dropdown
- **Misc**: demote "Parsing file" log from info to debug
## Test plan
- [x] Add a repo with Gitea tracker config (type, owner, repo, token)
- [x] Trigger scan and verify issues are created in Gitea for medium+ findings
- [x] Re-scan and verify duplicate issues are not created
- [x] Set up Gitea webhook using URL + secret from edit modal
- [x] Open a PR and verify review comments are posted
- [x] Verify push webhook triggers a scan
Add ability to configure issue tracker (GitHub, GitLab, Gitea, Jira) per
repository at creation time and edit later via PATCH endpoint. Includes
new Gitea tracker implementation, edit modal in dashboard, and
tracker_token field on the repository model.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After scan findings are persisted, Stage 6 now creates issues in the
configured tracker (GitHub/GitLab/Gitea/Jira) for new findings with
severity >= Medium. Includes fingerprint-based dedup, per-repo token
fallback to global config, and formatted markdown issue bodies.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gitea API expects label IDs (integers), not names. Append label names
to the issue body instead. Also lower "Parsing file" log from info to
debug to reduce noise.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On PR open/sync, webhook triggers incremental scan: runs semgrep on
changed files + LLM code review on the diff, then posts review comments
via the configured tracker. Adds Gitea webhook handler with HMAC-SHA256
verification, and wires up the previously stubbed GitHub/GitLab PR
handlers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Auto-generate webhook_secret on repository creation (UUID-based)
- Webhook routes use per-repo URLs: /webhook/{platform}/{repo_id}
- Verify signatures using per-repo secret (not global env var)
- Dashboard proxies webhooks to agent (agent not exposed publicly)
- Edit modal shows webhook URL + secret for user to copy into Gitea
- Add webhook-config API endpoint to retrieve per-repo secret
- Add Gitea option to edit dialog tracker type dropdown
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace expect() calls with let-else returns in SBOM download, use
strip_prefix() instead of manual slicing in extract_base_url, and
suppress too_many_arguments on server function.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move #[allow(clippy::too_many_arguments)] to module level so it
propagates through Dioxus #[server] macro expansion. Upgrade CI
container from rust:1.89 to rust:1.94 to match local toolchain.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
sharang
merged commit 491665559f into main2026-03-11 12:14:00 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Test plan
- Auto-generate webhook_secret on repository creation (UUID-based) - Webhook routes use per-repo URLs: /webhook/{platform}/{repo_id} - Verify signatures using per-repo secret (not global env var) - Dashboard proxies webhooks to agent (agent not exposed publicly) - Edit modal shows webhook URL + secret for user to copy into Gitea - Add webhook-config API endpoint to retrieve per-repo secret - Add Gitea option to edit dialog tracker type dropdown Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>