School project · Delayed data · Not financial adviceTerms
Skip to content
SINGULARITYTERMINALOpen the terminal
Roadmap

What is planned, and what will not be built

The planned list is read from the build's own state file, complete and unedited. The second half of the page is the more useful half.

Where the build stands

29
done
8
active
1
blocked
137
pending

175 items. Status read from work/resume_state_v2.json at commit 94fabee; titles from .ag-exhaust/ITEMS_175.json. Both files are in the repository — the numbers above are a transcription, not an estimate.

"Active" means built and verified on its own, but not yet wired across all 62 screens, so it does not count as done. Several of the pages listed as pending below — including this one — are being built in the wave that produced it; the state file flips them when that work is integrated, not when the page first renders. If this page and the file disagree, the file is right.

In flight

  • 06A data-ink pass over every chart
  • 09First paint at 300ms, always
  • 20Table treatment: sticky header, sticky first column, hover row, no zebra
  • 26Shimmer only on what will actually change
  • 27Extend the radius and hairline scale into the charts
  • 46Keyboard navigation inside tables
  • 62Column chooser, reorder and freeze on every table
  • 63Persist sort and filter per table

Blocked, and staying blocked until the cause is fixed

39Render each panel as its own data arrives

Every loader in the terminal is a single fetch for a whole screen, so there is nothing to stream. Per-panel loading, error and provenance states have shipped; progressive arrival needs the routes split first. Recorded as blocked rather than quietly dropped.

Planned

Look and feel

10
  • 03Domain tinting so you always know where you are
  • 04Numeric typography discipline
  • 16A wordmark, a favicon set, and an Open Graph image
  • 18Three significant figures on screen, full precision on hover
  • 19A hover readout instead of a static legend
  • 22A print stylesheet
  • 23Screenshot mode
  • 24An illustration language for empty and error states
  • 25Ambient depth without gradients
  • 30A designed mobile layout, not a squeezed desktop one

How it works

22
  • 36Split view: two screens, one ticker
  • 37Named workspaces
  • 38Tabs inside the app
  • 40Stale-while-revalidate on the client, with a visible pip
  • 41Pre-warm the next likely screen
  • 42Cancel in-flight requests on navigate-away
  • 43Keep the old data visible while the new loads
  • 47Click a number, see where it came from
  • 48One active symbol, everything follows — with a per-panel unlink
  • 49An as-of date control
  • 50Comparison mode: up to five tickers on any screen
  • 51Saved views with shareable URLs
  • 56"How is this calculated?" on every derived figure
  • 57A sixty-second interactive tour
  • 58A first-run checklist that disappears when finished
  • 59A keys page with a live "Test connection" per provider
  • 60Every provenance chip links to a source health page
  • 61Search within the loaded data
  • 67Alerts on any numeric field
  • 68A watchlist that is a first-class object
  • 69Portfolio by CSV import
  • 70A screener over the fields the app already computes

Pages

30
  • 71Methodology & data sources
  • 72Data quality report
  • 73Screen index, A–Z
  • 74Docs — one page per screen
  • 75Glossary
  • 76Keyboard shortcuts reference
  • 77Getting started
  • 78Changelog
  • 79Roadmap and a request board
  • 80Public source status page
  • 81API documentation
  • 82Self-hosting and install guide
  • 83Security & privacy
  • 84Licences & attributions
  • 85Privacy policy
  • 86Terms of use, with an explicit not-investment-advice notice
  • 87Accessibility statement
  • 88Comparison page
  • 89Example workflows
  • 90Research notes
  • 91Watchlist page
  • 92Portfolio page
  • 93Screener page
  • 94Compare page
  • 95Calendar page
  • 96Alerts page
  • 97Global search results page
  • 98Preferences
  • 99404, 500 and offline pages
  • 100"What this costs to run"

Missing features

25
  • F01Earnings-call transcript search with summaries
  • F02Filing diff — this 10-K against the last one
  • F03A document notebook: highlight, tag, annotate, export
  • F04Global full-text search across everything already fetched
  • F05Point-in-time replay
  • F06A peer set builder
  • F07A DCF workspace seeded from the app's own data
  • F08Scenario and sensitivity tables
  • F09A report builder
  • F10A scheduled digest
  • F11A spreadsheet bridge
  • F12A public REST API with keys and rate limits
  • F13Outbound webhooks on alerts
  • F14A PWA with offline last-known-good
  • F15Workspace export and import as a file
  • F16Anomaly detection across watchlist metrics
  • F17Insider and institutional ownership tracking
  • F18A news timeline overlaid on price
  • F19Short interest and fails-to-deliver tracking
  • F20Government contract and grant exposure by ticker
  • F21Customer concentration and supply chain from filings
  • F22ETF and index membership lookup
  • F23FX-adjusted views for non-USD reporters
  • F24A backtest sandbox over the app's own signals
  • F25Read-only share links

Micro-features

50
  • M01An ⊕ add-to-watchlist button beside every ticker, everywhere
  • M02Ticker hover card with a three-month mini chart
  • M03Click-to-copy on every figure
  • M04Company logo beside every ticker
  • M05Relative "updated 3m ago" in the header, absolute on hover
  • M06? opens the shortcuts overlay
  • M07/ focuses search
  • M08Escape closes any overlay and returns focus to the trigger
  • M09Breadcrumbs on every screen
  • M10Sticky table headers
  • M11The whole row is the click target
  • M12Three-state sort indicators
  • M13"Copy table as CSV" in a table overflow menu
  • M14Abbreviation toggle: 1.23B ↔ 1,230,000,000
  • M15Currency toggle wherever FX is available
  • M16Percent versus absolute toggle on charts
  • M17Log and linear scale toggle
  • M18Range presets: 1D 5D 1M 6M YTD 1Y 5Y MAX
  • M19A crosshair synced across stacked charts
  • M20Drag to zoom, double-click to reset
  • M21Download any chart as a PNG
  • M22Fullscreen a panel, Escape to leave
  • M23Collapse and expand a panel, remembered per screen
  • M24Drag to reorder panels
  • M25Pin a panel to the top of a screen
  • M26A density toggle in the header
  • M27A theme toggle in the header
  • M28A recently-viewed ticker strip
  • M29Autocomplete showing name, exchange and logo — not just the symbol
  • M30Typo-tolerant fuzzy search
  • M31Search history in the empty palette state
  • M32Empty states with a real button, not just a sentence
  • M33Toasts for background actions
  • M34An undo action inside the toast
  • M35A retry button on any panel that errored
  • M36A "report a data problem" link on every panel
  • M37Dotted-underline glossary tooltips on metric labels
  • M38A formula popover on derived metrics
  • M39Source links that open the actual filing, deep-linked
  • M40An as-of date in every panel header
  • M41A live-or-cached pill on every panel
  • M42The browser tab title reflects the active ticker and screen
  • M43A favicon badge when an alert fires
  • M44A "copy link to this view" button
  • M45Middle-click opens nav items in a new tab
  • M46Scroll position restored on back
  • M47A skip-to-content link
  • M48Numeric inputs with keyboard steppers
  • M49A mobile bottom navigation bar
  • M50Pull-to-refresh on mobile

Every item with status `pending`, in full. No selection was applied — a roadmap that shows only the appealing items is a wish list. There are no dates against any of them, because there are no dates in the state file.

What will not be built

A list of everything a tool might one day do carries no information. This is the part that does. Each entry below is a decision already recorded in the project's decision log or a limitation already stated on the About page — not a prediction.

Order routing, execution, or any connection to a broker

There is no trading in this product and none is planned. It is a research tool that reads the primary record. Adding execution would change what it is, what it owes you, and who is allowed to run it.

A real-time consolidated tape, with depth

Quotes come from a delayed market-data endpoint. They are interval-based, and they carry no bid/ask depth. A consolidated real-time feed is licensed, and a licensed feed is the thing this project exists to do without.

A build step — npm, a bundler, TypeScript, or a framework

Vanilla ES modules, permanently. The whole product is readable and editable on disk with no toolchain, and that property is worth more here than any framework feature.

Full earnings-call transcripts with the analyst Q&A

Transcript coverage is SEC 8-K exhibit 99 only — the earnings release and the prepared remarks. The Q&A is not in the filing, so it is not in the product, and no screen implies otherwise.

Reconstructed history for periods nobody recorded

Point-in-time work snapshots forward from the day you start running it, and queries real history only where the source itself keeps it — SEC by period, Treasury and FRED by date. A back-filled series that was never observed is a fabrication with a chart around it.

An external scheduler, message queue, or multi-machine deployment

Alerts and digests run in-process while the server is up. It is a single-machine, self-hosted tool by design. If the process is not running, nothing fires.

Outbound webhooks in the default build

Alerts deliver in-page, as a browser notification, and by email if you configure SMTP yourself. The default build sends nothing outward on your behalf.

Python dependencies that need a compiler, a headless browser, or an ML framework

Pure-Python or small native wheels only, so that `pip install -r requirements.txt` works on an ordinary machine without a build environment.

An icon font, a CDN, or emoji used as iconography

Icons are a self-hosted inline SVG subset and fonts are self-hosted too, so the interface renders correctly with no network access at all.

A hosted, multi-tenant version you sign up for

The terminal is hosted and available now. Access is open while the platform is in beta, and no billing is enabled.