From 2adddce7540b62874eee5629067d32c670b010be Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Sun, 31 May 2026 05:36:50 -0700 Subject: [PATCH] feat(tracker-web): hardcoded repo dropdown for PR-mode jobs (base=main) MVP: the New Job form picks a PR target from a fixed dropdown of local repos; base branch is fixed to main. Empty selection = no PR (plain job). Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../src/app/dashboard/fleet/jobs/page.tsx | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/dashboards/tracker-web/src/app/dashboard/fleet/jobs/page.tsx b/dashboards/tracker-web/src/app/dashboard/fleet/jobs/page.tsx index 0e673370..b9d2ce8c 100644 --- a/dashboards/tracker-web/src/app/dashboard/fleet/jobs/page.tsx +++ b/dashboards/tracker-web/src/app/dashboard/fleet/jobs/page.tsx @@ -21,6 +21,28 @@ const STAGES = [ ]; const POLL_INTERVAL = 30_000; +// MVP: PR-mode target repos (local checkouts under the factory's repo base). +// Base branch is fixed to `main`. Empty selection = no PR (plain job). +const FLEET_REPOS = [ + 'learning_ai_common_plat', + 'learning_ai_devops_tools', + 'learning_voice_ai_agent', + 'learning_multimodal_memory_agents', + 'learning_ai_clock', + 'learning_ai_jarvis_jr', + 'learning_ai_fastgap', + 'learning_ai_peakpulse', + 'learning_ai_flowmonk', + 'learning_ai_notes', + 'learning_ai_trails', + 'learning_ai_efforise', + 'learning_ai_local_memory_gpt', + 'learning_ai_2nd_brain', + 'learning_ai_auth_app', + 'learning_agent_monitoring_fx', +]; +const FLEET_BASE_BRANCH = 'main'; + export default function FleetJobsPage() { const { token } = useAuth(); const [jobs, setJobs] = useState([]); @@ -33,7 +55,6 @@ export default function FleetJobsPage() { const [priority, setPriority] = useState<'critical' | 'high' | 'medium' | 'low'>('high'); const [caps, setCaps] = useState('build'); const [repo, setRepo] = useState(''); - const [baseBranch, setBaseBranch] = useState('main'); const [submitting, setSubmitting] = useState(false); const [submitMsg, setSubmitMsg] = useState<{ ok: boolean; text: string } | null>(null); @@ -74,7 +95,7 @@ export default function FleetJobsPage() { bodyMd: body.trim(), priority, capabilities, - ...(repo.trim() ? { repo: repo.trim(), baseBranch: baseBranch.trim() || 'main' } : {}), + ...(repo ? { repo, baseBranch: FLEET_BASE_BRANCH } : {}), }); setSubmitMsg({ ok: true, text: `Submitted ${job.id} (stage: ${job.stage}).` }); setBody(''); @@ -85,7 +106,7 @@ export default function FleetJobsPage() { } finally { setSubmitting(false); } - }, [body, caps, priority, repo, baseBranch, refresh]); + }, [body, caps, priority, repo, refresh]); return (
@@ -149,29 +170,27 @@ export default function FleetJobsPage() {
- setRepo(e.target.value)} - placeholder="owner/name" className="rounded border bg-background px-2 py-1 text-sm font-mono" - /> + > + + {FLEET_REPOS.map(r => ( + + ))} + + {repo && ( +

+ PR against {FLEET_BASE_BRANCH} +

+ )}
- {repo.trim() && ( -
- - setBaseBranch(e.target.value)} - className="rounded border bg-background px-2 py-1 text-sm font-mono" - /> -
- )}