| Age | Commit message (Collapse) | Author |
|
|
|
Keys the market bar container (st-key-market_bar_sticky) so CSS can
target it reliably, then applies position:sticky top:0 z-index:200 with
the page background so content scrolling underneath is covered.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Ctrl+K conflicts with the browser address bar on Linux. / is the
conventional global search shortcut (GitHub, Linear) and is not
intercepted by browsers. Guard prevents firing while an input is focused.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
Injects a zero-height components.html block after the market bar that
listens for Cmd/Ctrl+K and focuses the sidebar search input by matching
its placeholder text.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Three market-wide panels backed by yfinance (no new API keys). Macro tab
renders before the st.stop() ticker guard so it's always accessible regardless
of ticker state.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Persists watchlist and active ticker across browser refreshes via a
localStorage bridge (components/persistence.py), and adds a sidebar
"← Watchlist" button to clear the active ticker and return to the
QuoteTable landing page.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
display:none removes elements from React's event processing, causing
JS-dispatched input events to be silently dropped. Switching to
visibility:hidden + height:0 keeps the inputs in the React tree so
programmatic value changes trigger reruns correctly.
Also covers the new qt_click_receiver for the quotetable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Renders watchlist tickers as a styled psm-card data table (Symbol, Sector,
Last, Δ, % Day, Volume) when no ticker is selected. Falls back to the
existing placeholder when the watchlist is empty. Uses the same JS
hidden-input click pattern as the sidebar watchlist.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
|
|
|
|
tab.
|
|
- 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 <p>/<span> with
color: var(--brass-ink) to override Streamlit's fg-2 default
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
typography
Implements the design kit: champagne brass accent (#C2AA7A), deep midnight
backgrounds, EB Garamond italic headings, IBM Plex Sans/Mono body and numbers,
terminal-density KPI cards, restyled sidebar brand mark, flat pill tabs, and a
global Plotly theme so all charts inherit the dark palette automatically.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
NYQ→NYSE, NMS/NGM/NCM→NASDAQ, ASE→AMEX, etc.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Shows current price, $ change, and % change (green/red) below the
company name so the stock price is always visible while navigating tabs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
- restore original logo asset and sidebar layout
- remove temporary logo lockup/icon files
- return app branding to pre-experiment state
|
|
- use corrected base logo asset with transparent background
- recrop lockup and icon files with proper padding
- render sidebar logo at fixed width to avoid stretching
|
|
- replace app logo with final selected Prism lockup and icon
- update sidebar to use lockup asset
- add canonical logo files for future mockups and branding
|
|
Overview:
- Score card: green/yellow/red signals for valuation, growth, profitability,
leverage, momentum (vs 52W high), and short interest
- 52W high/low visual range bar with current price marker and % context
- Short interest metrics row: % of float, days to cover, shares short vs
prior month
- Replaced static 52W High/Low metrics with volume and avg volume
Options tab (new):
- Expiry selector across all available expirations
- Put/call ratio by volume and open interest with bullish/bearish label
- IV smile chart (calls + puts) with ATM marker
- Open interest by strike (calls above, puts mirrored below axis)
- Full chain table (calls/puts) in expandable section
CSV exports:
- Download button on each financial statement (income, balance, cash flow)
- Download button on earnings history table
Also fix top padding cut-off: block-container padding-top 1rem → 3.5rem
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
App now starts with no ticker selected and shows a prompt to search,
avoiding unnecessary API calls on startup. Removed the AAPL/MSFT/NVDA/JPM
quick-pick buttons from the sidebar.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- services/fmp_service.py: add get_historical_ratios, get_historical_key_metrics,
get_analyst_estimates, get_insider_transactions, get_sec_filings
- components/valuation.py: add Historical Ratios and Forward Estimates subtabs
- components/insiders.py: new — insider buy/sell summary, monthly chart, detail table
- components/filings.py: new — SEC filings with type filter and direct links
- app.py: wire in Insiders and Filings top-level tabs
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
Streamlit app with market bar, price chart, financial statements,
DCF valuation engine, comparable companies, and news feed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|