Open
Conversation
…o the query and connection UIs. Some UX enhancements for queries creation too.
Contributor
There was a problem hiding this comment.
5 issues found across 23 files
Confidence score: 3/5
- Some risk remains because there are concrete user-facing flow issues in
packages/builder/src/settings/pages/connections/APIEditor.svelte: validation can be bypassed due to stalehasErrors, andloadingOpenApiInfomay stay stuck afterAPI.getImportInfofailures, leaving the form disabled. packages/builder/src/helpers/confirm.tshas a behavior regression whereresult || trueturns an intentionalfalseintotrue, so callers cannot block confirm actions as designed.packages/builder/src/components/integration/APIEndpointViewer.sveltemay redirect unexpectedly during "Save and continue" when saving new drafts, andpackages/builder/src/components/integration/APIEndpointViewer.spec.tshas mock leakage risk that can cause order-dependent tests.- Pay close attention to
packages/builder/src/settings/pages/connections/APIEditor.svelte,packages/builder/src/helpers/confirm.ts, andpackages/builder/src/components/integration/APIEndpointViewer.svelte- they contain the highest-impact validation, loading-state, and navigation behavior regressions.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/builder/src/settings/pages/connections/APIEditor.svelte">
<violation number="1" location="packages/builder/src/settings/pages/connections/APIEditor.svelte:260">
P2: `loadingOpenApiInfo` isn’t cleared if `API.getImportInfo` throws, so the form can stay disabled indefinitely after a failed load. Wrap the await in a try/finally to ensure the flag resets.</violation>
<violation number="2" location="packages/builder/src/settings/pages/connections/APIEditor.svelte:498">
P2: `hasErrors` is a reactive derived value, so it won’t update immediately after `errors = newErrors` in this function. This can let saves proceed even when validation just added errors. Use `newErrors` (or re-check `errors`) directly in this guard.</violation>
</file>
<file name="packages/builder/src/helpers/confirm.ts">
<violation number="1" location="packages/builder/src/helpers/confirm.ts:17">
P2: `onConfirm` now allows returning `false`, but the handler still resolves with `result || true`, which converts `false` to `true`. Callers won’t be able to return `false` as intended. Use a nullish check (`result ?? true`) so explicit `false` is respected.</violation>
</file>
<file name="packages/builder/src/components/integration/APIEndpointViewer.svelte">
<violation number="1" location="packages/builder/src/components/integration/APIEndpointViewer.svelte:989">
P2: Using `saveQuery(isNewQuery)` inside the navigation guard will redirect to the new query when saving a new draft, interrupting the "Save and continue" navigation. Save without redirect here so the original navigation can proceed.</violation>
</file>
<file name="packages/builder/src/components/integration/APIEndpointViewer.spec.ts">
<violation number="1" location="packages/builder/src/components/integration/APIEndpointViewer.spec.ts:1540">
P3: Restore this spy (or reset all mocks) after the test. `vi.clearAllMocks()` does not reset mock implementations, so this mocked `fetchImportInfo` leaks into later tests and can make them order-dependent.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
packages/builder/src/settings/pages/connections/APIEditor.svelte
Outdated
Show resolved
Hide resolved
packages/builder/src/components/integration/APIEndpointViewer.svelte
Outdated
Show resolved
Hide resolved
…borders. Changed edit connection text and increased the default width of the connection select
Contributor
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte">
<violation number="1" location="packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte:164">
P2: Hide "New API operation" for the draft datasource (`__draft__`), otherwise clicking it navigates with an invalid datasource ID and immediately redirects.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte
Outdated
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Some feedback updates and bug fixes.
RestTemplatecollections with aconnectionModefield (shared/independent).HubSpot,Twilio,Zendeskrestructured accordingly.Microsoft Sharepointshares its settings, like base url or auth, with all its children. Allowing 1 parent auth to cover them all.Twiliodoes not share base urls with its children and so they remain independent.shared(child picker at query time) andindependent(child encoded in datasource) collection modesmixinprop toRestTemplateto accomodate general fixes for 3rd Party specs. In this instance, added the Microsoft graph server base url as it is omitted by Microsoft intentionally.WorkspaceConnectionStore- tracks in-progress new connection/query in the sidebar before savebb.hideSettings()now accepts an optional path argument. On close you can decide the default page to load. This is handy for the save and close flow. When it reopens it will navigate accordingly.Slack,Jira,BambooHR,HubSpot,Stripe, andGitHub.Bug fixes
authConfigId(reactive ordering)applyEndpointDefaultsre-running every cycle (wrong guard field)Screenshots
New APIbutton will kick of the new create flow.Clicking it will create a new "draft" query/api with the selected.

The request verb, query name and connection name will update accordingly.

A

Sharedconnection. Microsoft Sharepoint can now act as a shared connectionWith shared connections, you will be prompted to confirm the nested spec you are trying to use

Independentconnections like Twilo, that do not share base url, confirm the nested spec on the connection.Summary by cubic
Improves the Connections and API creation UX with nested
RestTemplatecollections, a shared/independent model, and a draft flow for new connections/queries. Polishes selection and navigation, adds a child spec picker, and refines unsaved-change handling.New Features
RestTemplatecollections andconnectionMode(shared/independent); restructured HubSpot, Twilio, Zendesk, and added Microsoft SharePoint (viamixin).TemplateEndpointInputto pick child specs for shared collections; improved endpoint icons/verbs; added “Open operation” link on collections (hidden for drafts);CustomEndpointInputnow derives verbs fromQUERY_VERB_MAP.WorkspaceConnectionStore: “New API” creates a sidebar draft, updates verb/name live, hides draft from menus/context actions, keys the view to reset on draft changes, and makes unsaved prompts skip-able.ConnectionSelectUI polish with featured templates (slack-web-api,jira-cloud,bamboohr,hubspot,stripe,github) and styling tweaks; refinedNavHeaderadd/search behavior; datasource nav disables context menu for drafts.bb.hideSettings(path?)for save-and-close;confirm()handlers can control closing via return value.restTemplateIdto query metadata.Bug Fixes
authConfigId.Written for commit 66933d7. Summary will update on new commits.