Repository navigation
v0.8.0
Coinbase charts now stream live, replay gains a Select bar button and keeps Pine output in step with play, and the server gets an on-disk candle store that later releases will fill.
Highlights
- Coinbase live candles: Coinbase charts now update live. Coinbase's public feed has no candle channel, so the server builds candles from its trade stream, starting each bar from Coinbase's own REST candle so a bar never looks smaller than the real one. Coinbase price alerts now use this live stream instead of polling every
VOST_ALERT_POLLseconds, and the connection light gains a Coinbase live-stream check. - Replay: Select bar: during a replay, Select bar goes back to choosing a start bar. Cancel resumes the replay where it was.
- Pine during replay: a Pine run that finishes after the replay has moved on is kept when it still holds for the visible bars, so a slow script's output follows play instead of blinking out.
- Symbol summary card: the card for the selected symbol is pinned to the bottom of the watchlist panel, so it stays in view while the list scrolls.
- Icon rail everywhere: the top-bar sidebar toggle is gone. The icon rail shows at every width; on narrow screens its buttons open the panel as a drawer.
- Candle store (groundwork): the server now keeps
candles.sqlitein the data folder and can answer/api/historyfrom it, fetching from the exchange only what it lacks. Nothing is recorded into it yet (the recorder is a later change), so charts still come from the exchanges exactly as before.
Upgrade notes
- New file in the data folder: on start the server creates
candles.sqlite(and its-waland-shmsiblings while running) inVOST_DATA_DIR, next toalerts.json. In Docker this is the existing/datavolume (vost-dataindocker-compose.yml): no new volume, mount or environment variable. Disk use stays at a few KB in this release, because nothing is recorded yet. The file is a cache and is safe to delete; back up onlyalerts.json. A corrupt file, or one of another schema version, is renamedcandles.sqlite.bad-<time>and a fresh one is made. If the folder cannot be written, the store turns off and the server runs as before. The startup log showscandle store: on (<path>)oroff. - Node: the store uses Node's built-in
node:sqlite, so no npm dependency is added. The Docker image (Node 24) needs nothing new. A bare-metal install still needs Node 22.18 or later (engines); Node 22 may print anExperimentalWarningfornode:sqliteat start, which is harmless. - Outbound access: the server now opens a websocket to
wss://ws-feed.exchange.coinbase.com(port 443) whenever a Coinbase chart is open live or a Coinbase alert is set, and the status checks probe it too. An outbound firewall that allowed onlyapi.exchange.coinbase.comfor Coinbase must also allowws-feed.exchange.coinbase.com. /api/statusgains an optionalcandles: { on, series, rows, bytes }field, and its check list grows from 17 to 18 (Coinbase live). Coinbase's catalog entry now reportssupportsLive: true. Both are additions; nothing was removed from the API.VOST_ALERT_POLLnow applies only to Yahoo and Stooq alerts.- Saved browser data is unchanged.
To deploy, build from the tag (git checkout v0.8.0, then docker compose up -d --build); no registry image of the app is published.
Changes
- Remove the sidebar toggle; the icon rail shows at every width and opens the drawer on narrow screens (#154)
- Add an on-disk candle store with read-through for recorded history (#153)
- Coinbase live: build candles from the public trade stream (#152)
- Alerts evaluator tests: wait for the firing instead of sleeping 10 ms (#151)
- Replay: Select bar button to pick a new start bar during replay (#139)
- Keep finished Pine runs that still hold during replay so output follows play (#140)
- Pin the symbol summary card to the bottom of the watchlist panel (#138)