feat(control-panel): maintainer settings editor (#130) - #837
Merged
Conversation
Closes the biggest frontend gap the discovery sweep flagged (~10%): the backend exposed 30+ maintainer settings with no editor (only AI-review + BYOK existed). Adds the editor + the maintainer-facing save endpoint. Backend: - PUT /v1/repos/:owner/:repo/settings — maintainer-authed, audited, PATCH-style. upsertRepositorySettings defaults any absent field, so the handler loads current settings and merges the sent keys (unrelated groups are preserved). A maintainer-safe partial schema excludes the secret aiReview key (its own /ai-review + /ai-key routes) and the operator-only scoring internals (backfillEnabled, privateTrustEnabled). Frontend (maintainer-settings.tsx, rendered in the maintainer panel): - Merge-gate form (gate check, pack, merge-readiness master, linked-issue / duplicate / quality / manifest-policy modes + quality min score, first-time-contributor grace). - Anti-slop (mode, min score, AI advisory), labels (auto-label, name, create-missing), public output & checks (comment mode, surface, signal level, audience, context check + detail, maintainer-author inclusion, require-linked-issue, badge). - Command-authorization default-role editor + read-only per-command overrides. - Focus-manifest (config-as-code) JSON editor against the existing GET/PUT /focus-manifest. PUT endpoint + schema fully covered (success / invalid / forbidden / malformed-body / session + non-session audit-actor paths). The agent-layer autonomy dial (#784) will extend this surface.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | db5c5e7 | Commit Preview URL Branch Preview URL |
Jun 17 2026, 07:50 PM |
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Note Gittensory Gate skippedPR closed before full evaluation. No late first comment was created.
💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #837 +/- ##
=======================================
Coverage 96.56% 96.56%
=======================================
Files 98 98
Lines 14175 14189 +14
Branches 5169 5172 +3
=======================================
+ Hits 13688 13702 +14
Misses 105 105
Partials 382 382 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Closes #130.
Closes the biggest frontend gap the discovery sweep flagged (~10% → done): the backend exposed 30+ maintainer settings with no editor (only AI-review + BYOK existed). This adds the editor and the maintainer-facing save endpoint it needed.
Backend
PUT /v1/repos/:owner/:repo/settings— maintainer-authed (requireRepoMaintainer), audited, PATCH-style. SinceupsertRepositorySettingsdefaults any absent field, the handler loads current settings and merges the sent keys so unrelated groups are preserved. A maintainer-safe partial schema excludes the secretaiReviewkey (set via the dedicated/ai-review+/ai-keyroutes) and the operator-only scoring internals (backfillEnabled,privateTrustEnabled).Frontend (
maintainer-settings.tsx, in the maintainer panel)GET/PUT /focus-manifest.Boundaries
Maintainer-authenticated + repo-scoped; every save is audited. No secret key or operator-only field is editable here. This is the surface the agent-layer autonomy dial (#784) will extend.
Verification
backend typecheck ✓ · UI lint ✓ · UI typecheck ✓ · UI build ✓ · backend suite 1995 passed / 1 skipped (pre-existing pngjs visual-agent skip) · UI suite 7 passed · PUT endpoint + schema fully covered (success / invalid / forbidden / malformed-body / session + non-session audit-actor).