Documentation
1. Release Notes
- Created
- Jun 10, 2026
- Updated
- Oct 4, 2026
Release notes record what changed in Fractal Chart as the app develops. Each release gets its own page under this section, summarizing what was added, changed, fixed, or removed.
Versioning
Releases are labeled vMAJOR.MINOR.PATCH. While the app is pre-1.0, new features land under minor bumps and fixes under patch bumps; breaking changes may still occur between minor versions.
Releases
- v0.18.0 — Coordinated paper trading — adds coordinated paper trading as a default-off capability: where a deployment enables it, one open tab executes the live paper account and every other tab follows it, so an action taken in any tab is applied exactly once and fills, positions and settings appear everywhere; closing the executing tab hands over without repeating a fill, the account keeps being evaluated for symbols no chart is showing, "queued" is never announced as applied, and bar replay stays in its tab. Nothing changes until the controls are turned on. Also carries the Phase 0–5 cross-tab alert fixes — an older tab's alert writes are detected and quarantined at startup, a paused authority keeps its lease, a window switch no longer loses a notification, a hidden tab reclaims its lapsed lease — and two dependency upgrades.
- v0.17.0 — Offline bracket catch-up — paper trading now reconstructs the time your chart was closed. Open a position with a take profit and a stop loss, shut the browser, come back two days later, and the position stayed open however many times the market had crossed either level; a chart reopened past its stop was closed at the reopen price instead of the stop. Each account now remembers how far it has evaluated each symbol, and on opening a chart the stretch since then is loaded as bars and walked, so the first level the market reached fills at its own price and is booked at the time it happened. A gap that cannot be reconstructed fills nothing and says so.
- v0.16.4 — CSV chart refresh fix — fixes a CSV chart that loaded when opened from inside the app but failed on reload, showing "Couldn't load chart data" and "CSV dataset storage is waiting for an authenticated principal scope" in every pane until the symbol or timeframe was changed by hand. Imported files are stored per account, and on a fresh page load the chart asked for bars before the app knew who you were, treating not-yet as a permanent failure. It now waits and draws as soon as storage is ready. Nothing needs re-importing, and CSV never required an account — the message was wrong about that too.
- v0.16.3 — Watchlist lock recovery — finishes the repair shipped in v0.16.2. A locked watchlist gave up permanently the moment anything about the repair did not line up — a discarded backup copy, or a check that compared your saved watchlist against a starter list the app had just generated. The lock is now a record of the last attempt rather than a permanent verdict: every visit re-checks, so a watchlist unlocks as soon as whatever blocked it is gone, and keeps the lists it had. A genuine disagreement with an older copy still locks.
- v0.16.2 — Watchlist read-only fix — fixes a watchlist that opened locked on a new browser, showing "read-only because migration could not be verified" and refusing every add, removal, rename and reorder, permanently. The app checks its own backup copy of the list before trusting the storage move, and the starter watchlist left a field unstated that reading the backup filled in, so the check compared two copies that could never match. Nothing was lost; the comparison was wrong. A browser already locked repairs itself on the next visit and keeps its watchlist.
- v0.16.1 — Dependency upgrades — works through every open dependency upgrade, including four majors: React 19.3, Tailwind CSS 4, ESLint 10, and TypeScript 6 (not 7, which drops the compiler API the lint rules and one of our tests need). Almost all of it is invisible. Tailwind 4 does change two things on screen, both of it applying styling the app already asked for and the old version discarded: 87 surfaces that requested a tint now show it, and paragraphs that requested a line spacing now keep it. Also fixes a cross-tab alert handing over a checkpoint that had silently dropped an indicator named
__proto__— logged in v0.16.0 as a test flake, but the test was right. - v0.16.0 — AI assistant: thinking, search, and voice — exposes the provider capabilities the assistant already had but could not reach: a Think control for reasoning effort, provider-side web search with cited sources, a code sandbox, image generation, and voice input through your browser's speech recognition. Tool calls now show above the reply while they run, the composer footer switches provider and model without opening settings, and replies render maths and coloured figures. Underneath, all five providers run one agent loop in the browser, which is what lets Bedrock and Vertex use every chart tool. Also fixes Bedrock and Vertex chat returning a 500 on every request, web search failing on Google, generated images never displaying, and the drawer header overflowing when resized narrow.
- v0.15.0 — Live AI model discovery — the AI assistant's model picker now asks each provider what it currently serves and caches the answer for a day, so a model released today can be selected without an app update. OpenAI, Anthropic, and Google are queried directly from the browser with your key; Bedrock and Vertex go through new server routes that report entitlement failures instead of erroring and keep the built-in list alongside whatever comes back. A refresh button reports why a list did not change, and a stored model the built-in list does not know is kept instead of being reset to the default on reload.
- v0.14.0 — Resizable grid layouts — lets every three-to-six-chart layout be resized by dragging the seam between panes: no divider bar, just a resize cursor and amber highlight on the seam; dragging moves the shared column or row boundary, double-click restores the default proportions, arrow keys nudge a focused seam, and the proportions are remembered per layout and captured in saved workspace layouts. Also fixes saved-layout change detection that depended on stored key order.
- v0.13.0 — Browser market ownership safety — adds default-off fenced ownership for eligible Massive bars and routed chart panes, coordinated pre-authority admission, bounded post-release gate recovery, persistent redacted safety notices, fail-loud market-client context, retrying alert admission, route-scoped readiness with non-market SSR, exact active revision
1.1, redacted protocol-minor diagnostics, recoverable late socket closure, clean reconnect aggregation, and documented bar-derived live paper execution. - v0.12.1 — Paper trading reliability — hardens no-margin buying power, chronological fills, executable quote provenance, replay rewinds, cross-tab persistence, recovery backups, strict imports, AI/order authorization, telemetry privacy, accessibility, CSV audit fields, Alpaca integration, and automated release gates.
- v0.12.0 — Paper trading — adds a simulated broker on the chart's live feed: market/limit/stop/stop-limit orders, take-profit/stop-loss brackets as real OCO child orders, netted positions with live P&L, an on-chart Buy/Sell trading panel (
⌥P) with a one-click trading toggle, order and position lines you can drag, a right-click Trade menu, an Account Manager dock (?panel=paper-trading) with Positions, Orders, History, Trades, Account Summary, and Journal, per-session replay accounts, commission/slippage settings with JSON export/import, AI-assistant tools that read and analyze paper accounts and propose approval-gated orders, and a Dismiss all pill for the shared notification stack. Everything is simulated and stored locally — no real money or brokerage connection. - v0.11.2 — Replay fit to view — fits every pane's available replay bars into view the moment a start bar is selected, instead of keeping the pre-replay viewport that often left all replayed bars off-screen; playback controls no longer trigger refits, and ending replay fits the live bars back.
- v0.11.1 — Replay indicator warm-up — fixes bar replay starting with only a couple dozen bars of history (the clicked pane and larger-timeframe panes were never backfilled, and the context window was measured in calendar time): every visible pane now gets a 1,000-bar minimum before the start, counted in bars. Also fixes a hydration error on workspace load from the client-only alert toast host.
- v0.11.0 — Invert price scale — adds Invert scale (
⌥ I) to the chart right-click menu, flipping a chart upside down per pane: the price pane and its indicators and comparison overlays invert together, while volume and oscillator panes stay upright. - v0.10.1 — Replay start button fix — fixes the Start replay toolbar button being permanently disabled for every provider since v0.8.14 (its disabled state was derived from replay pane inputs that are intentionally empty while replay is inactive); the button now enables as soon as any visible pane has bars.
- v0.10.0 — CSV data provider — adds CSV as a sixth, local data provider: import your own OHLCV files (one per timeframe, auto-grouped by filename), stored chunked in browser storage and served verbatim per timeframe, with
CSV:addressing, symbol search, watchlist quotes, indicators/Pine/backtesting/replay support, and no realtime by design. Also hardens the chart's history-loading guard so scroll-back backfill can't freeze on instant data sources. - v0.9.1 — Current AI model catalogs — refreshes all five AI provider selectors to current models, migrates known stored selections by tier, preserves exact Bedrock inference-profile IDs, and updates SDK, sampling, and Anthropic thinking-stream compatibility.
- v0.9.0 — Chart context menu & indicator layout sync — adds a compact TradingView-style right-click menu to every workspace chart and copies the explicitly selected pane's indicator configuration across the active layout without changing symbols, timeframes, drawings, replay state, or strategy overlays.
- v0.8.14 — Pine replay stability — restores the v0.8.13 realtime and deep-history improvements with globally serialized cross-pane Pine replay, prompt queued cancellation, and complete publication to recreated indicator series.
- v0.8.13 — Realtime chart performance & replay safety — keeps realtime and deep-history charts responsive through exact Pine tail replay, cooperative full fallbacks, conservative chart deltas, abortable provider streams, and stale-generation/replay/AI isolation.
- v0.8.12 — Replay start selection fix — keeps start-bar clicks responsive while the chart is applying programmatic updates, so replay reliably begins at the selected candle without weakening click suppression for ordinary chart interactions.
- v0.8.11 — History stability & public Piner — keeps historical chart navigation anchored while older bars and related refreshes apply, preserves physical trackpad, pointer-drag, and keyboard intent, moves Piner to public npm at exact version
0.12.0, and tightens alert validation and webhook typing. - v0.8.10 — Scroll-back crash fix — fixes a crash where scrolling back to load older bars, with certain Pine indicators active and the crosshair hovering the chart, could throw
Value is nulland blank the whole view. It stems from an open upstream charting-library bug (lightweight-charts#2044) where an earlier series keeps a stale index mapping as the time scale shifts; the indicator renderer now isolates each series' chart update so a transient library error during a scroll-back load can't take down the app. - v0.8.9 — Pine strategy fidelity: request.security & overlay plots — Pine strategies and indicators track TradingView more closely.
request.securitynow resolves from real data on every timeframe: strategy backtests get the data seam wired for the first time (cross-symbol and lower-timeframe requests were silentlyna), and same-symbol requests to a non-chart timeframe are fetched instead of degrading to the chart series or resampling one bar late. Strategy overlay plots also render correctly: line plots break atnagaps like TradingView instead of bridging them, futures overlays fetch the futures endpoint, and a selfrequest.security(syminfo.tickerid)sees the real symbol. Bumps piner to v0.8.0. - v0.8.8 — Strategy plot() overlays on the chart — a backtested Pine strategy now renders its own
plot()/plotshape/fill/… outputs on its pane (not just buy/sell markers), with full visual parity to a Pine indicator: the ran strategy source is registered as an ephemeral indicator and drawn through the existing pipeline. Overlays are derived (never persisted), stay out of the legend/editor, and are suppressed during replay. - v0.8.7 — Buy-&-hold basis fix and intrabar run-up — bumps piner to v0.6.0: buy-&-hold now benchmarks from the strategy's first trade fill instead of always the chart's second bar, and max run-up now matches TradingView's intrabar method (mirroring max drawdown).
- v0.8.6 — Pine strategy metrics from piner — Pine strategy stats (Sharpe, Sortino, CAGR, exposure, per-trade commission/excursions, max drawdown, win rate) now come from piner v0.5.1's own derived metrics instead of a local recomputation, fixing several numbers that previously diverged from TradingView.
- v0.8.0 — Kraken data provider — adds Kraken as a fully integrated crypto provider (spot + perpetual futures) with Binance/OKX feature parity: historical and realtime bars, a tick-driven live price line, symbol search, watchlist,
KR:prefix addressing, and no API key required. - v0.7.0 — User accounts — adds an end-to-end user-account system: sign-up, sign-in, social login (Google/Facebook/Apple), password reset, and an account dashboard for profile, password, active-session, and account management. Sessions are server-managed (opaque HttpOnly cookie, 30-minute idle window, 7-day absolute cap). Also includes a detachable indicator/strategy editor, a landing footer theme toggle, and the production hardening/infra fixes made while bringing auth live.
- v0.6.1 — Chart screenshot timeframe fix — fixes the active-pane snapshot download re-firing on every timeframe change after the first save; the chart now treats an already-issued screenshot request as consumed when it remounts.
- v0.6.0 — OKX data provider — adds OKX as a fully integrated crypto provider (spot + linear perpetual swaps) with Binance feature parity: historical and realtime bars, symbol search, watchlist,
OK:prefix addressing, and no API key required. - v0.5.2 — Live prices & watchlist quotes — adds a tick-driven live price level on the chart (with graceful fallback to the bar-driven line), live polling of watchlist row prices and percent change via bulk provider snapshots, a simpler mobile symbol overlay, and a "report a bug" link on Pine error messages.
- v0.5.1 — Active-pane browser title — the browser tab title now follows the focused pane in a multi-pane layout, showing that pane's symbol and live price instead of always the main route ticker.
- v0.5.0 — Pine Script Engine — integrates a full Pine Script v6 engine (piner): custom indicators and strategies in Pine, all drawing families,
request.security, Pine alerts, an on-chart indicator legend, and Pine as the default authoring language. - v0.4.0 — Alerts — adds a full alerting system: TradingView-style conditions, toast/browser/sound/webhook notifications, background evaluation of indicator alerts, on-chart alert lines, and a triggered log.
- v0.3.0 — Multi-asset classes & Binance futures — adds a provider-orthogonal asset-class model (equities/crypto/futures/forex), Binance USDⓈ-M perpetual futures, symbol search, and an asset-class indicator.
- v0.2.0 — Alpaca data provider — adds Alpaca as a US-equities data provider and renames legacy browser-storage keys.
Publishing a new release
To prepare and publish a release:
- Choose the version using the policy above and update
package.json. - Add a numbered page under
docs/14-releases/, prepend it to the list above, update the latest-release link below, and register its slug insrc/modules/docs/docs-content.test.ts. - Run
bun install --frozen-lockfile,bun run test,bunx tsc --noEmit,bun run lint, andbun run build. - Review the complete diff and exclude generated output, local settings, and credentials.
- Commit the release changes, merge through the normal review path, and tag the final released
maincommit with the matchingvMAJOR.MINOR.PATCHtag.
This repository has no in-repo release or deployment workflow, so creating a tag does not itself document or guarantee deployment. Record the deployed commit and verify the visible app and telemetry release versions after rollout.
Next steps
See the latest release.