diff --git a/CHANGELOG.md b/CHANGELOG.md index fcd6c8109a..3f21af8ba9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,8 @@ and this project adheres to ### Fixed +- Allow special characters and non-Latin scripts in workflow step names + [#4577](https://github.com/OpenFn/lightning/issues/4577) - Consider manual runs for "next cron run input" via the `last_run_final_dataclip` function [#4584](https://github.com/OpenFn/lightning/issues/4584) diff --git a/assets/js/collaborative-editor/types/job.ts b/assets/js/collaborative-editor/types/job.ts index 53a06a379f..657ac9fa71 100644 --- a/assets/js/collaborative-editor/types/job.ts +++ b/assets/js/collaborative-editor/types/job.ts @@ -20,7 +20,6 @@ export const JobSchema = z .string() .min(1, "Job name can't be blank") .max(100, "Job name shouldn't be longer than 100 characters.") - .regex(/^[a-zA-Z0-9_\- ]*$/, "Job name can't include special characters.") .transform(val => val.trim()), // Auto-trim whitespace like backend body: z.string().min(1, "can't be blank"), adaptor: adaptorSchema.default('@openfn/language-common@latest'), diff --git a/assets/js/workflow-diagram/nodes/PlaceholderJob.tsx b/assets/js/workflow-diagram/nodes/PlaceholderJob.tsx index ba8f6abe1f..54b5003a9b 100644 --- a/assets/js/workflow-diagram/nodes/PlaceholderJob.tsx +++ b/assets/js/workflow-diagram/nodes/PlaceholderJob.tsx @@ -77,15 +77,6 @@ const PlaceholderJobNode = ({ id, data, selected }: NodeProps) => { }; } - const regex = /^[a-zA-Z0-9_\- ]*$/; - if (!regex.test(name)) { - return { - isValid: false, - message: - 'Name can only contain alphanumeric characters, underscores, dashes, and spaces.', - }; - } - return { isValid: true, message: 'Valid name.', diff --git a/lib/lightning/workflows/job.ex b/lib/lightning/workflows/job.ex index 8470cdf7fc..05ed47953c 100644 --- a/lib/lightning/workflows/job.ex +++ b/lib/lightning/workflows/job.ex @@ -113,9 +113,6 @@ defmodule Lightning.Workflows.Job do max: 100, message: "job name should be at most %{count} character(s)" ) - |> validate_format(:name, ~r/^[a-zA-Z0-9_\- ]*$/, - message: "job name has invalid format" - ) end defp validate_keychain_credential_project_membership(changeset) do diff --git a/test/lightning/workflows/job_test.exs b/test/lightning/workflows/job_test.exs index 92468528fd..1b8a0d4c82 100644 --- a/test/lightning/workflows/job_test.exs +++ b/test/lightning/workflows/job_test.exs @@ -152,11 +152,11 @@ defmodule Lightning.Workflows.JobTest do assert errors[:name] == ["job name should be at most 100 character(s)"] end - test "name can't contain non url-safe chars" do - ["My project @ OpenFn", "Can't have a / slash"] + test "name accepts special characters and non-latin scripts" do + ["My project @ OpenFn", "Can't have a / slash", "حساب", "étape 1"] |> Enum.each(fn name -> errors = Job.changeset(%Job{}, %{name: name}) |> errors_on() - assert errors[:name] == ["job name has invalid format"] + refute errors[:name] end) end