Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 19:04
63c9f5d

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_POLL seconds, 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.sqlite in the data folder and can answer /api/history from 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 -wal and -shm siblings while running) in VOST_DATA_DIR, next to alerts.json. In Docker this is the existing /data volume (vost-data in docker-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 only alerts.json. A corrupt file, or one of another schema version, is renamed candles.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 shows candle store: on (<path>) or off.
  • 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 an ExperimentalWarning for node:sqlite at 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 only api.exchange.coinbase.com for Coinbase must also allow ws-feed.exchange.coinbase.com.
  • /api/status gains an optional candles: { on, series, rows, bytes } field, and its check list grows from 17 to 18 (Coinbase live). Coinbase's catalog entry now reports supportsLive: true. Both are additions; nothing was removed from the API.
  • VOST_ALERT_POLL now 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)