Repository navigation
v0.15.0
Vost now keeps what you save on its server instead of in your browser: settings, layouts, drawings, watchlists, datasets, drawing pictures and the strategy maker's marks, form and model live in the server's data folder, follow you to any browser on the same server and survive clearing site data. What an older version kept in your browser is moved to the server once, the first time you open v0.15.0. The main chart gains Linear, Logarithmic, Percent and Indexed to 100 price scales and High and Low labels for the candles on screen, and the strategy maker loads up to 20,000 candles. Vost now needs its Node server to start, and the move changes what a downgrade does (see the upgrade notes).
Highlights
- Your data lives on the server: settings, layouts, drawings, watchlists and datasets are kept in the Vost server's data folder, so another browser or device on the same server sees them and clearing site data no longer removes them. If a save cannot reach the server, a message says so and Vost keeps trying; if the server cannot be reached at start, a page says so with a Retry button.
- One-time move from the browser: the first start of v0.15.0 moves what this browser kept to the server and the inbox says how many items moved. An item the server already holds is kept as the server has it, and the browser's copy is set aside in a file in the data folder.
- Drawing pictures on the server: pictures added with the Image tool are kept by the server, stored once however often they are used, follow the drawings to other browsers and are moved there from the browser once. A picture nothing uses is removed a day after it was last in use.
- Strategy maker data on the server: marked trades, the find form and the trained model are kept on the server and moved there once; the page says "Moved N sets from this browser to the server". Export and Import still work as before.
- Price scale modes: the main chart's price scale can be Linear, Logarithmic, Percent or Indexed to 100 from the right-click menu, with A (auto fit) and L (logarithmic) buttons when you hover the scale. Drawings, alerts and price lines stay at their prices in every mode, and the mode is remembered per chart and in layouts.
- High and low price labels: High and Low labels on the price scale show the highest and lowest price of the candles on screen as you scroll, zoom and live bars arrive. Turn them off in Settings.
- Strategy maker loads more candles: a market load brings up to 20,000 candles (fewer where the provider has less) and opens on the latest 300 or so bars.
- Under the hood: one request-body reader is shared by every server write route, a test scans the client so nothing but the one-time move touches local storage, and new capture scenarios cover the server store, the moves, price scales and high/low labels. The guide, README and deploy docs now say where everything is kept.
Upgrade notes
- One-time move of your browser data to the server. The first time each browser opens v0.15.0, it sends what it kept in local storage (every
vost.*key: preferences, the working layout and named layouts, drawings, watchlists, datasets, custom timeframes, the Pine compare page, the alert sound and seen state) toPOST /api/settings/import, and removes from the browser each key the server took or set aside. The inbox says "Moved N saved items from this browser to the server". The strategy maker's IndexedDB databasevost-strategy-makerand the picture storevost-imagesare moved the same way (the strategy maker on its own page, pictures at app start) and deleted from the browser once the server has confirmed everything. A failed move leaves the browser data in place and is tried again at the next start. - Open your main browser first. The server adopts only names it does not have yet and never overwrites one. The first browser to start v0.15.0 wins; when another browser later moves a different copy of the same item (for example its own preferences), the server keeps its copy and writes the browser's to
settings-imported-<ms>.json(orstrategy-maker-imported-<ms>.json) in the data folder, and the browser's copy is removed. Nothing is lost, but recovering it means editing that file by hand. - New folders in the data folder, no new variable.
VOST_DATA_DIR(default./data,/datain the Docker image) now also holdssettings/(one<name>.jsonper setting),images/(pictures named by their SHA-256, plusindex.json),strategy-maker/(sets,inputs.json,model.json) and any*-imported-<ms>.jsonarchives. They are created on first write. Back up the whole folder: it now holds all your work, not just alerts. - Keep
/dataon a persistent volume.docker-compose.ymlalready mounts the named volumevost-dataon/data, so Compose users need do nothing. With plaindocker run, add-v vost-data:/data(or a bind mount writable by the image'snodeuser); without it, re-creating the container now loses your settings, layouts, drawings and datasets, not just alerts. If the folder is not writable, Vost still starts and reads, but every save answers503namingVOST_DATA_DIRand the app shows a "not saved" message. - Raise a reverse proxy's request-size cap. Saves go through
/api/settings,/api/imagesand/api/strategy-makerwith bodies of up to 32 MB (5 MB per picture, 64 MB for the settings move, 128 MB for a strategy maker move or import). nginx refuses anything over 1 MB by default, and the app treats that413as a refused save it does not retry. Setclient_max_body_size 128m;(the example indocs/DEPLOYMENT.mdnow does) before the first start of v0.15.0. The new routes are same-origin only like/api/alerts, so the proxy must passHostthrough unchanged, as before. - Vost needs its Node server to start. The app loads everything from
/api/settingsat start, so servingclient/distalone (static hosting) is no longer supported: it shows "The Vost server cannot be reached". While saves are failing, leaving the page asks you to confirm. - New API endpoints:
/api/settings(GET,PUT,DELETE,POST /api/settings/import),/api/images(GET,PUT,POST /api/images/sweep) and/api/strategy-maker(sets, inputs, model,import,migrate); seedocs/DEPLOYMENT.md. No existing endpoint changed. - Preferences gain fields:
vost.prefs.v1(now theprefs.v1setting on the server) gainshighLowLabels(missing reads as on) andpriceScaleMode(linear,log,percentorindexed; missing or bad reads as linear), and each layout chart record gainspriceScaleModewhen it is not linear. High and low labels are on by default. - No Docker or dependency change.
Dockerfile(a comment only),docker-compose.ymland the dependencies are unchanged, and there is no new environment variable. The server starts with three more log lines naming the settings, pictures and strategy maker stores. - Downgrading to v0.14.x: v0.14.x reads only browser storage, and the move emptied it, so a downgraded browser starts with default settings and no layouts, drawings, watchlists, datasets, pictures or strategy maker sets. The server's
settings/,images/andstrategy-maker/folders are left untouched and v0.14.x ignores them; upgrading again brings everything back. Anything you change while on v0.14.x is kept in that browser and moved at the next upgrade, where the server's copy wins for items it already has (the browser's goes to an*-imported-<ms>.jsonfile). To keep working on v0.14.x, export watchlists and strategy maker sets on v0.15.0 first and import them there.
To deploy, build from the tag (git checkout v0.15.0, then docker compose up -d --build); no registry image of the app is published. Nothing in your .env needs to change; make sure the data folder is on a persistent, writable volume and that any reverse proxy allows large request bodies.
Changes
- Strategy maker loads up to 20,000 candles and opens on the latest 300 bars (#408)
- Keep drawing pictures on the server: /api/images store, server-side sweep, one-time move from the browser (#398) (#405)
- Keep the strategy maker's marks, find form and model on the server, with a one-time move from the browser (#404)
- Keep settings, layouts, drawings, watchlists and datasets on the server (#403)
- Price scale modes on the main chart: Linear, Logarithmic, Percent, Indexed to 100, with hover A/L buttons (#402)
- High and low price labels for the visible candles, with a Settings switch (#401)
- Server-side settings store and /api/settings, with a shared request-body reader (#400)