Skip to content

feat(dashboard): expose build timeout & insight extraction settings in the UI#1935

Merged
gsxdsm merged 1 commit into
Runfusion:mainfrom
Automata-intelligentsia:feat/expose-build-timeout-insight-extraction-settings
Jul 7, 2026
Merged

feat(dashboard): expose build timeout & insight extraction settings in the UI#1935
gsxdsm merged 1 commit into
Runfusion:mainfrom
Automata-intelligentsia:feat/expose-build-timeout-insight-extraction-settings

Conversation

@Automata-intelligentsia

@Automata-intelligentsia Automata-intelligentsia commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Problem

Two settings that already exist in the Settings schema and are honored by the engine have no control anywhere in the dashboard UI:

  • buildTimeoutMs — max time for build/verification commands (default 300000 = 5 min)
  • insightExtractionEnabled (+ insightExtractionSchedule) — periodic extraction of durable insights from completed tasks into memory

Because there's no UI, the only way to change them is to hand-edit config.json — but that has to be done with the app fully closed, since the running app rewrites config.json from its database on reload/shutdown and silently clobbers live file edits. That's a confusing footgun (edits appear to "not stick"), and 5 minutes is too low a build timeout for large monorepo / Docker builds.

Change

Expose both via controls that mirror the existing patterns in the same sections — no schema, route, or persistence changes needed (the keys already flow through form/setFormupdateSettings).

  • Scheduling section: "Build/Verification Timeout (minutes)", placed next to the existing "Stuck Task Timeout (minutes)", using the same minutes↔ms conversion.
  • Memory section: "Enable Insight Extraction" checkbox + conditional cron "Schedule" field, placed next to the existing Auto-Summarize controls (matching how insightExtractionSchedule is already documented in types.ts).

Both use the existing t(...) i18n fallback style used throughout these sections.

Scope note (feedback welcome)

Both live in their existing project-scoped sections (Scheduling, Memory), which is the natural home. If maintainers want these settable as global/user defaults too, I'm happy to add a global-defaults counterpart in a follow-up — just wanted to keep this PR focused and non-duplicative.

Testing

  • Both keys are pre-existing fields on the Settings type (buildTimeoutMs?: number at packages/core/src/types.ts; insightExtractionEnabled?/insightExtractionSchedule? likewise), so the additions are type-safe.
  • Controls follow the exact JSX/handler pattern of adjacent fields already in each section.

Summary by CodeRabbit

  • New Features
    • Added an Insight Extraction option in memory settings, including an enable/disable toggle and a schedule field that appears when enabled.
    • Added a Build/Verification Timeout setting in scheduling, with minute-based input and helpful guidance text.

…s UI

Both settings already exist in the Settings schema and are honored by the
engine, but neither had a control in the dashboard, so users could only
change them by hand-editing config.json while the app was closed (the
running app rewrites config.json from its DB, clobbering live file edits).

- Add 'Build/Verification Timeout (minutes)' to the Scheduling section,
  next to the existing stuck-task timeout (same minutes<->ms conversion).
- Add 'Enable Insight Extraction' + cron schedule to the Memory section,
  next to the existing auto-summarize controls.

Both are placed in their existing project-scoped sections. Follow-up: a
global-defaults counterpart could be added if maintainers want these
settable at the user/global level too.
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d5861edc-24b3-4ffc-9c55-eaabd25763c9

📥 Commits

Reviewing files that changed from the base of the PR and between ca84473 and f72585c.

📒 Files selected for processing (2)
  • packages/dashboard/app/components/settings/sections/MemorySection.tsx
  • packages/dashboard/app/components/settings/sections/SchedulingSection.tsx

📝 Walkthrough

Walkthrough

Adds two independent settings UI additions: an “Enable Insight Extraction” checkbox with conditional cron schedule input in MemorySection, and a “Build/Verification Timeout (minutes)” number input in SchedulingSection that converts between minutes and milliseconds via form state.

Changes

Settings Form Additions

Layer / File(s) Summary
Insight extraction settings
packages/dashboard/app/components/settings/sections/MemorySection.tsx
Adds a form group with an "Enable Insight Extraction" checkbox and a conditional cron schedule input with default value, shown only when enabled.
Build timeout setting
packages/dashboard/app/components/settings/sections/SchedulingSection.tsx
Adds a "Build/Verification Timeout (minutes)" input bound to form.buildTimeoutMs, converting between minutes and milliseconds via setForm, with help text.

Estimated code review effort: 1 (Trivial) | ~5 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two new dashboard UI controls added in Scheduling and Memory sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR exposes existing project settings in the dashboard UI. The main changes are:

  • A Scheduling field for build and verification timeout in minutes.
  • A Memory checkbox for enabling insight extraction.
  • A conditional cron input for the insight extraction schedule.

Confidence Score: 4/5

The build timeout UI needs a runtime wiring fix before merging.

  • The memory controls match the existing schedule pattern and use engine defaults safely.
  • The build timeout field can save successfully while builds still use the old timeout.
  • No security issue was found in the changed UI code.

packages/dashboard/app/components/settings/sections/SchedulingSection.tsx

Important Files Changed

Filename Overview
packages/dashboard/app/components/settings/sections/MemorySection.tsx Adds insight extraction enablement and schedule controls using the existing memory settings form pattern.
packages/dashboard/app/components/settings/sections/SchedulingSection.tsx Adds a build timeout field, but the saved setting is not currently applied by the runtime command timeout path.

Reviews (1): Last reviewed commit: "feat(dashboard): expose build timeout & ..." | Re-trigger Greptile

Comment on lines +111 to +116
<input id="buildTimeoutMs" type="number" min={1} step={1} value={form.buildTimeoutMs ? Math.round(form.buildTimeoutMs / 60000) : ""} onChange={(e) => {
const val = e.target.value;
const num = Number(val);
setForm((f) => ({ ...f, buildTimeoutMs: val && num > 0 ? num * 60000 : undefined }));
}}/>
<small>{t("settings.scheduling.maximumTimeInMinutesForBuildVerificationCommands", "Maximum time in minutes for build/verification commands before they are killed. Raise for large monorepo or Docker builds. Default: 5.")}</small>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Timeout Control Has No Consumer

Changing this field persists buildTimeoutMs, but the runtime command path does not read that setting when applying build or verification timeouts. An operator can raise the value for a long monorepo or Docker build, see the setting save, and still have the build killed at the existing timeout.

@gsxdsm gsxdsm merged commit 393aca0 into Runfusion:main Jul 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants