Shrink avatar, rename header to Vibe-Coded by, add version line and About page
Browse files- app.py +34 -5
- src/ui_theme.py +4 -3
app.py
CHANGED
|
@@ -654,16 +654,12 @@ with st.sidebar:
|
|
| 654 |
<span style="font-size:0.82rem; color:#000;">
|
| 655 |
ISA 444 · Miami University
|
| 656 |
</span>
|
| 657 |
-
<div style="margin-top:0.35rem; font-size:0.75rem; color:#000;">
|
| 658 |
-
Vibe-Coded by <strong>Fadel M. Megahed</strong><br>
|
| 659 |
-
Version <strong>0.2.0</strong>
|
| 660 |
-
</div>
|
| 661 |
</div>
|
| 662 |
""",
|
| 663 |
unsafe_allow_html=True,
|
| 664 |
)
|
| 665 |
st.divider()
|
| 666 |
-
st.subheader("
|
| 667 |
st.markdown(
|
| 668 |
"""
|
| 669 |
<div class="dev-card">
|
|
@@ -710,6 +706,7 @@ with st.sidebar:
|
|
| 710 |
""",
|
| 711 |
unsafe_allow_html=True,
|
| 712 |
)
|
|
|
|
| 713 |
st.divider()
|
| 714 |
st.header("Data Input")
|
| 715 |
|
|
@@ -852,6 +849,38 @@ if cleaned_df is None or not y_cols:
|
|
| 852 |
st.write(
|
| 853 |
"Upload a CSV or choose a demo dataset from the sidebar to get started."
|
| 854 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 855 |
st.stop()
|
| 856 |
|
| 857 |
# If QueryChat is active, use its filtered df
|
|
|
|
| 654 |
<span style="font-size:0.82rem; color:#000;">
|
| 655 |
ISA 444 · Miami University
|
| 656 |
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 657 |
</div>
|
| 658 |
""",
|
| 659 |
unsafe_allow_html=True,
|
| 660 |
)
|
| 661 |
st.divider()
|
| 662 |
+
st.subheader("Vibe-Coded by:")
|
| 663 |
st.markdown(
|
| 664 |
"""
|
| 665 |
<div class="dev-card">
|
|
|
|
| 706 |
""",
|
| 707 |
unsafe_allow_html=True,
|
| 708 |
)
|
| 709 |
+
st.caption("v0.2.0 · Last updated Feb 2026")
|
| 710 |
st.divider()
|
| 711 |
st.header("Data Input")
|
| 712 |
|
|
|
|
| 849 |
st.write(
|
| 850 |
"Upload a CSV or choose a demo dataset from the sidebar to get started."
|
| 851 |
)
|
| 852 |
+
|
| 853 |
+
col_about, col_how = st.columns(2)
|
| 854 |
+
with col_about:
|
| 855 |
+
st.subheader("About")
|
| 856 |
+
st.markdown(
|
| 857 |
+
"An interactive app for **ISA 444** students at Miami University "
|
| 858 |
+
"to explore time-series data, create publication-quality charts, "
|
| 859 |
+
"and get AI-powered chart interpretation."
|
| 860 |
+
)
|
| 861 |
+
st.markdown(
|
| 862 |
+
"**Features:**\n"
|
| 863 |
+
"- Auto-detect delimiters, date columns, and numeric formats\n"
|
| 864 |
+
"- 9+ chart types: line, seasonal, ACF/PACF, decomposition, and more\n"
|
| 865 |
+
"- Multi-series support with panel and spaghetti plots\n"
|
| 866 |
+
"- AI chart interpretation via OpenAI vision\n"
|
| 867 |
+
"- Natural-language data filtering with QueryChat"
|
| 868 |
+
)
|
| 869 |
+
with col_how:
|
| 870 |
+
st.subheader("How to Use")
|
| 871 |
+
st.markdown(
|
| 872 |
+
"1. **Upload** a CSV file or pick a **demo dataset** from the sidebar\n"
|
| 873 |
+
"2. **Select** a date column and one or more value columns\n"
|
| 874 |
+
"3. **Choose** a chart type from the *Single Series* tab\n"
|
| 875 |
+
"4. Use the *Few Series* and *Many Series* tabs for multi-column comparisons\n"
|
| 876 |
+
"5. Expand **Summary Statistics** for descriptive stats and stationarity tests\n"
|
| 877 |
+
"6. Click **Interpret Chart with AI** to get AI-generated insights"
|
| 878 |
+
)
|
| 879 |
+
st.markdown(
|
| 880 |
+
"**Privacy:** All processing is in-memory. Only chart images "
|
| 881 |
+
"(never raw data) are sent to OpenAI when you click Interpret."
|
| 882 |
+
)
|
| 883 |
+
|
| 884 |
st.stop()
|
| 885 |
|
| 886 |
# If QueryChat is active, use its filtered df
|
src/ui_theme.py
CHANGED
|
@@ -113,9 +113,10 @@ def apply_miami_theme() -> None:
|
|
| 113 |
gap: 0.5rem;
|
| 114 |
align-items: flex-start;
|
| 115 |
}}
|
| 116 |
-
.dev-avatar
|
| 117 |
-
width:
|
| 118 |
-
height:
|
|
|
|
| 119 |
fill: {_BLACK};
|
| 120 |
}}
|
| 121 |
.dev-name {{
|
|
|
|
| 113 |
gap: 0.5rem;
|
| 114 |
align-items: flex-start;
|
| 115 |
}}
|
| 116 |
+
.dev-avatar {{
|
| 117 |
+
width: 28px;
|
| 118 |
+
height: 28px;
|
| 119 |
+
min-width: 28px;
|
| 120 |
fill: {_BLACK};
|
| 121 |
}}
|
| 122 |
.dev-name {{
|