From 0abd0fac790cd63f2e44d95a579faa6d7291acf6 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 27 Feb 2026 13:47:49 +0100 Subject: [PATCH 01/11] feat: builder R / RStudio options --- .../features/sessionsV2/session.constants.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/src/features/sessionsV2/session.constants.tsx b/client/src/features/sessionsV2/session.constants.tsx index e27f2ff7b3..279de9484d 100644 --- a/client/src/features/sessionsV2/session.constants.tsx +++ b/client/src/features/sessionsV2/session.constants.tsx @@ -110,6 +110,17 @@ export const BUILDER_TYPES = [ ), }, + { + value: "r", + label: "R", + description: ( + <> + Create a R environment from an renv.lock file. This file + must be at the root of the repository. See the documentation for + examples. Only compatible with RStudio for now + + ), + }, ] as readonly BuilderSelectorOption[]; export const BUILDER_FRONTENDS = [ @@ -135,6 +146,13 @@ export const BUILDER_FRONTENDS = [ description: "Web-based terminal, with minimalist interface.", /* eslint-enable spellcheck/spell-checker */ }, + { + /* eslint-disable spellcheck/spell-checker */ + value: "rstudio", + label: "RStudio", + description: "Web-based terminal, with minimalist interface.", + /* eslint-enable spellcheck/spell-checker */ + }, ] as readonly BuilderSelectorOption[]; export const BUILDER_PLATFORMS = [ From 1c1874f08939d7b4ccde4f24a0906071aa566686 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Wed, 4 Mar 2026 15:10:28 +0100 Subject: [PATCH 02/11] feat: update RStudio description in session builder --- client/src/features/sessionsV2/session.constants.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/features/sessionsV2/session.constants.tsx b/client/src/features/sessionsV2/session.constants.tsx index 279de9484d..6bd1a56155 100644 --- a/client/src/features/sessionsV2/session.constants.tsx +++ b/client/src/features/sessionsV2/session.constants.tsx @@ -150,7 +150,7 @@ export const BUILDER_FRONTENDS = [ /* eslint-disable spellcheck/spell-checker */ value: "rstudio", label: "RStudio", - description: "Web-based terminal, with minimalist interface.", + description: "Web-based integrated development environment for R.", /* eslint-enable spellcheck/spell-checker */ }, ] as readonly BuilderSelectorOption[]; From a878d3250bd7f082ff501e5c9c353ba8f1d143bd Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 15:40:18 +0100 Subject: [PATCH 03/11] feat: set compatibility matrix --- client/src/features/sessionsV2/session.constants.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/src/features/sessionsV2/session.constants.tsx b/client/src/features/sessionsV2/session.constants.tsx index 6bd1a56155..e7d667d2c5 100644 --- a/client/src/features/sessionsV2/session.constants.tsx +++ b/client/src/features/sessionsV2/session.constants.tsx @@ -155,6 +155,15 @@ export const BUILDER_FRONTENDS = [ }, ] as readonly BuilderSelectorOption[]; +export const BUILDER_FRONTEND_COMBINATIONS: Record = { + python: ["vscodium", "jupyterlab", "ttyd"], + r: ["rstudio"], +}; + +export const getCompatibleFrontends = (builderVariant: string) => { + return BUILDER_FRONTEND_COMBINATIONS[builderVariant] ?? []; +}; + export const BUILDER_PLATFORMS = [ { value: "linux/amd64" as const, From 78e4a56e8b6038850c389478ea5880924b69b545 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 15:40:47 +0100 Subject: [PATCH 04/11] feat: set default builder_variant --- .../components/SessionModals/NewSessionLauncherModal.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/features/sessionsV2/components/SessionModals/NewSessionLauncherModal.tsx b/client/src/features/sessionsV2/components/SessionModals/NewSessionLauncherModal.tsx index efae719975..e690328b88 100644 --- a/client/src/features/sessionsV2/components/SessionModals/NewSessionLauncherModal.tsx +++ b/client/src/features/sessionsV2/components/SessionModals/NewSessionLauncherModal.tsx @@ -73,6 +73,7 @@ export default function NewSessionLauncherModal({ port: DEFAULT_PORT, repository: "", platform: "", + builder_variant: "python", }, }); const { From 753ed35d4a8ff4d5e7932ed18be0f1f3f49e5a68 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 15:44:27 +0100 Subject: [PATCH 05/11] feat: only set compatible frontends --- .../SessionForm/BuilderFrontendSelector.tsx | 110 ++++++++++++------ 1 file changed, 73 insertions(+), 37 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index b03bbb897f..a7c9902dc6 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -20,27 +20,43 @@ import cx from "classnames"; import { useMemo } from "react"; import { Controller, + useWatch, + type Control, type FieldValues, type UseControllerProps, } from "react-hook-form"; import { Label } from "reactstrap"; -import { BUILDER_FRONTENDS } from "../../session.constants"; +import { + BUILDER_FRONTEND_COMBINATIONS, + BUILDER_FRONTENDS, + getCompatibleFrontends, +} from "../../session.constants"; import BuilderSelectorCommon from "./BuilderSelectorCommon"; -type BuilderFrontendSelectorProps = - UseControllerProps; +interface BuilderFrontendSelectorProps + extends UseControllerProps { + control: Control; +} export default function BuilderFrontendSelector({ + control, ...controllerProps }: BuilderFrontendSelectorProps) { - const defaultValue = useMemo( - () => - controllerProps.defaultValue - ? controllerProps.defaultValue - : BUILDER_FRONTENDS[0], - [controllerProps.defaultValue] - ); + const builderVariant = useWatch({ + control: control as Control, + name: "builder_variant", + }); + + const compatibleFrontends = useMemo(() => { + const compatible = getCompatibleFrontends(builderVariant ?? ""); + return BUILDER_FRONTENDS.filter((f) => compatible.includes(f.value)); + }, [builderVariant]); + + const defaultValue = useMemo(() => { + if (controllerProps.defaultValue) return controllerProps.defaultValue; + return compatibleFrontends[0] ?? BUILDER_FRONTENDS[0]; + }, [controllerProps.defaultValue, compatibleFrontends]); return (
@@ -52,33 +68,53 @@ export default function BuilderFrontendSelector({ render={({ field: { onBlur, onChange, value, disabled }, fieldState: { error }, - }) => ( - <> -
- -
-
- {error?.message ? ( - <>{error.message} - ) : ( - <>Please select a valid environment type. - )} -
- - )} + }) => { + const currentFrontend = value?.value ?? value ?? ""; + const isCompatible = + BUILDER_FRONTEND_COMBINATIONS[builderVariant ?? ""]?.includes( + currentFrontend + ) ?? true; + + return ( + <> +
+ { + if (!isCompatible && compatibleFrontends.length > 0) { + onChange(compatibleFrontends[0]); + } else { + onChange(newValue); + } + }} + options={compatibleFrontends} + value={ + isCompatible + ? typeof value === "string" + ? value + : value?.value ?? "" + : compatibleFrontends[0]?.value ?? "" + } + /> +
+
+ {error?.message ? ( + <>{error.message} + ) : ( + <>Please select a valid environment type. + )} +
+ + ); + }} rules={ controllerProps.rules ?? { required: "Please select an environment type.", From bfd3214888cd785f116adb4ee5412fb3abe73497 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 15:57:41 +0100 Subject: [PATCH 06/11] fix: spellcheck linting --- .../components/SessionForm/BuilderFrontendSelector.tsx | 6 ++++++ client/src/features/sessionsV2/session.constants.tsx | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index a7c9902dc6..11e3c0a185 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -27,11 +27,13 @@ import { } from "react-hook-form"; import { Label } from "reactstrap"; +/* eslint-disable spellcheck/spell-checker */ import { BUILDER_FRONTEND_COMBINATIONS, BUILDER_FRONTENDS, getCompatibleFrontends, } from "../../session.constants"; +/* eslint-enable spellcheck/spell-checker */ import BuilderSelectorCommon from "./BuilderSelectorCommon"; interface BuilderFrontendSelectorProps @@ -48,6 +50,7 @@ export default function BuilderFrontendSelector({ name: "builder_variant", }); + /* eslint-disable spellcheck/spell-checker */ const compatibleFrontends = useMemo(() => { const compatible = getCompatibleFrontends(builderVariant ?? ""); return BUILDER_FRONTENDS.filter((f) => compatible.includes(f.value)); @@ -57,6 +60,7 @@ export default function BuilderFrontendSelector({ if (controllerProps.defaultValue) return controllerProps.defaultValue; return compatibleFrontends[0] ?? BUILDER_FRONTENDS[0]; }, [controllerProps.defaultValue, compatibleFrontends]); + /* eslint-enable spellcheck/spell-checker */ return (
@@ -88,6 +92,7 @@ export default function BuilderFrontendSelector({ inputId="builder-environment-frontend-select-input" name={controllerProps.name} onBlur={onBlur} + /* eslint-disable spellcheck/spell-checker */ onChange={(newValue) => { if (!isCompatible && compatibleFrontends.length > 0) { onChange(compatibleFrontends[0]); @@ -103,6 +108,7 @@ export default function BuilderFrontendSelector({ : value?.value ?? "" : compatibleFrontends[0]?.value ?? "" } + /* eslint-enable spellcheck/spell-checker */ />
diff --git a/client/src/features/sessionsV2/session.constants.tsx b/client/src/features/sessionsV2/session.constants.tsx index e7d667d2c5..ff96457243 100644 --- a/client/src/features/sessionsV2/session.constants.tsx +++ b/client/src/features/sessionsV2/session.constants.tsx @@ -147,14 +147,13 @@ export const BUILDER_FRONTENDS = [ /* eslint-enable spellcheck/spell-checker */ }, { - /* eslint-disable spellcheck/spell-checker */ value: "rstudio", label: "RStudio", description: "Web-based integrated development environment for R.", - /* eslint-enable spellcheck/spell-checker */ }, ] as readonly BuilderSelectorOption[]; +/* eslint-disable spellcheck/spell-checker */ export const BUILDER_FRONTEND_COMBINATIONS: Record = { python: ["vscodium", "jupyterlab", "ttyd"], r: ["rstudio"], @@ -163,6 +162,7 @@ export const BUILDER_FRONTEND_COMBINATIONS: Record = { export const getCompatibleFrontends = (builderVariant: string) => { return BUILDER_FRONTEND_COMBINATIONS[builderVariant] ?? []; }; +/* eslint-enable spellcheck/spell-checker */ export const BUILDER_PLATFORMS = [ { From 8850af9e04c91311057a145ebbe31f7021811cf5 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 17:49:08 +0100 Subject: [PATCH 07/11] fix: ? --- .../SessionForm/BuilderFrontendSelector.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index 11e3c0a185..41a665d1e0 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -23,6 +23,7 @@ import { useWatch, type Control, type FieldValues, + type Path, type UseControllerProps, } from "react-hook-form"; import { Label } from "reactstrap"; @@ -46,13 +47,16 @@ export default function BuilderFrontendSelector({ ...controllerProps }: BuilderFrontendSelectorProps) { const builderVariant = useWatch({ - control: control as Control, - name: "builder_variant", + control, + name: "builder_variant" as Path, }); /* eslint-disable spellcheck/spell-checker */ const compatibleFrontends = useMemo(() => { - const compatible = getCompatibleFrontends(builderVariant ?? ""); + const builderVariantValue = (builderVariant?.value ?? + builderVariant ?? + "") as string; + const compatible = getCompatibleFrontends(builderVariantValue); return BUILDER_FRONTENDS.filter((f) => compatible.includes(f.value)); }, [builderVariant]); @@ -68,14 +72,18 @@ export default function BuilderFrontendSelector({ User interface { const currentFrontend = value?.value ?? value ?? ""; + const builderVariantValue = (builderVariant?.value ?? + builderVariant ?? + "") as string; const isCompatible = - BUILDER_FRONTEND_COMBINATIONS[builderVariant ?? ""]?.includes( + BUILDER_FRONTEND_COMBINATIONS[builderVariantValue]?.includes( currentFrontend ) ?? true; From 496ffc2dd2378d7a348ec78333bc894de074722c Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Fri, 6 Mar 2026 18:52:21 +0100 Subject: [PATCH 08/11] fix: default selections --- .../SessionForm/BuilderFrontendSelector.tsx | 122 ++++++++---------- 1 file changed, 57 insertions(+), 65 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index 41a665d1e0..e844e777c2 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -17,9 +17,9 @@ */ import cx from "classnames"; -import { useMemo } from "react"; +import { useEffect, useMemo } from "react"; import { - Controller, + useController, useWatch, type Control, type FieldValues, @@ -52,6 +52,17 @@ export default function BuilderFrontendSelector({ }); /* eslint-disable spellcheck/spell-checker */ + const { + field: { onBlur, onChange, value, disabled }, + fieldState: { error }, + } = useController({ + control, + ...controllerProps, + rules: controllerProps.rules ?? { + required: "Please select an environment type.", + }, + }); + const compatibleFrontends = useMemo(() => { const builderVariantValue = (builderVariant?.value ?? builderVariant ?? @@ -60,6 +71,22 @@ export default function BuilderFrontendSelector({ return BUILDER_FRONTENDS.filter((f) => compatible.includes(f.value)); }, [builderVariant]); + const currentFrontend = value?.value ?? value ?? ""; + const builderVariantValue = (builderVariant?.value ?? + builderVariant ?? + "") as string; + const isCompatible = + BUILDER_FRONTEND_COMBINATIONS[builderVariantValue]?.includes( + currentFrontend + ) ?? true; + + // Auto-set form value when the current selection is incompatible + useEffect(() => { + if (!isCompatible && compatibleFrontends.length > 0) { + onChange(compatibleFrontends[0]); + } + }, [isCompatible, compatibleFrontends, onChange]); + const defaultValue = useMemo(() => { if (controllerProps.defaultValue) return controllerProps.defaultValue; return compatibleFrontends[0] ?? BUILDER_FRONTENDS[0]; @@ -71,70 +98,35 @@ export default function BuilderFrontendSelector({ - { - const currentFrontend = value?.value ?? value ?? ""; - const builderVariantValue = (builderVariant?.value ?? - builderVariant ?? - "") as string; - const isCompatible = - BUILDER_FRONTEND_COMBINATIONS[builderVariantValue]?.includes( - currentFrontend - ) ?? true; - - return ( - <> -
- { - if (!isCompatible && compatibleFrontends.length > 0) { - onChange(compatibleFrontends[0]); - } else { - onChange(newValue); - } - }} - options={compatibleFrontends} - value={ - isCompatible - ? typeof value === "string" - ? value - : value?.value ?? "" - : compatibleFrontends[0]?.value ?? "" - } - /* eslint-enable spellcheck/spell-checker */ - /> -
-
- {error?.message ? ( - <>{error.message} - ) : ( - <>Please select a valid environment type. - )} -
- - ); - }} - rules={ - controllerProps.rules ?? { - required: "Please select an environment type.", +
+ + /> +
+
+ {error?.message ? ( + <>{error.message} + ) : ( + <>Please select a valid environment type. + )} +
); } From ddfea796e02af7476bc7052e264c2160ef55da18 Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Mon, 9 Mar 2026 13:28:26 +0100 Subject: [PATCH 09/11] fix: store values on change --- .../SessionForm/BuilderFrontendSelector.tsx | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index e844e777c2..1b412e53e4 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -17,7 +17,7 @@ */ import cx from "classnames"; -import { useEffect, useMemo } from "react"; +import { useCallback, useEffect, useMemo } from "react"; import { useController, useWatch, @@ -63,6 +63,19 @@ export default function BuilderFrontendSelector({ }, }); + const handleChange = useCallback( + (option: unknown) => { + if (typeof option === "string") { + onChange(option); + } else if (option && typeof option === "object" && "value" in option) { + onChange((option as { value: string }).value); + } else { + onChange(""); + } + }, + [onChange] + ); + const compatibleFrontends = useMemo(() => { const builderVariantValue = (builderVariant?.value ?? builderVariant ?? @@ -85,7 +98,7 @@ export default function BuilderFrontendSelector({ if (!isCompatible && compatibleFrontends.length > 0) { onChange(compatibleFrontends[0]); } - }, [isCompatible, compatibleFrontends, onChange]); + }, [isCompatible, compatibleFrontends, handleChange]); const defaultValue = useMemo(() => { if (controllerProps.defaultValue) return controllerProps.defaultValue; @@ -109,14 +122,15 @@ export default function BuilderFrontendSelector({ inputId="builder-environment-frontend-select-input" name={controllerProps.name} onBlur={onBlur} - onChange={onChange} + onChange={handleChange} options={compatibleFrontends} value={ - isCompatible - ? typeof value === "string" - ? value - : value?.value ?? "" - : compatibleFrontends[0]?.value ?? "" + compatibleFrontends.find( + (f) => + f.value === (typeof value === "string" ? value : value?.value) + ) ?? + compatibleFrontends[0] ?? + null } />
From bc4a0e7eb43f5088f7ceddf0e2a652e14906e9cc Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Mon, 9 Mar 2026 14:07:16 +0100 Subject: [PATCH 10/11] chore: cleanup --- .../SessionForm/BuilderFrontendSelector.tsx | 61 +++++-------------- 1 file changed, 16 insertions(+), 45 deletions(-) diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index 1b412e53e4..3b6b399c4d 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -17,7 +17,7 @@ */ import cx from "classnames"; -import { useCallback, useEffect, useMemo } from "react"; +import { useEffect, useMemo } from "react"; import { useController, useWatch, @@ -49,11 +49,11 @@ export default function BuilderFrontendSelector({ const builderVariant = useWatch({ control, name: "builder_variant" as Path, - }); + }) as string; /* eslint-disable spellcheck/spell-checker */ const { - field: { onBlur, onChange, value, disabled }, + field: { onBlur, onChange, value: currentFrontend, disabled }, fieldState: { error }, } = useController({ control, @@ -63,48 +63,25 @@ export default function BuilderFrontendSelector({ }, }); - const handleChange = useCallback( - (option: unknown) => { - if (typeof option === "string") { - onChange(option); - } else if (option && typeof option === "object" && "value" in option) { - onChange((option as { value: string }).value); - } else { - onChange(""); - } - }, - [onChange] - ); - const compatibleFrontends = useMemo(() => { - const builderVariantValue = (builderVariant?.value ?? - builderVariant ?? - "") as string; - const compatible = getCompatibleFrontends(builderVariantValue); + const compatible = getCompatibleFrontends(builderVariant); return BUILDER_FRONTENDS.filter((f) => compatible.includes(f.value)); }, [builderVariant]); - const currentFrontend = value?.value ?? value ?? ""; - const builderVariantValue = (builderVariant?.value ?? - builderVariant ?? - "") as string; const isCompatible = - BUILDER_FRONTEND_COMBINATIONS[builderVariantValue]?.includes( - currentFrontend - ) ?? true; + BUILDER_FRONTEND_COMBINATIONS[builderVariant]?.includes(currentFrontend) ?? + true; - // Auto-set form value when the current selection is incompatible useEffect(() => { if (!isCompatible && compatibleFrontends.length > 0) { - onChange(compatibleFrontends[0]); + onChange(compatibleFrontends[0].value); } - }, [isCompatible, compatibleFrontends, handleChange]); + }, [isCompatible, compatibleFrontends, onChange]); - const defaultValue = useMemo(() => { - if (controllerProps.defaultValue) return controllerProps.defaultValue; - return compatibleFrontends[0] ?? BUILDER_FRONTENDS[0]; - }, [controllerProps.defaultValue, compatibleFrontends]); - /* eslint-enable spellcheck/spell-checker */ + const defaultOption = useMemo( + () => compatibleFrontends[0] ?? BUILDER_FRONTENDS[0], + [compatibleFrontends] + ); return (
@@ -116,22 +93,15 @@ export default function BuilderFrontendSelector({ data-cy="environment-type-select" > - f.value === (typeof value === "string" ? value : value?.value) - ) ?? - compatibleFrontends[0] ?? - null - } + value={currentFrontend} />
@@ -143,4 +113,5 @@ export default function BuilderFrontendSelector({
); + /* eslint-enable spellcheck/spell-checker */ } From f631f9ef9ae6e1d4c04dbdeb17b8e0f06531435c Mon Sep 17 00:00:00 2001 From: Salim Kayal Date: Mon, 9 Mar 2026 15:12:09 +0100 Subject: [PATCH 11/11] chore: add 'frontends' to eslint spellcheck ignorelist --- client/eslint.config.mjs | 1 + .../components/SessionForm/BuilderFrontendSelector.tsx | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/client/eslint.config.mjs b/client/eslint.config.mjs index 5445c3d651..364225399c 100644 --- a/client/eslint.config.mjs +++ b/client/eslint.config.mjs @@ -101,6 +101,7 @@ const jsRules = { "fortran", "frameborder", "frontend", + "frontends", "func", "gemoji", "gitlab", diff --git a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx index 3b6b399c4d..b68d91baab 100644 --- a/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/BuilderFrontendSelector.tsx @@ -28,13 +28,11 @@ import { } from "react-hook-form"; import { Label } from "reactstrap"; -/* eslint-disable spellcheck/spell-checker */ import { BUILDER_FRONTEND_COMBINATIONS, BUILDER_FRONTENDS, getCompatibleFrontends, } from "../../session.constants"; -/* eslint-enable spellcheck/spell-checker */ import BuilderSelectorCommon from "./BuilderSelectorCommon"; interface BuilderFrontendSelectorProps @@ -51,7 +49,6 @@ export default function BuilderFrontendSelector({ name: "builder_variant" as Path, }) as string; - /* eslint-disable spellcheck/spell-checker */ const { field: { onBlur, onChange, value: currentFrontend, disabled }, fieldState: { error }, @@ -113,5 +110,4 @@ export default function BuilderFrontendSelector({ ); - /* eslint-enable spellcheck/spell-checker */ }