Skip to content

feat(deployment): add GPU, presets, commands and env vars configure cards - #3366

Merged
ygrishajev merged 1 commit into
mainfrom
feat/deployment-configure-gpu-presets-extras-1
Jun 26, 2026
Merged

feat(deployment): add GPU, presets, commands and env vars configure cards#3366
ygrishajev merged 1 commit into
mainfrom
feat/deployment-configure-gpu-presets-extras-1

Conversation

@ygrishajev

@ygrishajev ygrishajev commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Why

Part of CON-411, closes CON-419. Completes the Configuration pane. After this PR its content matches the original
feat/deployment-configure-pane-inputs branch.

What

  • GPU card — enable toggle, count, and vendor/model/memory/interface selection.
  • Presets card — applies a starting point for CPU/memory/storage/GPU.
  • Commands card and Environment Variables card — both backed by the new dialog-v2 modal;
    env vars guard the reserved SSH_PUBKEY key.
  • Wires GPU + Presets into the Hardware section and Commands + Env vars into the Additional
    section.
  • Tests for every added card.

Summary by CodeRabbit

  • New Features
    • Added hardware Presets (compute + GPU) and a dedicated GPU configuration card.
    • Extended the runtime Additional area with Environment Variables and Commands cards.
    • Introduced DialogV2 for modern modal editing and added related Presets/GPU/Commands tooltips.
  • Bug Fixes
    • Implemented consistent locked mode across cards (controls disabled, view-only editing).
    • Improved modal Cancel/Save behavior, reserved environment-key handling, and command newline preservation.
  • Tests
    • Expanded UI coverage for presets, GPU, environment variables, commands, and configuration-pane wiring.

@coderabbitai

coderabbitai Bot commented Jun 26, 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: c15b1e77-440c-4e58-87a0-72aa3da00f47

📥 Commits

Reviewing files that changed from the base of the PR and between 679f4e1 and 451c57d.

📒 Files selected for processing (18)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
  • packages/ui/components/dialog-v2.tsx
  • packages/ui/components/index.tsx
✅ Files skipped from review due to trivial changes (1)
  • packages/ui/components/index.tsx
🚧 Files skipped from review as they are similar to previous changes (16)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • packages/ui/components/dialog-v2.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx

📝 Walkthrough

Walkthrough

The PR adds new deployment configuration cards for presets, GPU, environment variables, and commands. It also introduces a shared dialog primitive, updates hardware and additional section composition, and adds tests for the new cards and preset matching logic.

Changes

Deployment configuration UI

Layer / File(s) Summary
Dialog primitives
packages/ui/components/dialog-v2.tsx, packages/ui/components/index.tsx
Adds DialogV2 wrappers around Radix dialog primitives and re-exports them from the component index.
Preset data and matching
apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
Defines hardware preset types and built-in presets, plus detect/apply helpers and their matching tests.
Preset selector card
apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
Renders the grouped preset select, applies preset values to the form, and validates preset selection behavior.
GPU card and hardware section
apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/*, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/*, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
Adds the GPU card, hardware section composition, tooltip copy, and hardware wiring tests.
Runtime cards and additional section
apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/*, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/*, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/*, apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
Adds the environment-variable and command cards, plus AdditionalSection wiring and tests.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • baktun14
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/deployment-configure-gpu-presets-extras-1

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

@codecov

codecov Bot commented Jun 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.21%. Comparing base (28eeeb9) to head (451c57d).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3366      +/-   ##
==========================================
- Coverage   69.61%   68.21%   -1.40%     
==========================================
  Files        1088      998      -90     
  Lines       26639    24306    -2333     
  Branches     6396     5938     -458     
==========================================
- Hits        18545    16581    -1964     
+ Misses       7104     6773     -331     
+ Partials      990      952      -38     
Flag Coverage Δ *Carryforward flag
api 84.98% <ø> (ø) Carriedforward from 28eeeb9
deploy-web 55.13% <ø> (ø) Carriedforward from 28eeeb9
log-collector ?
notifications 91.44% <ø> (ø) Carriedforward from 28eeeb9
provider-console 81.38% <ø> (ø)
provider-inventory ?
provider-proxy 86.26% <ø> (ø) Carriedforward from 28eeeb9
tx-signer ?

*This pull request uses carry forward flags. Click here to find out more.
see 93 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ygrishajev
ygrishajev force-pushed the feat/deployment-configure-gpu-presets-extras-1 branch from e525b82 to f34ae29 Compare June 26, 2026 09:51

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx`:
- Around line 54-64: The dialog handlers in CommandsCard should not reset the
entire RHF form; they currently affect unrelated fields and form metadata.
Update handleCancel and handleSave to scope state to the command inputs only,
using the service command field path from services.${serviceIndex}.command or a
local draft for command/arg. Keep the shared form untouched outside these
command fields, and avoid using reset(snapshot) or reset(getValues(), {
keepDirty: true }) on the whole form.

In
`@apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts`:
- Around line 142-148: The preset application logic in hardwarePresets should
clear stale GPU model data when a non-GPU preset is selected. Update the code
around the gpu/hasGpu handling in the preset application flow so that when gpu
is 0 or absent, services.${serviceIndex}.profile.gpuModels is explicitly reset
to an empty value instead of leaving the previous array intact; keep the
existing gpuModels assignment only in the gpu > 0 path. Use the setValue calls
in this block to ensure hasGpu and gpuModels stay consistent for sdlGenerator
and future GPU re-enablement.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f582e7c9-f738-4b48-882e-28aea7b93bda

📥 Commits

Reviewing files that changed from the base of the PR and between 9d91c3b and e525b82.

📒 Files selected for processing (18)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
  • packages/ui/components/dialog-v2.tsx
  • packages/ui/components/index.tsx

@ygrishajev
ygrishajev force-pushed the feat/deployment-configure-gpu-presets-extras-1 branch from f34ae29 to 679f4e1 Compare June 26, 2026 12:09

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx`:
- Around line 49-63: The cancel flow in CommandsCard’s snapshot handling can
restore undefined into RHF fields, which is not allowed for these text inputs.
Update openModal and handleCancel so the snapshot always normalizes `command`
and `arg` to empty strings when `getValues()` returns nothing, or switch to
using `resetField()`/registered defaults in `CommandsCard` instead of passing
undefined to `setValue()`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4136b43e-5b9f-40ba-9801-aaf414fed856

📥 Commits

Reviewing files that changed from the base of the PR and between f34ae29 and 679f4e1.

📒 Files selected for processing (18)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
  • packages/ui/components/dialog-v2.tsx
  • packages/ui/components/index.tsx
✅ Files skipped from review due to trivial changes (1)
  • packages/ui/components/index.tsx
🚧 Files skipped from review as they are similar to previous changes (14)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/cardTooltips.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/PresetsCard.tsx
  • packages/ui/components/dialog-v2.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PresetsCard/hardwarePresets.ts

@ygrishajev
ygrishajev enabled auto-merge June 26, 2026 12:27
@ygrishajev
ygrishajev force-pushed the feat/deployment-configure-gpu-presets-extras-1 branch from 679f4e1 to 59301cf Compare June 26, 2026 12:30
…ards

Third of three stacked branches for the deployment Configuration pane (on top of
the image/compute and storage branches). After this branch the Configuration pane
is complete.

Adds the GPU card (vendor/model/memory/interface), the hardware Presets card, and
the Commands and Environment Variables cards (both backed by the dialog-v2 modal),
and wires them into the Hardware and Additional sections.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants