Content-Length: 31723 | pFad | http://github.com/coder/coder/pull/19006.patch

thub.com From 862c8f668aa314c7b47b9ab710954c7c6f05e211 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 22 Jul 2025 22:16:31 +0000 Subject: [PATCH 1/4] feat: make dynamic parameters opt-in by default for new templates --- coderd/database/dbgen/dbgen.go | 2 +- coderd/insights_test.go | 18 +++++---- coderd/templates.go | 4 +- coderd/templates_test.go | 4 +- ...icParameterFlowDeprecationWarning.test.tsx | 34 +++++++++++++++++ ...ClassicParameterFlowDeprecationWarning.tsx | 37 +++++++++++++++++++ .../CreateWorkspacePage.tsx | 18 ++++++++- .../CreateWorkspacePageView.tsx | 9 +++++ .../CreateWorkspacePageViewExperimental.tsx | 4 +- .../TemplateSettingsForm.tsx | 13 ++++--- .../WorkspaceParametersForm.tsx | 11 +++++- .../WorkspaceParametersPage.tsx | 21 +++++++++++ .../WorkspaceParametersPageExperimental.tsx | 4 +- ...orkspaceParametersPageViewExperimental.tsx | 2 +- site/src/testHelpers/entities.ts | 4 +- 15 files changed, 156 insertions(+), 29 deletions(-) create mode 100644 site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx create mode 100644 site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx diff --git a/coderd/database/dbgen/dbgen.go b/coderd/database/dbgen/dbgen.go index d5693afe98826..714847d582991 100644 --- a/coderd/database/dbgen/dbgen.go +++ b/coderd/database/dbgen/dbgen.go @@ -147,7 +147,7 @@ func Template(t testing.TB, db database.Store, seed database.Template) database. DisplayName: takeFirst(seed.DisplayName, testutil.GetRandomName(t)), AllowUserCancelWorkspaceJobs: seed.AllowUserCancelWorkspaceJobs, MaxPortSharingLevel: takeFirst(seed.MaxPortSharingLevel, database.AppSharingLevelOwner), - UseClassicParameterFlow: takeFirst(seed.UseClassicParameterFlow, true), + UseClassicParameterFlow: takeFirst(seed.UseClassicParameterFlow, false), }) require.NoError(t, err, "insert template") diff --git a/coderd/insights_test.go b/coderd/insights_test.go index ded030351a3b3..0a12c39caf695 100644 --- a/coderd/insights_test.go +++ b/coderd/insights_test.go @@ -665,10 +665,11 @@ func TestTemplateInsights_Golden(t *testing.T) { // where we can control the template ID. // createdTemplate := coderdtest.CreateTemplate(t, client, firstUser.OrganizationID, version.ID) createdTemplate := dbgen.Template(t, db, database.Template{ - ID: template.id, - ActiveVersionID: version.ID, - OrganizationID: firstUser.OrganizationID, - CreatedBy: firstUser.UserID, + ID: template.id, + ActiveVersionID: version.ID, + OrganizationID: firstUser.OrganizationID, + CreatedBy: firstUser.UserID, + UseClassicParameterFlow: true, GroupACL: database.TemplateACL{ firstUser.OrganizationID.String(): db2sdk.TemplateRoleActions(codersdk.TemplateRoleUse), }, @@ -1556,10 +1557,11 @@ func TestUserActivityInsights_Golden(t *testing.T) { // where we can control the template ID. // createdTemplate := coderdtest.CreateTemplate(t, client, firstUser.OrganizationID, version.ID) createdTemplate := dbgen.Template(t, db, database.Template{ - ID: template.id, - ActiveVersionID: version.ID, - OrganizationID: firstUser.OrganizationID, - CreatedBy: firstUser.UserID, + ID: template.id, + ActiveVersionID: version.ID, + OrganizationID: firstUser.OrganizationID, + CreatedBy: firstUser.UserID, + UseClassicParameterFlow: true, // Required for parameter usage tracking in this test GroupACL: database.TemplateACL{ firstUser.OrganizationID.String(): db2sdk.TemplateRoleActions(codersdk.TemplateRoleUse), }, diff --git a/coderd/templates.go b/coderd/templates.go index bba38bb033614..60f94e5cd29cc 100644 --- a/coderd/templates.go +++ b/coderd/templates.go @@ -197,8 +197,8 @@ func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque return } - // Default is true until dynamic parameters are promoted to stable. - useClassicParameterFlow := ptr.NilToDefault(createTemplate.UseClassicParameterFlow, true) + // Default is false as dynamic parameters are now the preferred approach. + useClassicParameterFlow := ptr.NilToDefault(createTemplate.UseClassicParameterFlow, false) // Make a temporary struct to represent the template. This is used for // auditing if any of the following checks fail. It will be overwritten when diff --git a/coderd/templates_test.go b/coderd/templates_test.go index 5e7fcea75609d..0858ce83325cc 100644 --- a/coderd/templates_test.go +++ b/coderd/templates_test.go @@ -77,7 +77,7 @@ func TestPostTemplateByOrganization(t *testing.T) { assert.Equal(t, expected.Name, got.Name) assert.Equal(t, expected.Description, got.Description) assert.Equal(t, expected.ActivityBumpMillis, got.ActivityBumpMillis) - assert.Equal(t, expected.UseClassicParameterFlow, true) // Current default is true + assert.Equal(t, expected.UseClassicParameterFlow, false) // Current default is false require.Len(t, auditor.AuditLogs(), 3) assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs()[0].Action) @@ -1551,7 +1551,7 @@ func TestPatchTemplateMeta(t *testing.T) { user := coderdtest.CreateFirstUser(t, client) version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) - require.True(t, template.UseClassicParameterFlow, "default is true") + require.False(t, template.UseClassicParameterFlow, "default is false") bTrue := true bFalse := false diff --git a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx new file mode 100644 index 0000000000000..4db00defed369 --- /dev/null +++ b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx @@ -0,0 +1,34 @@ +import { render, screen } from "@testing-library/react"; +import { ClassicParameterFlowDeprecationWarning } from "./ClassicParameterFlowDeprecationWarning"; + +jest.mock("modules/navigation", () => ({ + useLinks: () => () => "/mock-link", + linkToTemplate: () => "/mock-template-link", +})); + +describe("ClassicParameterFlowDeprecationWarning", () => { + const defaultProps = { + enabled: true, + organizationName: "test-org", + templateName: "test-template", + canUpdateTemplate: true, + }; + + it("renders warning when enabled and user has template update permissions", () => { + render(); + + expect(screen.getByText("deprecated")).toBeInTheDocument(); + expect(screen.getByText("Go to Template Settings")).toBeInTheDocument(); + }); + + it("does not render when enabled is false", () => { + const { container } = render( + + ); + + expect(container.firstChild).toBeNull(); + }); +}); diff --git a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx new file mode 100644 index 0000000000000..247e8b90c3cc7 --- /dev/null +++ b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx @@ -0,0 +1,37 @@ +import { Alert } from "components/Alert/Alert"; +import { Link } from "components/Link/Link"; +import { linkToTemplate, useLinks } from "modules/navigation"; +import type { FC } from "react"; + +interface ClassicParameterFlowDeprecationWarningProps { + organizationName: string; + templateName: string; + isEnabled: boolean; +} + +export const ClassicParameterFlowDeprecationWarning: FC< + ClassicParameterFlowDeprecationWarningProps +> = ({ organizationName, templateName, isEnabled }) => { + const getLink = useLinks(); + + if (!isEnabled) { + return null; + } + + const templateSettingsLink = `${getLink( + linkToTemplate(organizationName, templateName), + )}/settings`; + + return ( + +
+ This template is using the classic parameter flow, which will be{" "} + deprecated in a future release. + Please migrate to dynamic improved functionality. +
+ + Go to Template Settings + +
+ ); +}; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 243bd3cb9be2d..597c6f9bebd5e 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -69,6 +69,20 @@ const CreateWorkspacePage: FC = () => { }), enabled: !!templateQuery.data, }); + const templatePermissionsQuery = useQuery({ + ...checkAuthorization({ + checks: { + canUpdateTemplate: { + object: { + resource_type: "template", + resource_id: templateQuery.data?.id ?? "", + }, + action: "update", + }, + }, + }), + enabled: !!templateQuery.data, + }); const realizedVersionId = customVersionId ?? templateQuery.data?.active_version_id; const organizationId = templateQuery.data?.organization_id; @@ -90,9 +104,10 @@ const CreateWorkspacePage: FC = () => { const isLoadingFormData = templateQuery.isLoading || permissionsQuery.isLoading || + templatePermissionsQuery.isLoading || richParametersQuery.isLoading; const loadFormDataError = - templateQuery.error ?? permissionsQuery.error ?? richParametersQuery.error; + templateQuery.error ?? permissionsQuery.error ?? templatePermissionsQuery.error ?? richParametersQuery.error; const title = autoCreateWorkspaceMutation.isPending ? "Creating workspace..." @@ -208,6 +223,7 @@ const CreateWorkspacePage: FC = () => { startPollingExternalAuth={startPollingExternalAuth} hasAllRequiredExternalAuth={hasAllRequiredExternalAuth} permissions={permissionsQuery.data as CreateWorkspacePermissions} + templatePermissions={templatePermissionsQuery.data as { canUpdateTemplate: boolean }} parameters={realizedParameters as TemplateVersionParameter[]} presets={templateVersionPresetsQuery.data ?? []} creatingWorkspace={createWorkspaceMutation.isPending} diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 75c382f807b1b..d8d171276cc95 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -27,6 +27,7 @@ import { Switch } from "components/Switch/Switch"; import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; import { type FormikContextType, useFormik } from "formik"; import type { ExternalAuthPollingState } from "hooks/useExternalAuth"; +import { ClassicParameterFlowDeprecationWarning } from "modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning"; import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; import { type FC, useCallback, useEffect, useMemo, useState } from "react"; import { @@ -66,6 +67,7 @@ interface CreateWorkspacePageViewProps { autofillParameters: AutofillBuildParameter[]; presets: TypesGen.Preset[]; permissions: CreateWorkspacePermissions; + templatePermissions: { canUpdateTemplate: boolean }; creatingWorkspace: boolean; onCancel: () => void; onSubmit: ( @@ -91,6 +93,7 @@ export const CreateWorkspacePageView: FC = ({ autofillParameters, presets = [], permissions, + templatePermissions, creatingWorkspace, onSubmit, onCancel, @@ -245,6 +248,12 @@ export const CreateWorkspacePageView: FC = ({ + + View docs @@ -542,7 +542,7 @@ export const CreateWorkspacePageViewExperimental: FC< parameters cannot be modified once the workspace is created. View docs diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx index 677984e5e9e5a..359058f78761a 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx @@ -245,19 +245,20 @@ export const TemplateSettingsForm: FC = ({ label={ - Enable dynamic parameters for workspace creation + Enable dynamic parameters for workspace creation (recommended)
- The new workspace form allows you to design your template - with new form types and identity-aware conditional - parameters. The form will only present options that are - compatible and available. + The dynamic workspace form allows you to design your + template with additional form types and identity-aware + conditional parameters. This is the default option for new + templates. The classic workspace creation flow will be + deprecated in a future release.
Learn more diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index 00b8c2ae8464b..8d419d1bb3722 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -14,6 +14,7 @@ import { import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; import { Spinner } from "components/Spinner/Spinner"; import { useFormik } from "formik"; +import { ClassicParameterFlowDeprecationWarning } from "modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning"; import type { FC } from "react"; import { getFormHelpers } from "utils/formUtils"; import { @@ -33,6 +34,7 @@ interface WorkspaceParameterFormProps { autofillParams: AutofillBuildParameter[]; isSubmitting: boolean; canChangeVersions: boolean; + templatePermissions: { canUpdateTemplate: boolean } | undefined; error: unknown; onCancel: () => void; onSubmit: (values: WorkspaceParametersFormValues) => void; @@ -46,6 +48,7 @@ export const WorkspaceParametersForm: FC = ({ autofillParams, error, canChangeVersions, + templatePermissions, isSubmitting, }) => { const form = useFormik({ @@ -81,12 +84,16 @@ export const WorkspaceParametersForm: FC = ({ return ( <> {disabled && ( - + The template for this workspace requires automatic updates. Update the workspace to edit parameters. )} - + {hasNonEphemeralParameters && ( { const permissions = permissionsQuery.data as WorkspacePermissions | undefined; const canChangeVersions = Boolean(permissions?.updateWorkspaceVersion); + const templatePermissionsQuery = useQuery({ + ...checkAuthorization({ + checks: { + canUpdateTemplate: { + object: { + resource_type: "template", + resource_id: workspace.template_id, + }, + action: "update", + }, + }, + }), + enabled: workspace !== undefined, + }); + + const templatePermissions = templatePermissionsQuery.data as { canUpdateTemplate: boolean } | undefined; + return ( <> @@ -60,6 +77,7 @@ const WorkspaceParametersPage: FC = () => { { type WorkspaceParametersPageViewProps = { workspace: Workspace; canChangeVersions: boolean; + templatePermissions: { canUpdateTemplate: boolean } | undefined; data: Awaited> | undefined; submitError: unknown; isSubmitting: boolean; @@ -106,6 +125,7 @@ export const WorkspaceParametersPageView: FC< > = ({ workspace, canChangeVersions, + templatePermissions, data, submitError, onSubmit, @@ -129,6 +149,7 @@ export const WorkspaceParametersPageView: FC< ({ ...p, source: "active_build", diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx index 803dc4ff4fd48..dcb2fda09a17f 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx @@ -226,7 +226,7 @@ const WorkspaceParametersPageExperimental: FC = () => {
View docs @@ -261,7 +261,7 @@ const WorkspaceParametersPageExperimental: FC = () => { message="This workspace has no parameters" cta={ Learn more about parameters diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx index 14253ad51f827..52228f19d9f40 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx @@ -210,7 +210,7 @@ export const WorkspaceParametersPageViewExperimental: FC< parameters cannot be modified once the workspace is created. View docs diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 045d6ad06ddeb..953c5ff3e9702 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -826,7 +826,7 @@ export const MockTemplate: TypesGen.Template = { deprecated: false, deprecation_message: "", max_port_share_level: "public", - use_classic_parameter_flow: true, + use_classic_parameter_flow: false, }; const MockTemplateVersionFiles: TemplateVersionFiles = { @@ -1389,7 +1389,7 @@ export const MockWorkspace: TypesGen.Workspace = { MockTemplate.allow_user_cancel_workspace_jobs, template_active_version_id: MockTemplate.active_version_id, template_require_active_version: MockTemplate.require_active_version, - template_use_classic_parameter_flow: true, + template_use_classic_parameter_flow: false, outdated: false, owner_id: MockUserOwner.id, organization_id: MockOrganization.id, From 382403705fcd63271de8d8ac55b481647e0c6343 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 22 Jul 2025 22:20:13 +0000 Subject: [PATCH 2/4] fix: format --- .../ClassicParameterFlowDeprecationWarning.test.tsx | 9 +++++++-- .../ClassicParameterFlowDeprecationWarning.tsx | 4 ++-- .../pages/CreateWorkspacePage/CreateWorkspacePage.tsx | 9 +++++++-- .../WorkspaceParametersPage/WorkspaceParametersPage.tsx | 4 +++- .../WorkspaceParametersPageExperimental.tsx | 4 +++- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx index 4db00defed369..79abc4f9ada5f 100644 --- a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx +++ b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.test.tsx @@ -15,7 +15,12 @@ describe("ClassicParameterFlowDeprecationWarning", () => { }; it("renders warning when enabled and user has template update permissions", () => { - render(); + render( + , + ); expect(screen.getByText("deprecated")).toBeInTheDocument(); expect(screen.getByText("Go to Template Settings")).toBeInTheDocument(); @@ -26,7 +31,7 @@ describe("ClassicParameterFlowDeprecationWarning", () => { + />, ); expect(container.firstChild).toBeNull(); diff --git a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx index 247e8b90c3cc7..9786888000526 100644 --- a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx +++ b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx @@ -26,8 +26,8 @@ export const ClassicParameterFlowDeprecationWarning: FC<
This template is using the classic parameter flow, which will be{" "} - deprecated in a future release. - Please migrate to dynamic improved functionality. + deprecated in a future release. Please migrate to + dynamic improved functionality.
Go to Template Settings diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 597c6f9bebd5e..4f7b9b083d494 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -107,7 +107,10 @@ const CreateWorkspacePage: FC = () => { templatePermissionsQuery.isLoading || richParametersQuery.isLoading; const loadFormDataError = - templateQuery.error ?? permissionsQuery.error ?? templatePermissionsQuery.error ?? richParametersQuery.error; + templateQuery.error ?? + permissionsQuery.error ?? + templatePermissionsQuery.error ?? + richParametersQuery.error; const title = autoCreateWorkspaceMutation.isPending ? "Creating workspace..." @@ -223,7 +226,9 @@ const CreateWorkspacePage: FC = () => { startPollingExternalAuth={startPollingExternalAuth} hasAllRequiredExternalAuth={hasAllRequiredExternalAuth} permissions={permissionsQuery.data as CreateWorkspacePermissions} - templatePermissions={templatePermissionsQuery.data as { canUpdateTemplate: boolean }} + templatePermissions={ + templatePermissionsQuery.data as { canUpdateTemplate: boolean } + } parameters={realizedParameters as TemplateVersionParameter[]} presets={templateVersionPresetsQuery.data ?? []} creatingWorkspace={createWorkspaceMutation.isPending} diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx index 927c2ae38b69a..c0dca85aa471c 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx @@ -66,7 +66,9 @@ const WorkspaceParametersPage: FC = () => { enabled: workspace !== undefined, }); - const templatePermissions = templatePermissionsQuery.data as { canUpdateTemplate: boolean } | undefined; + const templatePermissions = templatePermissionsQuery.data as + | { canUpdateTemplate: boolean } + | undefined; return ( <> diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx index dcb2fda09a17f..1415b1b2bc5f1 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx @@ -261,7 +261,9 @@ const WorkspaceParametersPageExperimental: FC = () => { message="This workspace has no parameters" cta={ Learn more about parameters From a62ba632d6e2ddffecf33098bba429a4665f8703 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 22 Jul 2025 22:35:46 +0000 Subject: [PATCH 3/4] fix: fix stories --- .../CreateWorkspacePage/CreateWorkspacePageView.stories.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index f085c74c57073..94575dded8359 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -30,6 +30,7 @@ const meta: Meta = { createWorkspaceForAny: true, }, onCancel: action("onCancel"), + templatePermissions: { canUpdateTemplate: true }, }, }; From 6624768cfd16443f1c08f97311d253cfd482fa37 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Thu, 24 Jul 2025 20:08:45 +0000 Subject: [PATCH 4/4] chore: update warning content --- .../ClassicParameterFlowDeprecationWarning.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx index 9786888000526..f46f4b5e81b36 100644 --- a/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx +++ b/site/src/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning.tsx @@ -2,6 +2,7 @@ import { Alert } from "components/Alert/Alert"; import { Link } from "components/Link/Link"; import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; +import { docs } from "utils/docs"; interface ClassicParameterFlowDeprecationWarningProps { organizationName: string; @@ -26,9 +27,17 @@ export const ClassicParameterFlowDeprecationWarning: FC<
This template is using the classic parameter flow, which will be{" "} - deprecated in a future release. Please migrate to - dynamic improved functionality. + deprecated and removed in a future release. Please + migrate to{" "} + + dynamic parameters + {" "} + on template settings for improved functionality.
+ Go to Template Settings








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/coder/coder/pull/19006.patch

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy