<feed xmlns='http://www.w3.org/2005/Atom'>
<title>prism.git, branch master</title>
<subtitle>Webapp for stock analysis</subtitle>
<id>https://git.tylerhoang.xyz/prism.git/atom?h=master</id>
<link rel='self' href='https://git.tylerhoang.xyz/prism.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/'/>
<updated>2026-05-17T09:39:14Z</updated>
<entry>
<title>Fix shortcut iframe height</title>
<updated>2026-05-17T09:39:14Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:39:14Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=d12a0f8ab6454a42c9c923ed9e83f2cc388229f9'/>
<id>urn:sha1:d12a0f8ab6454a42c9c923ed9e83f2cc388229f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace deprecated component HTML embeds</title>
<updated>2026-05-17T09:38:03Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:38:03Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=246ab5b6d013ea337ae36fca8e1649a7e18abe8a'/>
<id>urn:sha1:246ab5b6d013ea337ae36fca8e1649a7e18abe8a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move ticker search to top bar</title>
<updated>2026-05-17T09:35:16Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:35:16Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=119eaf8afe9924ce0e5eef62f4a1546caf0c4bab'/>
<id>urn:sha1:119eaf8afe9924ce0e5eef62f4a1546caf0c4bab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'feature/valuation-redesign'</title>
<updated>2026-05-17T09:08:31Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:08:31Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=811fb970ac87c6f9e78e24889011623f097041a5'/>
<id>urn:sha1:811fb970ac87c6f9e78e24889011623f097041a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix valuation review: dead code, wrong peer bands, height scaling</title>
<updated>2026-05-17T09:08:26Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:08:26Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=85160a558b2d37965ee2b8799fdd177ec986eadd'/>
<id>urn:sha1:85160a558b2d37965ee2b8799fdd177ec986eadd</id>
<content type='text'>
- Remove dead _build_dcf_canvas_html (~525 lines, superseded by
  _build_dcf_canvas_only_html)
- Remove unused ev_ebit assignment
- Fix FCF yield KPI strip and mini row using dividendYieldTTM as peer
  band proxy (pass None — no equivalent peer field for FCF yield)
- Expand st.spinner in _render_historical_ratios to cover get_peers()
  and get_ratios_for_tickers() calls
- Collapse _render_all_multiples / _render_multiples_model indirection
  into a single function
- Replace Comps fixed 2600px height with max(1900, 1500 + n_peers*80),
  saving 400-700px whitespace for typical 5-8 peer sets

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix Historical Ratios blank render and Earnings History height cutoff</title>
<updated>2026-05-17T08:55:53Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T08:55:53Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=636086c5332b8aab5c1cc322bef1f3bb446a5add'/>
<id>urn:sha1:636086c5332b8aab5c1cc322bef1f3bb446a5add</id>
<content type='text'>
Missing semicolon after pts.forEach() prevented ASI, causing a JS syntax
error that silently killed all chart and matrix rendering. Also bumped
Earnings History iframe height to stop the table from being clipped.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Revert "Add TopBar: search hint, NYSE clock, account chip; fix sticky"</title>
<updated>2026-05-17T08:39:43Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T08:39:43Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=4d2e98b3cddba6e89933e7a656feeacef575938f'/>
<id>urn:sha1:4d2e98b3cddba6e89933e7a656feeacef575938f</id>
<content type='text'>
This reverts commit 676ef596d16f39f5e101ea50ef025dd5415705ce.
</content>
</entry>
<entry>
<title>Redesign Valuation tab: Key Ratios, Models, Historical, Comps, Multiples</title>
<updated>2026-05-17T08:33:17Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T08:33:17Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=bb55d8be4a080e16227290333f667a5b39fa6575'/>
<id>urn:sha1:bb55d8be4a080e16227290333f667a5b39fa6575</id>
<content type='text'>
- Key Ratios: 6-KPI snapshot strip with sparklines, 5-category ratio grid
  (Valuation, Profitability, Growth, Health, Cash Returns) via components.html()
- Models (DCF): two-column layout — st.slider() rail + prominent verdict chip,
  EV→equity bridge, per-share reconciliation, cross-check grid as HTML canvas
- Historical Ratios: SVG line chart (subject vs sector median) + clickable
  heatmap matrix that updates the chart via client-side JS
- Comps: 4 percentile rank bars + sortable peer table, all via components.html()
- Multiples: math-flow columns (EV/EBITDA, EV/Revenue, P/Book) with sensitivity
  strip and DCF cross-check; HTML range sliders drive JS computation

All redesigned tabs: scrolling=False, string-concat HTML (no f-strings),
XSS-safe (escape_html on all user-supplied strings injected into HTML/JS).

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add TopBar: search hint, NYSE clock, account chip; fix sticky</title>
<updated>2026-05-17T08:32:09Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T08:32:09Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=676ef596d16f39f5e101ea50ef025dd5415705ce'/>
<id>urn:sha1:676ef596d16f39f5e101ea50ef025dd5415705ce</id>
<content type='text'>
Replaces the keyed-container sticky hack with a proper psm-top HTML bar
(st.markdown) matching the design system. Clock is updated via
components.html writing to window.parent.document. Fixes ancestor
overflow so position:sticky works. Moves the / shortcut listener to
window.parent.document so it fires regardless of iframe focus.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'feature/topbar-phase1'</title>
<updated>2026-05-17T08:24:31Z</updated>
<author>
<name>Tyler</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T08:24:31Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/prism.git/commit/?id=039d09f5cfb8862c6601501f5d80e87f5d5eb7b5'/>
<id>urn:sha1:039d09f5cfb8862c6601501f5d80e87f5d5eb7b5</id>
<content type='text'>
</content>
</entry>
</feed>
