Skip to content

feat(v5): add "Job configuration" and "Triggers" settings sections#2586

Merged
rmnbrd merged 5 commits intonew-navigationfrom
feat/new-nav/job-configuration-settings
Apr 10, 2026
Merged

feat(v5): add "Job configuration" and "Triggers" settings sections#2586
rmnbrd merged 5 commits intonew-navigationfrom
feat/new-nav/job-configuration-settings

Conversation

@rmnbrd
Copy link
Copy Markdown
Contributor

@rmnbrd rmnbrd commented Apr 9, 2026

Summary

PR adding the "Job configuration" and "Triggers" settings sections

Screenshots / Recordings

Screenshot 2026-04-09 at 16 59 22 Screenshot 2026-04-09 at 17 24 43

Note

Medium Risk
Adds a new job settings UI that edits job schedule/trigger payloads and shifts routing/navigation, which could break job settings access or submit incorrect schedules if mismatched with backend expectations.

Overview
Adds a new Console v5 settings/configure route that renders the new JobConfiguration screen (and sets the document title) instead of a placeholder.

Introduces JobConfiguration in domains/service-settings, using TanStack Router params and React Hook Form to edit and submit CRON and LIFECYCLE job schedule/trigger settings via useEditService, and updates unit tests accordingly.

Removes the legacy application settings “configure” route/link and the old PageSettingsConfigureJob UI/tests, and drops APPLICATION_SETTINGS_CONFIGURE_URL from shared routes.

Reviewed by Cursor Bugbot for commit 8093dae. Bugbot is set up for automated code reviews on this repo. Configure here.

@rmnbrd rmnbrd self-assigned this Apr 9, 2026
@rmnbrd rmnbrd added the V5 label Apr 9, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 9, 2026

Codecov Report

❌ Patch coverage is 80.00000% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 45.01%. Comparing base (eb8c18a) to head (b250ce3).
⚠️ Report is 3 commits behind head on new-navigation.

Files with missing lines Patch % Lines
...re/src/lib/job-configuration/job-configuration.tsx 70.00% 3 Missing ⚠️
Additional details and impacted files
@@                Coverage Diff                 @@
##           new-navigation    #2586      +/-   ##
==================================================
- Coverage           45.39%   45.01%   -0.39%     
==================================================
  Files                1120     1068      -52     
  Lines               22883    21955     -928     
  Branches             6681     6443     -238     
