Update app.py
Browse files
app.py
CHANGED
@@ -63,7 +63,7 @@ st.session_state.setdefault('selected_model_type', "Causal LM")
|
|
63 |
st.session_state.setdefault('selected_model', "None")
|
64 |
st.session_state.setdefault('cam0_file', None)
|
65 |
st.session_state.setdefault('cam1_file', None)
|
66 |
-
st.session_state.setdefault('characters', [])
|
67 |
if 'asset_gallery_container' not in st.session_state:
|
68 |
st.session_state['asset_gallery_container'] = st.sidebar.empty()
|
69 |
|
@@ -670,7 +670,7 @@ with tab_character_editor:
|
|
670 |
st.header("Character Editor 🧑🎨")
|
671 |
st.subheader("Create Your Character")
|
672 |
|
673 |
-
# Character creation form
|
674 |
if st.button("Randomize Content 🎲"):
|
675 |
name = f"Character_{random.randint(1000, 9999)}"
|
676 |
gender = random.choice(["Male", "Female", "Non-binary"])
|
@@ -681,25 +681,25 @@ with tab_character_editor:
|
|
681 |
st.session_state['char_greeting'] = greeting.format(char=name)
|
682 |
|
683 |
name = st.text_input("Name (3-25 characters, letters, numbers, underscore, hyphen, space only)",
|
684 |
-
value=st.session_state.get('char_name', ''),
|
685 |
max_chars=25,
|
686 |
key="char_name")
|
687 |
gender = st.radio("Gender", ["Male", "Female", "Non-binary"],
|
688 |
index=["Male", "Female", "Non-binary"].index(st.session_state.get('char_gender', "Male")),
|
689 |
key="char_gender")
|
690 |
intro = st.text_area("Intro (Publicly seen)",
|
691 |
-
value=st.session_state.get('char_intro', ''),
|
692 |
max_chars=300,
|
693 |
key="char_intro")
|
694 |
greeting = st.text_area("Greeting",
|
695 |
-
value=st.session_state.get('char_greeting', ''),
|
696 |
max_chars=300,
|
697 |
key="char_greeting")
|
698 |
|
699 |
if st.button("Create Character", key="create_character"):
|
700 |
if not name or len(name) < 3:
|
701 |
st.error("Name must be 3-25 characters long.")
|
702 |
-
elif not re.match(r'^[a-zA-Z0-
|
703 |
st.error("Name can only contain letters, numbers, underscores, hyphens, and spaces.")
|
704 |
elif not intro or not greeting:
|
705 |
st.error("Intro and Greeting cannot be empty.")
|
@@ -710,7 +710,7 @@ with tab_character_editor:
|
|
710 |
"intro": intro,
|
711 |
"greeting": greeting,
|
712 |
"created_at": datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
|
713 |
-
"tags": ["OC"]
|
714 |
}
|
715 |
save_character(character_data)
|
716 |
st.success(f"Character '{name}' created successfully!")
|
@@ -726,7 +726,7 @@ with tab_character_gallery:
|
|
726 |
characters = st.session_state.get('characters', [])
|
727 |
if characters:
|
728 |
st.subheader("Your Characters")
|
729 |
-
cols = st.columns(3)
|
730 |
for idx, char in enumerate(characters):
|
731 |
with cols[idx % 3]:
|
732 |
st.markdown(f"**{char['name']}**")
|
|
|
63 |
st.session_state.setdefault('selected_model', "None")
|
64 |
st.session_state.setdefault('cam0_file', None)
|
65 |
st.session_state.setdefault('cam1_file', None)
|
66 |
+
st.session_state.setdefault('characters', [])
|
67 |
if 'asset_gallery_container' not in st.session_state:
|
68 |
st.session_state['asset_gallery_container'] = st.sidebar.empty()
|
69 |
|
|
|
670 |
st.header("Character Editor 🧑🎨")
|
671 |
st.subheader("Create Your Character")
|
672 |
|
673 |
+
# Character creation form with default values
|
674 |
if st.button("Randomize Content 🎲"):
|
675 |
name = f"Character_{random.randint(1000, 9999)}"
|
676 |
gender = random.choice(["Male", "Female", "Non-binary"])
|
|
|
681 |
st.session_state['char_greeting'] = greeting.format(char=name)
|
682 |
|
683 |
name = st.text_input("Name (3-25 characters, letters, numbers, underscore, hyphen, space only)",
|
684 |
+
value=st.session_state.get('char_name', 'Character_3857'),
|
685 |
max_chars=25,
|
686 |
key="char_name")
|
687 |
gender = st.radio("Gender", ["Male", "Female", "Non-binary"],
|
688 |
index=["Male", "Female", "Non-binary"].index(st.session_state.get('char_gender', "Male")),
|
689 |
key="char_gender")
|
690 |
intro = st.text_area("Intro (Publicly seen)",
|
691 |
+
value=st.session_state.get('char_intro', 'Character_3857 is a gentle healer who speaks softly, always carrying herbs and a warm smile.'),
|
692 |
max_chars=300,
|
693 |
key="char_intro")
|
694 |
greeting = st.text_area("Greeting",
|
695 |
+
value=st.session_state.get('char_greeting', "A soft hand touches your shoulder. 'I’m Character_3857, here to heal your wounds—don’t worry, I’ve got you.'"),
|
696 |
max_chars=300,
|
697 |
key="char_greeting")
|
698 |
|
699 |
if st.button("Create Character", key="create_character"):
|
700 |
if not name or len(name) < 3:
|
701 |
st.error("Name must be 3-25 characters long.")
|
702 |
+
elif not re.match(r'^[a-zA-Z0-9 _-]+$', name): # Fixed regex to avoid bad character range
|
703 |
st.error("Name can only contain letters, numbers, underscores, hyphens, and spaces.")
|
704 |
elif not intro or not greeting:
|
705 |
st.error("Intro and Greeting cannot be empty.")
|
|
|
710 |
"intro": intro,
|
711 |
"greeting": greeting,
|
712 |
"created_at": datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
|
713 |
+
"tags": ["OC"]
|
714 |
}
|
715 |
save_character(character_data)
|
716 |
st.success(f"Character '{name}' created successfully!")
|
|
|
726 |
characters = st.session_state.get('characters', [])
|
727 |
if characters:
|
728 |
st.subheader("Your Characters")
|
729 |
+
cols = st.columns(3)
|
730 |
for idx, char in enumerate(characters):
|
731 |
with cols[idx % 3]:
|
732 |
st.markdown(f"**{char['name']}**")
|