feat(FN-4176): add general GitHub tracking settings to settings modal

Adds general GitHub tracking controls to the Settings modal, moving those settings out of the merge-specific section into a broader general settings area, with corresponding test coverage and documentation updates.

Fusion-Task-Id: FN-4176
This commit is contained in:
Fusion
2026-05-12 17:42:56 -07:00
committed by gsxdsm
parent 410bca09dd
commit 7e55dc4572
4 changed files with 104 additions and 41 deletions

View File

@@ -2006,6 +2006,41 @@ export function SettingsModal({
</label>
<small>Show the floating chat button in the dashboard. Chat is still accessible from the Chat tab in the mobile navigation.</small>
</div>
<h4 className="settings-section-heading settings-section-heading--spaced">GitHub Tracking</h4>
<div className="form-group">
<label htmlFor="githubTrackingMode">Default tracking mode for new tasks</label>
<select
id="githubTrackingMode"
className="select"
value={form.githubTrackingEnabledByDefault ? "new-tasks" : "off"}
onChange={(e) =>
setForm((f) => ({
...f,
githubTrackingEnabledByDefault: e.target.value === "new-tasks",
}))
}
>
<option value="off">Off (default)</option>
<option value="new-tasks">On for new tasks</option>
</select>
<small>
Controls whether newly created tasks have GitHub issue tracking enabled by default. Individual tasks can still override this from the task detail modal.
</small>
</div>
<div className="form-group">
<label htmlFor="projectGithubTrackingDefaultRepoGeneral">Project default tracking repo</label>
<input
id="projectGithubTrackingDefaultRepoGeneral"
type="text"
className="input"
placeholder="owner/repo"
value={form.githubTrackingDefaultRepo ?? ""}
onChange={(e) =>
setForm((f) => ({ ...f, githubTrackingDefaultRepo: e.target.value || undefined }))
}
/>
<small>Default repo used when creating GitHub issues for tracked tasks. Falls back to the global default if blank.</small>
</div>
</>
);
case "global-general":
@@ -3750,33 +3785,7 @@ export function SettingsModal({
</details>
</div>
)}
<h4 className="settings-section-heading settings-section-heading--spaced">GitHub Issue Tracking</h4>
<div className="form-group">
<label htmlFor="githubTrackingEnabledByDefault" className="checkbox-label">
<input
id="githubTrackingEnabledByDefault"
type="checkbox"
checked={form.githubTrackingEnabledByDefault ?? false}
onChange={(e) =>
setForm((f) => ({ ...f, githubTrackingEnabledByDefault: e.target.checked }))
}
/>
Default GitHub tracking ON for new tasks
</label>
</div>
<div className="form-group">
<label htmlFor="projectGithubTrackingDefaultRepo">Project default tracking repo</label>
<input
id="projectGithubTrackingDefaultRepo"
type="text"
className="input"
placeholder="owner/repo"
value={form.githubTrackingDefaultRepo ?? ""}
onChange={(e) =>
setForm((f) => ({ ...f, githubTrackingDefaultRepo: e.target.value || undefined }))
}
/>
</div>
<h4 className="settings-section-heading settings-section-heading--spaced">GitHub Authentication</h4>
<div className="form-group">
<label htmlFor="githubAuthMode">GitHub auth mode</label>
<select