diff --git a/content-gen/src/app/frontend/src/components/ChatHistory.tsx b/content-gen/src/app/frontend/src/components/ChatHistory.tsx
index ed9f97762..e3e24b99f 100644
--- a/content-gen/src/app/frontend/src/components/ChatHistory.tsx
+++ b/content-gen/src/app/frontend/src/components/ChatHistory.tsx
@@ -335,6 +335,20 @@ function ConversationItem({
const handleRenameConfirm = async () => {
const trimmedValue = renameValue.trim();
+ // Validate before API call
+ if (trimmedValue.length < 5) {
+ setRenameError('Conversation name must be at least 5 characters');
+ return;
+ }
+ if (trimmedValue.length > 50) {
+ setRenameError('Conversation name cannot exceed 50 characters');
+ return;
+ }
+ if (!/[a-zA-Z0-9]/.test(trimmedValue)) {
+ setRenameError('Conversation name must contain at least one letter or number');
+ return;
+ }
+
if (trimmedValue === conversation.title) {
setIsRenameDialogOpen(false);
setRenameError('');
@@ -454,11 +468,18 @@ function ConversationItem({
{
const newValue = e.target.value;
setRenameValue(newValue);
if (newValue.trim() === '') {
setRenameError('Conversation name cannot be empty or contain only spaces');
+ } else if (newValue.trim().length < 5) {
+ setRenameError('Conversation name must be at least 5 characters');
+ } else if (!/[a-zA-Z0-9]/.test(newValue)) {
+ setRenameError('Conversation name must contain at least one letter or number');
+ } else if (newValue.length > 50) {
+ setRenameError('Conversation name cannot exceed 50 characters');
} else {
setRenameError('');
}
@@ -473,6 +494,16 @@ function ConversationItem({
placeholder="Enter conversation name"
style={{ width: '100%' }}
/>
+
+ Maximum 50 characters ({renameValue.length}/50)
+
{renameError && (
50}
>
Rename