diff --git a/apps/api/sharedLibs/html-transformer/src/lib.rs b/apps/api/sharedLibs/html-transformer/src/lib.rs index 4b1b57cf..f5eb86e5 100644 --- a/apps/api/sharedLibs/html-transformer/src/lib.rs +++ b/apps/api/sharedLibs/html-transformer/src/lib.rs @@ -128,7 +128,9 @@ pub unsafe extern "C" fn extract_metadata(html: *const libc::c_char) -> *mut i8 if let Some(v) = out.get(name) { match v { Value::String(_) => { - out.insert(name.to_string(), Value::Array(vec! [v.clone(), Value::String(content.to_string())])); + if name != "title" { // preserve title tag in metadata + out.insert(name.to_string(), Value::Array(vec! [v.clone(), Value::String(content.to_string())])); + } }, Value::Array(_) => { match out.get_mut(name) { diff --git a/apps/api/src/controllers/v1/types.ts b/apps/api/src/controllers/v1/types.ts index 13b14116..b8ed65df 100644 --- a/apps/api/src/controllers/v1/types.ts +++ b/apps/api/src/controllers/v1/types.ts @@ -34,7 +34,7 @@ export const url = z.preprocess( .url() .regex(/^https?:\/\//, "URL uses unsupported protocol") .refine( - (x) => /\.[a-z]{2,}(:\d+)?([\/?#]|$)/i.test(x), + (x) => /\.[a-zA-Z\u0400-\u04FF\u0500-\u052F\u2DE0-\u2DFF\uA640-\uA69F]{2,}(:\d+)?([\/?#]|$)/i.test(x), "URL must have a valid top-level domain or be a valid path", ) .refine((x) => {