Spaces:
Sleeping
Sleeping
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']}**")
|