==================================================
- Hits                10388     9882     -506     
+ Misses              10630    10292     -338     
+ Partials             1865     1781      -84     
Flag Coverage Δ
unittests 45.01% <80.00%> (-0.39%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rmnbrd rmnbrd changed the title feat(v5): add "Job configuration" settings section feat(v5): add "Job configuration" and "triggers" settings sections Apr 9, 2026
@rmnbrd rmnbrd marked this pull request as ready for review April 9, 2026 15:25
@rmnbrd rmnbrd requested review from RemiBonnet and Copilot April 9, 2026 15:25
@rmnbrd rmnbrd changed the title feat(v5): add "Job configuration" and "triggers" settings sections feat(v5): add "Job configuration" and "Triggers" settings sections Apr 9, 2026
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8093dae. Configure here.


function RouteComponent() {
return <div className="px-10 py-7">Configuration</div>
useDocumentTitle('Job configuration - Service settings')
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Document title hardcoded, wrong for lifecycle jobs

Medium Severity

The useDocumentTitle call is hardcoded to 'Job configuration - Service settings', but the JobConfiguration component dynamically renders the heading as either "Job configuration" (for CRON jobs) or "Triggers" (for LIFECYCLE jobs). For lifecycle jobs, the browser tab title will incorrectly say "Job configuration" while the page heading says "Triggers".

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 8093dae. Configure here.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds the new v5 “Job configuration” (cron) / “Triggers” (lifecycle) settings content by moving the job configuration form into the service-settings domain and wiring it into the console-v5 /settings/configure route, while removing the legacy (react-router) application settings “configure job” route/page.

Changes:

  • Introduce JobConfiguration feature in libs/domains/service-settings/feature and expose it via the package index.
  • Update console-v5 /settings/configure route to render the new JobConfiguration page and set a document title.
  • Remove legacy application settings “configure job” page/route/constants and its unit test.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
libs/shared/routes/src/lib/sub-router/application.router.ts Removes legacy APPLICATION_SETTINGS_CONFIGURE_URL constant.
libs/pages/application/src/lib/ui/page-settings-configure-job/page-settings-configure-job.tsx Deletes legacy job configuration page component (moved to domain feature).
libs/pages/application/src/lib/ui/page-settings-configure-job/page-settings-configure-job.spec.tsx Deletes legacy unit test for the removed page.
libs/pages/application/src/lib/router/router.tsx Removes legacy settings route entry for /configure.
libs/pages/application/src/lib/feature/page-settings-feature/page-settings-feature.tsx Removes legacy sidebar link for job “configure/triggers” settings.
libs/domains/service-settings/feature/src/lib/job-configuration/job-configuration.tsx Adds the new Job configuration/Triggers settings UI + form submission logic, using TanStack router params.
libs/domains/service-settings/feature/src/lib/job-configuration/job-configuration.spec.tsx Updates tests to target JobConfiguration and mocks TanStack router params.
libs/domains/service-settings/feature/src/index.ts Exports JobConfiguration from the feature package.
apps/console-v5/src/routes/_authenticated/.../settings/configure.tsx Uses JobConfiguration in the v5 configure settings route and sets document title.
Comments suppressed due to low confidence (4)

libs/domains/service-settings/feature/src/lib/job-configuration/job-configuration.tsx:46

  • JobConfigureSettings is given loading={!service}, but service is a required prop here and the parent fetch uses suspense: true, so this will always be false. This makes the loading state misleading; consider wiring it to the query loading state (or remove the prop if not needed with suspense).
    libs/domains/service-settings/feature/src/lib/job-configuration/job-configuration.tsx:170
  • if (!service) return returns undefined from a React component. Please return null (or a fallback UI) to keep the component return type consistent and avoid lint/TS issues.
    libs/domains/service-settings/feature/src/lib/job-configuration/job-configuration.tsx:26
  • <div className=""> has an empty className, which is a no-op and adds noise. Consider removing it or adding the intended layout classes (it previously had padding/max-width in the removed page component).
    libs/pages/application/src/lib/router/router.tsx:46
  • Removing the legacy /settings/configure route means existing deep links (and any URL-based helpers) to application job configuration will break. There are still references to /application/:applicationId/settings/configure in libs/shared/assistant/feature/src/lib/hooks/use-contextual-doc-links/use-contextual-doc-links.ts (e.g., mappings around lines ~248 and ~835); please update/remove those mappings or provide a redirect if this removal is intentional.
export const ROUTER_APPLICATION_SETTINGS: Route[] = [
  {
    path: APPLICATION_SETTINGS_DOCKERFILE_URL,
    component: <PageSettingsDockerfileFeature />,
  },
  {
    path: APPLICATION_SETTINGS_ADVANCED_SETTINGS_URL,
    component: <PageSettingsAdvancedFeature />,
  },

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Member

@RemiBonnet RemiBonnet left a comment

Choose a reason for hiding this comment

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

Thanks @rmnbrd !

  • Could you update token for job-configure-settings.tsx and move this component out of the @qovery/shared/console-shared ? (this one is soon outdated)

  • Could you add an max-w-content-with-navigation-left class for the content (not the header) like what we have for other settings page?

  • On lifecycle service (example here) the margin is too huge between title "Events" and description "Select one or more event..."

@rmnbrd rmnbrd merged commit e1f4c7b into new-navigation Apr 10, 2026
11 checks passed
@rmnbrd rmnbrd deleted the feat/new-nav/job-configuration-settings branch April 10, 2026 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants