<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prism.git/app.py, branch feature/valuation-redesign</title>
<subtitle>Webapp for stock analysis</subtitle>
<id>https://git.tylerhoang.xyz/prism.git/atom?h=feature%2Fvaluation-redesign</id>
<link rel='self' href='https://git.tylerhoang.xyz/prism.git/atom?h=feature%2Fvaluation-redesign'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/'/>
<updated>2026-05-16T08:56:51Z</updated>
<entry>
<title>Fix render_top_movers kwarg incompatibility with st.fragment</title>
<updated>2026-05-16T08:56:51Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T08:56:51Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=5424b83d8173435632dd59f4072d37ac68d33593'/>
<id>urn:sha1:5424b83d8173435632dd59f4072d37ac68d33593</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Sidebar chrome: vertical nav, live clock, brand v1.2, drop snapshot</title>
<updated>2026-05-16T08:52:32Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T08:52:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=8e35de0d435fec5ac552783130ef04aee33159f4'/>
<id>urn:sha1:8e35de0d435fec5ac552783130ef04aee33159f4</id>
<content type='text'>
Replace horizontal st.tabs() with session-state-driven vertical nav
buttons in the sidebar (Workspace section). Remove company snapshot
entirely — ticker info is covered by the persistent TickerHeader.
Add NYSE live clock between brand and search. Update brand sub-label
to "v 1.2".

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rewrite watchlist as custom HTML component with proper styling</title>
<updated>2026-05-16T08:40:02Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T08:40:02Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=bbceb4c6798d43f4b32e73f38fc4907e00733244'/>
<id>urn:sha1:bbceb4c6798d43f4b32e73f38fc4907e00733244</id>
<content type='text'>
Replaces st.button rows with a components.html iframe that renders sym·price·Δ%
in a 3-column grid with hairline dividers, monospace fonts, and colored change
percentages. Adds hidden text_input click receiver so row clicks update
session state. Fixes toggle button to show toast when watchlist cap is hit and
removes now-redundant psm-watch-toggle CSS.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add session-scoped personal watchlist to sidebar</title>
<updated>2026-05-16T08:30:34Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T08:30:34Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=b321614ef1aabf3ce001fea471e45bebc35ccb86'/>
<id>urn:sha1:b321614ef1aabf3ce001fea471e45bebc35ccb86</id>
<content type='text'>
Adds a save/remove toggle below the company snapshot, a watchlist section
(capped at 10 tickers) that renders sym · price · Δ% rows above Top Movers,
and an empty-state placeholder. Clicking a watchlist row loads that ticker.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add TickerHeader + KPI strip above tab strip</title>
<updated>2026-05-16T08:06:05Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T08:06:05Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=658ed53544243a5efe08a6440a1297d521357f2c'/>
<id>urn:sha1:658ed53544243a5efe08a6440a1297d521357f2c</id>
<content type='text'>
Injects a persistent header band between the market bar and st.tabs():
sector tag, italic symbol, company name, 52W range rail with price pin,
price, and Δ/% change chip; below that a 6-cell KPI strip (Market Cap,
P/E, EPS, Div Yield, Beta, Short % Float). All data from cached service
calls — free hits. Graceful "—" fallbacks for missing fields.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Move Top Movers to sidebar and tighten top spacing</title>
<updated>2026-05-16T07:24:15Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T07:24:15Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=05b7005a414465f7abc55d149b2272854325875d'/>
<id>urn:sha1:05b7005a414465f7abc55d149b2272854325875d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix valuation and data robustness bugs</title>
<updated>2026-05-16T07:02:32Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-16T07:02:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=0d888203cbc4dc596d0c05cedfeabe8785b263fc'/>
<id>urn:sha1:0d888203cbc4dc596d0c05cedfeabe8785b263fc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Completely refreshed Key Ratios, Historical Ratios, and DCF/Multiples</title>
<updated>2026-05-14T08:01:02Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-14T08:01:02Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=764cd69bfc2e5a0cf504c8d6e4f032d35edd9a4c'/>
<id>urn:sha1:764cd69bfc2e5a0cf504c8d6e4f032d35edd9a4c</id>
<content type='text'>
tab.
</content>
</entry>
<entry>
<title>Add Multiples view; fix Recompute button text color</title>
<updated>2026-05-14T06:50:05Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-14T06:50:05Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=a82246e83146d1dd7f565493215c23ff482975e6'/>
<id>urn:sha1:a82246e83146d1dd7f565493215c23ff482975e6</id>
<content type='text'>
- Collapse model picker from 4 tabs → 2: DCF and Multiples, persisted
  in session_state["models_view"]
- New Multiples view: summary band, interactive comparison grid (8 math
  rows × 3 methods), sensitivity strip, DCF cross-check, footer
- In-canvas sliders with sector marker + typical-band shading; JS
  recomputes all derived values live without a Streamlit rerun
- Sector medians computed from peer ratios via FMP; falls back to
  reasonable defaults when peer data is unavailable
- DCF intrinsic stored in session_state["dcf_intrinsic"] so the
  cross-check on the Multiples tab reads the live DCF value
- P/Book applicability shows ◐ + warning color for asset-light
  companies instead of the solid ● used for strong-fit methods
- Fix Recompute button text: target inner &lt;p&gt;/&lt;span&gt; with
  color: var(--brass-ink) to override Streamlit's fg-2 default

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Redesign DCF tab — inspector rail layout with HTML canvas</title>
<updated>2026-05-14T06:22:55Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-14T06:22:55Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=64ea2681ceb403f021d13c39931f67321d11425b'/>
<id>urn:sha1:64ea2681ceb403f021d13c39931f67321d11425b</id>
<content type='text'>
Replaces the flat column layout with a two-column inspector design:
left rail holds four st.slider inputs + "From the filings" reference
panel + Reset/Recompute actions; right canvas renders verdict hero,
projection card (Plotly.js bar chart + cash-flow table), EV bridge,
per-share recon, and cross-check via a single components.v1.html block.

Also fixes primary button text color app-wide by targeting the modern
Streamlit selector (stBaseButton-primary) alongside the legacy one.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
