Skip to content

Add Pulse for Raycast: Search Symbol - #14

Merged
fatwang2 merged 10 commits into
mainfrom
claude/project-thread-k88liz
Nov 3, 2026
Merged

fatwang2 merged 10 commits into
mainfrom
claude/project-thread-k88liz

Conversation

@fatwang2

@fatwang2 fatwang2 commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Requested by fatwang2 · project thread

Summary

Adds raycast/, a Raycast Store extension with one command, Search Symbol:

  • Finds stocks, ETFs, indices and Binance Spot pairs by ticker or by name in English, 简体, 繁體, 日本語 or 한국어 (US, HK, A-shares, JP, KR, TW).
  • Search runs locally over Pulse's published catalog (www.pulseticker.app/catalog/symbols-v1.json), downloaded at most once a day with If-None-Match, and refuses a truncated file. Ranking is ported from the Mac app's SymbolSearchIndex (exact, then prefix, then substring; popularity inside a tier). Traditional/Simplified fold via opencc-js/t2cn.
  • Binance's trading pair directory (exchangeInfo) is cached daily, so each coin leads with its best-quoted pair.
  • The detail pane shows price, change and today's chart (SVG, lunch breaks drawn as gaps) with open/high/low/previous close, session and delay. ⌘D hides it and shows price/change in the rows instead (Yahoo spark batch + Binance batch).
  • Market filter dropdown, recent symbols, and direct lookup of tickers the catalog lacks (^FTSE, ETH/BTC).
  • A modest "Pulse for Mac" action (utm_source=raycast). No menu-bar command, and no watchlist (MCP watchlists and the deep link come in v2).
  • Quote logic is ported from Pulse for Herdr. The only hosts are pulseticker.app, query1.finance.yahoo.com and data-api.binance.vision.

Also adds make test-raycast and a Raycast CI job.

Testing

  • make test-raycast: 16 tests (search, catalog store, decoders, formatting, chart), ray lint and ray build all pass.
  • Live run against the real catalog (39,601 listings, about 250 ms to build the index, about 20 ms per query) and live Yahoo/Binance quotes for AAPL, 0700.HK, 600519.SS, 7203.T, 2330.TW, ^GSPC and BTC/USDT.
  • Not yet run inside Raycast itself (needs a Mac). The Store screenshots also need to be taken there.

Generated by Claude Code

One Raycast command that finds stocks, ETFs, indices and Binance Spot pairs by
ticker or by name in English, Chinese, Japanese or Korean, and shows price,
change and today's chart. Search runs locally over Pulse's published symbol
catalog (downloaded at most daily, conditionally), ranked like the Mac app.
Quotes come from Yahoo Finance and Binance, ported from Pulse for Herdr.
Adds a Raycast job to the open-source checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DuYf7vdDtMHbY6YTKJrEqJ
@fatwang2 fatwang2 self-assigned this Nov 2, 2026
claude and others added 9 commits November 3, 2026 09:56
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DuYf7vdDtMHbY6YTKJrEqJ
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- List rows use the last spark close; fulldayPrice disagreed with the chart.
- Shorter chart and a one-line header so the whole chart sits above the
  metadata; price and change no longer repeat in the metadata, change is a tag.
- Axis labels drop cents from four digits up and never overlap; JPY and KRW
  prices show whole units.
- A typed ^ or = ticker (^FTSE) leads the results when nothing matches its code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DuYf7vdDtMHbY6YTKJrEqJ
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Binance values were truncated beside long titles; titles are now Open, High,
Low and Prev Close (24h Ago for pairs). A direct lookup row names its source.
A listing with no trades today keeps its last price in list mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DuYf7vdDtMHbY6YTKJrEqJ
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ice code

A raycast-v* tag or a manual run, gated by the raycast environment, tests the
extension, asks GitHub for a one-time device code for the Raycast CLI's OAuth
app, waits for it to be approved at github.com/login/device, and runs
ray publish with that token. Nothing is stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DuYf7vdDtMHbY6YTKJrEqJ
…-k88liz

# Conflicts:
#	.github/workflows/open-source-checks.yml
#	AGENTS.md
#	Makefile
@fatwang2
fatwang2 merged commit a0b9ff3 into main Nov 3, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants