In the chat application example given to you, I want you to make the elements wider in the page. Currently, chat boxes are quite narrow, and it would be nice if they could adapt better to the width of the window.
```py
import streamlit as st
from gradio_client import Client
import json
import os

# Initialize client
@st.cache_resource
def get_client():
    return Client('yuntian-deng/o1mini')

client = get_client()

# File path for history
HISTORY_FILE = 'history.json'

# Load history
def load_history():
    if os.path.exists(HISTORY_FILE):
        try:
            with open(HISTORY_FILE, 'r') as f:
                history = json.load(f)
                # Ensure history is a list of dictionaries with 'user' and 'bot'
                if isinstance(history, list) and all(isinstance(entry, dict) for entry in history):
                    return history
        except:
            pass
    return []

# Save history
def save_history(history):
    with open(HISTORY_FILE, 'w') as f:
        json.dump(history, f, indent=2)

# Initialize session state
if 'history' not in st.session_state:
    st.session_state.history = load_history()

st.title("Interactive Chat Interface")

st.markdown("### Chat History")

# Display and edit history
for idx, entry in enumerate(st.session_state.history):
    with st.expander(f"Exchange {idx + 1}", expanded=True):
        user_key = f"user_{idx}"
        bot_key = f"bot_{idx}"
        # Editable text areas
        user_text = st.text_area("User:", value=entry.get('user', ''), key=user_key, height=100)
        bot_text = st.text_area("Bot:", value=entry.get('bot', ''), key=bot_key, height=100)
        # Update history with edited text
        st.session_state.history[idx]['user'] = user_text
        st.session_state.history[idx]['bot'] = bot_text

st.markdown("---")
st.markdown("### New Message")

# Input for new message
new_message = st.text_area("Enter your message here:", height=100)

# Button to send message
if st.button("Send"):
    if new_message.strip() != "":
        # Append user message to history
        st.session_state.history.append({'user': new_message.strip(), 'bot': ""})
        save_history(st.session_state.history)
        
        # Prepare inputs for the model
        inputs = []
        for entry in st.session_state.history:
            inputs.append(entry['user'])
            if entry['bot']:
                inputs.append(entry['bot'])
        
        # Call the model
        try:
            result = client.predict(
                inputs=inputs,
                top_p=1,
                temperature=1,
                chat_counter=0,
                chatbot=[],
                api_name='/predict'
            )
            if result and len(result) > 0 and len(result[0]) > 0 and len(result[0][0]) > 1:
                output = result[0][0][1]
            else:
                output = "Sorry, I couldn't generate a response."
        except Exception as e:
            output = f"Error: {str(e)}"
        
        # Append bot response to history
        st.session_state.history[-1]['bot'] = output
        save_history(st.session_state.history)
        
        # Clear the input area
        st.rerun()

# Button to save edits
if st.button("Save Edits"):
    save_history(st.session_state.history)
    st.success("Edits saved successfully!")
```