Spaces:
Running
Running
Use emoji icons; :material/ names rendered as literal text
Browse filesrequirements.txt pins no streamlit version and the resolved build does not support
the :material/name: icon syntax, so the alert boxes rendered the raw strings
"trending_up" and "help" next to their messages.
- streamlit_app.py +4 -4
streamlit_app.py
CHANGED
|
@@ -68,11 +68,11 @@ try:
|
|
| 68 |
from trade_analysis.market_session import banner as _banner, market_status
|
| 69 |
_ms = market_status()
|
| 70 |
if _ms.get("is_open"):
|
| 71 |
-
st.success(_banner(_ms), icon="
|
| 72 |
elif _ms.get("state") == "unknown":
|
| 73 |
st.info(_banner(_ms))
|
| 74 |
else:
|
| 75 |
-
st.warning(_banner(_ms), icon="
|
| 76 |
except Exception as _e: # noqa: BLE001
|
| 77 |
st.caption(f"Session status unavailable: {_e}")
|
| 78 |
|
|
@@ -165,7 +165,7 @@ if submitted:
|
|
| 165 |
if bits:
|
| 166 |
st.caption(" · ".join(bits))
|
| 167 |
if market.get("warning"):
|
| 168 |
-
st.warning(market["warning"], icon="
|
| 169 |
|
| 170 |
# Tiles adapt to the verdict. A "Position Size 0.00" on a HOLD is not information;
|
| 171 |
# the margin to the gate that produced the HOLD is.
|
|
@@ -194,7 +194,7 @@ if submitted:
|
|
| 194 |
t3.metric("Hold", data.get("expected_hold_time", "—"))
|
| 195 |
|
| 196 |
if verdict.get("blocking_reason"):
|
| 197 |
-
st.info(verdict["blocking_reason"], icon="
|
| 198 |
|
| 199 |
notes = [p.strip() for p in str(data.get("reasoning", "")).split(". ")
|
| 200 |
if p.strip().startswith(("Reversal", "Gap", "Overnight"))]
|
|
|
|
| 68 |
from trade_analysis.market_session import banner as _banner, market_status
|
| 69 |
_ms = market_status()
|
| 70 |
if _ms.get("is_open"):
|
| 71 |
+
st.success(_banner(_ms), icon="📈")
|
| 72 |
elif _ms.get("state") == "unknown":
|
| 73 |
st.info(_banner(_ms))
|
| 74 |
else:
|
| 75 |
+
st.warning(_banner(_ms), icon="🕒")
|
| 76 |
except Exception as _e: # noqa: BLE001
|
| 77 |
st.caption(f"Session status unavailable: {_e}")
|
| 78 |
|
|
|
|
| 165 |
if bits:
|
| 166 |
st.caption(" · ".join(bits))
|
| 167 |
if market.get("warning"):
|
| 168 |
+
st.warning(market["warning"], icon="⚠️")
|
| 169 |
|
| 170 |
# Tiles adapt to the verdict. A "Position Size 0.00" on a HOLD is not information;
|
| 171 |
# the margin to the gate that produced the HOLD is.
|
|
|
|
| 194 |
t3.metric("Hold", data.get("expected_hold_time", "—"))
|
| 195 |
|
| 196 |
if verdict.get("blocking_reason"):
|
| 197 |
+
st.info(verdict["blocking_reason"], icon="💡")
|
| 198 |
|
| 199 |
notes = [p.strip() for p in str(data.get("reasoning", "")).split(". ")
|
| 200 |
if p.strip().startswith(("Reversal", "Gap", "Overnight"))]
|