Deep fix: CSS loading order and exact test_image.py plot settings
Browse files- Moved critical CSS to top of file with \!important flags for instant blue styling
- Applied exact test_image.py settings: 9x6 figsize @ 1200 DPI
- Creates 10,800x7,200 pixel images for ultra-sharp display
- Display width set to 1080px for perfect 10:1 pixel density
- Both UI responsiveness and plot quality issues resolved
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
- app.py +32 -3
- new_system_prompt.txt +4 -4
- src.py +1 -1
- vayuchat.mplstyle +1 -1
app.py
CHANGED
@@ -36,6 +36,35 @@ st.set_page_config(
|
|
36 |
initial_sidebar_state="expanded"
|
37 |
)
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
# JavaScript for interactions
|
40 |
# st.markdown("""
|
41 |
# <script>
|
@@ -419,7 +448,7 @@ def show_custom_response(response):
|
|
419 |
content = response.get("content", "")
|
420 |
|
421 |
if role == "user":
|
422 |
-
# User message with right alignment -
|
423 |
st.markdown(f"""
|
424 |
<div style='display: flex; justify-content: flex-end; margin: 1rem 0;'>
|
425 |
<div class='user-message'>
|
@@ -506,7 +535,7 @@ def show_custom_response(response):
|
|
506 |
<div style='margin: 1rem 0; display: flex; justify-content: center;'>
|
507 |
</div>
|
508 |
""", unsafe_allow_html=True)
|
509 |
-
st.image(content, width=
|
510 |
return {"is_image": True}
|
511 |
# Also handle case where content shows filename but we want to show image
|
512 |
elif isinstance(content, str) and any(ext in content for ext in ['.png', '.jpg']):
|
@@ -520,7 +549,7 @@ def show_custom_response(response):
|
|
520 |
<div style='margin: 1rem 0; display: flex; justify-content: center;'>
|
521 |
</div>
|
522 |
""", unsafe_allow_html=True)
|
523 |
-
st.image(filename, width=
|
524 |
return {"is_image": True}
|
525 |
except:
|
526 |
pass
|
|
|
36 |
initial_sidebar_state="expanded"
|
37 |
)
|
38 |
|
39 |
+
# CRITICAL: CSS must be loaded FIRST for immediate blue message styling
|
40 |
+
st.markdown("""
|
41 |
+
<style>
|
42 |
+
/* User message styling - MUST be defined early */
|
43 |
+
.user-message {
|
44 |
+
background: #3b82f6 !important;
|
45 |
+
color: white !important;
|
46 |
+
padding: 0.75rem 1rem !important;
|
47 |
+
border-radius: 7px !important;
|
48 |
+
max-width: 95% !important;
|
49 |
+
}
|
50 |
+
|
51 |
+
/* Assistant message styling */
|
52 |
+
.assistant-message {
|
53 |
+
background: #f1f5f9 !important;
|
54 |
+
color: #334155 !important;
|
55 |
+
padding: 0.75rem 1rem !important;
|
56 |
+
border-radius: 12px !important;
|
57 |
+
max-width: 85% !important;
|
58 |
+
}
|
59 |
+
|
60 |
+
.assistant-info {
|
61 |
+
font-size: 0.875rem !important;
|
62 |
+
color: #6b7280 !important;
|
63 |
+
margin-bottom: 5px !important;
|
64 |
+
}
|
65 |
+
</style>
|
66 |
+
""", unsafe_allow_html=True)
|
67 |
+
|
68 |
# JavaScript for interactions
|
69 |
# st.markdown("""
|
70 |
# <script>
|
|
|
448 |
content = response.get("content", "")
|
449 |
|
450 |
if role == "user":
|
451 |
+
# User message with right alignment - CSS now loaded at top of file
|
452 |
st.markdown(f"""
|
453 |
<div style='display: flex; justify-content: flex-end; margin: 1rem 0;'>
|
454 |
<div class='user-message'>
|
|
|
535 |
<div style='margin: 1rem 0; display: flex; justify-content: center;'>
|
536 |
</div>
|
537 |
""", unsafe_allow_html=True)
|
538 |
+
st.image(content, width=1080, caption="Generated Visualization")
|
539 |
return {"is_image": True}
|
540 |
# Also handle case where content shows filename but we want to show image
|
541 |
elif isinstance(content, str) and any(ext in content for ext in ['.png', '.jpg']):
|
|
|
549 |
<div style='margin: 1rem 0; display: flex; justify-content: center;'>
|
550 |
</div>
|
551 |
""", unsafe_allow_html=True)
|
552 |
+
st.image(filename, width=1080, caption="Generated Visualization")
|
553 |
return {"is_image": True}
|
554 |
except:
|
555 |
pass
|
new_system_prompt.txt
CHANGED
@@ -33,11 +33,11 @@ DATA SAFETY:
|
|
33 |
- Use .dropna() to remove missing values before analysis
|
34 |
|
35 |
PLOTTING REQUIREMENTS:
|
36 |
-
- Create plots for visualization requests: fig, ax = plt.subplots(figsize=(
|
37 |
-
-
|
38 |
-
-
|
|
|
39 |
- For non-plots: answer = "text result"
|
40 |
-
- NEVER use plt.savefig() - always use st.pyplot(fig) for direct display
|
41 |
|
42 |
BASIC ERROR PREVENTION:
|
43 |
- Use try/except for complex operations
|
|
|
33 |
- Use .dropna() to remove missing values before analysis
|
34 |
|
35 |
PLOTTING REQUIREMENTS:
|
36 |
+
- Create plots for visualization requests: fig, ax = plt.subplots(figsize=(9, 6))
|
37 |
+
- Save plots with ULTRA high resolution: filename = f"plot_{uuid.uuid4().hex[:8]}.png"; plt.savefig(filename, dpi=1200, bbox_inches='tight', facecolor='white', edgecolor='none')
|
38 |
+
- Close plots: plt.close()
|
39 |
+
- Store filename: answer = filename
|
40 |
- For non-plots: answer = "text result"
|
|
|
41 |
|
42 |
BASIC ERROR PREVENTION:
|
43 |
- Use try/except for complex operations
|
src.py
CHANGED
@@ -149,7 +149,7 @@ def ask_question(model_name, question):
|
|
149 |
# Skip style file and set everything manually to ensure it works
|
150 |
plt.rcParams['figure.dpi'] = 1200
|
151 |
plt.rcParams['savefig.dpi'] = 1200
|
152 |
-
plt.rcParams['figure.figsize'] = [
|
153 |
plt.rcParams['figure.facecolor'] = 'white'
|
154 |
plt.rcParams['savefig.facecolor'] = 'white'
|
155 |
plt.rcParams['savefig.bbox'] = 'tight'
|
|
|
149 |
# Skip style file and set everything manually to ensure it works
|
150 |
plt.rcParams['figure.dpi'] = 1200
|
151 |
plt.rcParams['savefig.dpi'] = 1200
|
152 |
+
plt.rcParams['figure.figsize'] = [9, 6]
|
153 |
plt.rcParams['figure.facecolor'] = 'white'
|
154 |
plt.rcParams['savefig.facecolor'] = 'white'
|
155 |
plt.rcParams['savefig.bbox'] = 'tight'
|
vayuchat.mplstyle
CHANGED
@@ -16,7 +16,7 @@ legend.fontsize: 9
|
|
16 |
figure.dpi: 1200
|
17 |
figure.facecolor: white
|
18 |
figure.edgecolor: none
|
19 |
-
figure.figsize:
|
20 |
figure.autolayout: True
|
21 |
|
22 |
# Modern Color Palette (inspired by Tailwind/GitHub)
|
|
|
16 |
figure.dpi: 1200
|
17 |
figure.facecolor: white
|
18 |
figure.edgecolor: none
|
19 |
+
figure.figsize: 9, 6
|
20 |
figure.autolayout: True
|
21 |
|
22 |
# Modern Color Palette (inspired by Tailwind/GitHub)
|