Skip to content

feat: Add UI for the in-component configuration assistance#3915

Open
re-pixel wants to merge 5 commits intosuperplanehq:mainfrom
re-pixel:feat/comp-config-assist-ui
Open

feat: Add UI for the in-component configuration assistance#3915
re-pixel wants to merge 5 commits intosuperplanehq:mainfrom
re-pixel:feat/comp-config-assist-ui

Conversation

@re-pixel
Copy link
Copy Markdown
Collaborator

@re-pixel re-pixel commented Apr 2, 2026

@superplanehq-integration
Copy link
Copy Markdown

👋 Commands for maintainers:

  • /sp start - Start an ephemeral machine (takes ~30s)
  • /sp stop - Stop a running machine (auto-executed on pr close)

@shiroyasha
Copy link
Copy Markdown
Collaborator

Give us a markdown document with high-levels first. It will be easier to judge and review.

1/ Create a PR with a new file in docs/prd that describes how this will work
2/ Assign us to review

Comment thread web_src/src/ui/InlineFieldAssistant/index.tsx
enableRealtimeValidation={true}
autocompleteExampleObj={resolvedAutocompleteExampleObj}
suggestFieldValue={inlineAssistantEnabled ? suggestFieldValue : undefined}
assistantEnabled={inlineAssistantEnabled}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

What is this files doing, showing if the config value is enabled?
We don't need this. The users can't modify it, it is just noise.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

agreed, will remove it

Comment on lines +110 to +125
{proposedValue != null ? (
<div className="space-y-2">
<p className="text-xs font-medium text-muted-foreground">Suggested value</p>
<pre className="max-h-40 overflow-auto rounded-md bg-muted/50 p-2 text-xs whitespace-pre-wrap break-all">
{proposedValue}
</pre>
{explanation ? <p className="text-xs text-muted-foreground">{explanation}</p> : null}
<div className="flex justify-end gap-2 pt-1">
<Button type="button" size="sm" variant="outline" onClick={handleClose}>
Discard
</Button>
<Button type="button" size="sm" onClick={handleConfirm}>
Use this value
</Button>
</div>
</div>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Lets extract this to a dedicated component to not accoumulate too much stuff in this function.

@shiroyasha
Copy link
Copy Markdown
Collaborator

/sp start

@superplanehq-integration
Copy link
Copy Markdown

✅ Ready.

Web: https://pr-3915-ephemeral.superplane.com
SSH: ssh -o StrictHostKeyChecking=no app@178.104.28.255
Logs: ssh -o StrictHostKeyChecking=no app@178.104.28.255 'cd superplane && make dev.logs.app'

@shiroyasha
Copy link
Copy Markdown
Collaborator

/sp stop

@superplanehq-integration
Copy link
Copy Markdown

✅ Ephemeral machine has been terminated.

@shiroyasha
Copy link
Copy Markdown
Collaborator

Worked ok for the if component, but on the SSH component I don't see any generators:

CleanShot 2026-04-03 at 12 31 37@2x

@re-pixel
Copy link
Copy Markdown
Collaborator Author

re-pixel commented Apr 3, 2026

Worked ok for the if component, but on the SSH component I don't see any generators:

CleanShot 2026-04-03 at 12 31 37@2x

@shiroyasha this is because this commit added it just on ExpressionField intentionally. i wanted to check if the UI/UX makes sense before i add it across different fields. probably should've stated that explicitly.

i can add it to other fields in this PR if you want.

@shiroyasha
Copy link
Copy Markdown
Collaborator

Lets keep this PR open in that case, and first ship the backend part. The combination of the backend + frontend would allow us to judge the quality.

Copy link
Copy Markdown
Contributor

@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 2 potential issues.

Fix All in Cursor

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

return {
value: trimmed.length > 0 ? trimmed : "true",
};
}, []);
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.

Stub implementation echoes user input as suggested value

Medium Severity

The suggestFieldValue callback is a hardcoded stub that fakes a 450ms delay and returns the user's own instruction text as the "suggested value" (or "true" if the instruction is empty). When the VITE_ENABLE_INLINE_CONFIG_ASSISTANT feature flag is enabled (which it is in docker-compose.dev.yml), users see an AI assistant panel that simply echoes their input back — producing misleading results with no actual backend integration. There's no comment or TODO marking this as temporary placeholder code.

Fix in Cursor Fix in Web

</Button>
<Button type="button" size="sm" variant="outline" onClick={handleClose} disabled={loading}>
Cancel
</Button>
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.

Cancel button disabled during loading prevents aborting generation

Low Severity

All interactive controls — the Generate button, Cancel button, sparkle trigger, and textarea — are disabled while loading is true. If the suggestFieldValue promise takes a long time or hangs (e.g., network issue), the user has no way to cancel the operation or close the panel. The generationRef-based cancellation logic exists internally but is inaccessible to the user in this state.

Additional Locations (1)
Fix in Cursor Fix in Web

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