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) => {