feat(server): server-side scheduled tasks — start agent runs automatically - #7986
feat(server): server-side scheduled tasks — start agent runs automatically#7986ImBIOS wants to merge 2 commits into
UI Consistency: 5 findings (4 outstanding)
apps/web/src/components/settings/ScheduledTasksSection.tsx still carries the four findings raised in the previous review of this PR (the file is byte-identical at d9b0640), plus one new layout finding posted inline.
New finding
apps/web/src/components/settings/ScheduledTasksSection.tsx(lines 149, 219, 224): free-standing paragraphs and the task<ul>omit thepx-3 sm:px-4gutter thatSettingsRowapplies, so they render flush to the panel edge and misalign with the rows above (compareProjectSettingsPanel.tsx's section-level paragraph).
Outstanding from the prior review (not re-posted)
- Line 161: bare
SelectValuewith inline items prints the raw stored value (env-id:thread-id) instead of the thread title; pass the label as children asIntegrationsSettings.tsxdocuments. - Line 182: same issue — the trigger shows the raw preset key (
tomorrow-9) rather thanPRESET_LABELS[preset]. - Lines 160/181/199: triggers and the prompt
Inputlack thearia-labelandw-full sm:w-*responsive width used by every other settings select/input (SettingsRow's title is anh3, not a label, so the input has no accessible name). - Line 210: the Schedule button stays enabled when
anchorThreadis undefined (initialthreadKeyis captured before threads load and is never reconciled), sosubmit()returns silently with no feedback.
No issues found in the other in-scope changed web files (IntegrationsSettings.tsx, ProjectSettingsPanel.tsx, SettingsPanels.tsx, settingsSearch.ts, state/entities.ts, state/orchestration.ts) — the new switch reuses Switch/SettingsRow/SettingResetButton and registers a search item consistently with existing settings.
Details
Note
Your check run agent prompt is: .macroscope/check-run-agents/ui-consistency.md
More information about how Check Run Agents work can be found in our Help Center.
Scope: only files matching apps/web/src/**/*.{ts,tsx,css} were targeted; server, contracts, and docs changes were read for context only.
Verification performed:
- Compared
ScheduledTasksSection.tsxat head against the version reviewed in the prior run — unchanged, so prior comments were deliberately not duplicated (the prior head commit is no longer reachable after a rebase/force-push, so the comparison was done on file contents). - Confirmed
SelectValuesemantics inapps/web/src/components/ui/select.tsxand the documented workaround inIntegrationsSettings.tsx(viewportSelectLabel,zoomLabel,APPEARANCE_LABELSall pass explicit children plusaria-labelandw-full sm:w-*). - Confirmed padding ownership in
settingsLayout.tsx:SettingsSectionchildren wrapper isrelative space-y-1(no gutter);SettingsRowappliesrounded-xl px-3 sm:px-4;SettingsRowtitle renders ash3, not a<label>. - Confirmed the sibling precedent for section-level text padding in
ProjectSettingsPanel.tsx(px-3 py-2 ... sm:px-4).
🔍 Agent activity — 8 tool calls
💭 I already reviewed at commit 6f33ca5 and left 4 comments. The head is now at d9b0640, so I should check whether the changes addressed my feedback by diffing between those two commits.
1. git_tools — 6f33ca5..d9b0640
💭 That earlier commit was probably force-pushed away, so I should just check the current content of the web files in scope instead.
2. browse_code — apps/web/src/components/settings/ScheduledTasksSection.tsx
💭 Since the file is unchanged from the prior run, the previously flagged issues remain but I've already noted them, so I shouldn't repost duplicate comments. I need to decide whether to still report failure given unresolved findings, and quickly verify the SelectValue claim and check other files for any new changes since the last run.
3. browse_code — apps/web/src/components/ui/select.tsx
💭 Since the code is unchanged, I shouldn't repost duplicate comments on the same findings, but the check should still report failure since the issues remain unaddressed. Let me verify the SelectValue claim by checking another consumer, like IntegrationsSettings' viewportSelectLabel, before finalizing.
4. git_tools — SelectValue
💭 Since the code hasn't changed since the last run, the findings still hold and there's nothing new to comment on, so I'll report failure with a summary of outstanding findings and note that no duplicates were posted. I also want to double-check whether SettingsRow actually supports a "title" prop as used in ScheduledTasksSection, since IntegrationsSettings uses description/control/resetAction instead—worth a quick look at the settings layout definition to confirm.
5. git_tools — export function SettingsRow|export function SettingsSection
💭 I'm noticing that the description paragraph inside SettingsSection lacks the horizontal padding that rows carry, so it would sit flush against the panel edge and misalign with the rest of the content—a layout consistency issue worth flagging.
6. git_tools — text-sm text-muted-foreground
💭 I'm checking ProjectSettingsPanel near line 1027 to see how padding is applied to a section-level paragraph.
7. browse_code — apps/web/src/components/settings/ProjectSettingsPanel.tsx
💭 I noticed that other SettingsSection paragraphs use horizontal padding to align with row gutters, but ScheduledTasksSection's paragraphs and list lack that padding, so they'd sit flush against the panel edge rather than aligning with rows—a real layout inconsistency worth flagging. I'll post a single inline comment on the paragraph line with a suggested fix, noting that the other paragraph and the list need the same gutter applied since this hasn't been flagged before and isn't a duplicate.
8. modify_pr — Re-reviewed at d9b0640. apps/web/src/components/settings/ScheduledTasksSection.tsx is unchanged since my previous review, so the four findings from that review still stand (raw SelectValue printing the stored value on both triggers, missing aria-label/responsive width on the triggers and prompt input, and the Schedule button staying enabled when no anchor thread resolves). I have not re-posted them. One additional layout finding is noted inline.
Agent Credits: 112 credits