Release notes and version history for @teligenz/fastchart. Jump to any version from the list — the changelog grows here as the product evolves.
Version 1.0.0
Latest
Released ·
FCScript IDE AI Hook & Click-Gesture Fix
FastChart reaches 1.0. This release rolls up 0.8.2 and 0.9.0: an optional hook that lets your app power an AI code-generation panel inside the FCScript IDE, and a fix for clicks on script elements.
New Features
AI code generation for the FCScript IDE (0.9.0, full tier) — pass the widget option ai: { generate(req, ctx) } and the IDE gains an AI button (also in the ⋯ menu and on Ctrl/Cmd+Shift+I) opening a panel with Generate, Fix errors (pre-filled from the Problems list), Validate and Optimize, streamed progress with Cancel, and the answer as a diff against the editor. FastChart never calls an AI or the network: your callback does. Nothing is applied until the user clicks Apply, which is a single undo step, and every answer is labelled "AI generated, review before use". Without the hook the IDE has no AI button, DOM or styles.
Bug Fixes
Clicking a script element no longer grabs the chart (0.8.2) — clicking a label, button or other element drawn by an FCScript fired the script's handler correctly, but the chart then stayed attached to the mouse and moved with it. A click on a script element is now self-contained and leaves the chart where it is.
As a Upgrading from 0.8.1 — no breaking changes. The AI hook is opt-in and inert unless you pass ai.Integration Guide
Version 0.8.1
Released ·
Pine v6 Scripting, Host Docks, Plot-Only Charts & a Full Audit
This release rolls up everything since 0.3.0 (versions 0.4.0 to 0.8.1). FCScript now follows Pine v6 rules, the host dock and plot-only mode open new ways to embed the chart, live indicators are exact, and a full audit hardened scripting, datafeeds and rendering. The final fix keeps zoom-out from bouncing back.
New Features
Host Dock API (0.4.0, 0.5.0) — openDock({ type, mode, context }) renders your own content (Depth, Option Chain, order tickets) beside, above or over the chart, with dockOpen / dockClose events. A full dock opens as an overlay without hiding or resizing the chart, a half dock stays available with the toolbar and reopens on the next chart, and OI-Bars subscribe to the option chain automatically.
Plot-only mode (0.7.0) — plotOnly: true draws just the plot with no axes, grid, crosshair, legends, toolbars or menus, and never reads or writes browser storage, so a chart can sit behind other UI without affecting any other chart. It is inert by default; add interactive: true for pan and zoom.
Reuse a live chart (0.5.8) — widget.detach() and widget.attach(container) move a running chart between panels or host components without rebuilding it. subscribe() now returns a disposer and unsubscribeAll() was added, so handlers can be rebound without leaking listeners.
Pine v6 scripting (0.8.0) — FCScript follows Pine's block scopes, per-bar declarations and manual-defined ta.* functions. New: indicator(timeframe = ...) runs a script on another timeframe; request.security returns arrays and objects and accepts named arguments; object history (p[1].field); methods callable like functions; ask, bid and the dividend / earnings future values. A run of about 10,000 generated programs shows no difference between the TypeScript and WebAssembly engines.
Host policy for scripts (0.5.6, 0.6.0) — fcsAllowedActions controls which actions a script may forward to your app, fcsFetchAllowlist controls which hosts it may call, and fcsHeapBudgetMB caps script memory. Runaway scripts fail with a clear error instead of crashing the tab.
Smaller core build and more of the TradingView API (0.6.0) — the core tier no longer contains the scripting engine (its WebAssembly module is 306 KB instead of 2.0 MB). Widget calls such as setSymbol, setResolution, getTimezone, save / load, createShape (about 30 shapes) and studies_overrides now do what they say.
Widget options and events (0.5.7, 0.6.1, 0.4.0) — storageKey keeps two widgets on one page from sharing saved state; dataLoadError and chartInitFailed events; onLoadError(info) can suppress the built-in toast; holdAutoRefresh() protects a pooled widget while it is retargeted; heightMode: 'grow' lets the chart expand its container as sub-panels are added.
Monaco loading control (0.5.3, 0.5.6) — monacoLoader and monacoCdnFallback let your app own the editor bootstrap and stop the IDE from ever loading from a public CDN. A missing editor now reports an error after 20 seconds.
Improvements
Live indicators are exact (0.8.0) — EMA, RSI, MACD, ATR, ADX, Supertrend, OBV and the other incremental indicators equal a full recompute on every closed bar while ticks arrive. Renko, Kagi and Point & Figure charts were corrected, and FX-priced Renko now draws its bricks.
Faster live charts (0.6.0, 0.5.6) — at a million bars, each new bar now costs about a millisecond instead of hundreds of milliseconds to seconds. Sub-panel indicators draw faster when zoomed out, startup streams the compute module in parallel, and drawing a 100,000-bar Supertrend is 300 times faster.
Smoother resizing (0.5.8, 0.5.9) — docking layouts that settle a panel no longer reallocate canvases on every intermediate size, and the final size always snaps to the exact device pixels, so charts stay sharp after a rapid resize.
Faster open (0.5.7, 0.5.8) — the chart frame, toolbar and axes appear immediately with a loading spinner while your datafeed answers, and host theme colours are read once per theme instead of on every open.
Pine v6 accuracy (0.5.6, 0.6.0, 0.8.0) — colour constants, plot defaults, ta.*, str.*, array.* and matrix.* edge cases match the reference; the validator reports unknown, duplicated or extra arguments against a signature table generated from the Pine v6 reference, and warns about code Pine would reject.
More resilient (0.5.7, 0.8.0) — if the WebAssembly engine ever crashes it is replaced and indicators keep running on the built-in engine; bad datafeed rows, deep or hostile scripts and failed initialisation end cleanly instead of freezing or crashing the host; memory leaks on destroy were closed.
Safer by default (0.5.6) — datafeed text is always shown as text, external links are limited to http(s), imported drawings and templates are size- and shape-checked, and shared-chart passwords use salted PBKDF2.
Mobile and editing polish (0.4.0, 0.5.2, 0.5.7) — auto-hiding chrome on small charts, iPhone safe-area handling, typing sheets that open from the top so the keyboard never covers them, Indicator Settings that always keep Apply / Cancel / Reset on screen, and undoable indicator edits.
FCScript IDE (0.5.4) — follows the app's light / dark theme live, and can be popped out into its own browser window on desktop.
Accessibility (0.6.0) — dialogs trap and restore focus and carry proper dialog roles.
Bug Fixes
Zoom-out no longer bounces back (0.8.1) — when zooming out reached the edge of the loaded history, the chart could swap in a shorter data set than the one on screen, which lowered the zoom-out limit and snapped the view back (most visible with pinch, two-finger scroll and dragging the time axis). History is now only swapped in when it actually adds older bars, for the main chart and for Multi-Timeframe and Multi-Chart panes. The live-tail merge that runs on a swap now works too.
Plot-only chart reuse (0.7.1) — calling setData with another instrument's bars after the user panned or zoomed now shows the whole new dataset and returns Y to autoscale.
No false 'Symbol not found' toast (0.6.1) — a refresh arriving while a pooled widget is being retargeted no longer reloads the previous symbol and reports an error.
Failed reloads are visible (0.5.7) — a failed symbol or interval reload clears the chart and shows an error instead of leaving the previous symbol's candles under the new name. Datafeed calls now time out after 30 seconds.
Intervals and indicators (0.5.5, 0.5.8) — custom intervals such as 21D, 50D, 2W and 7m work reliably, TradingView-style intervals ('5', '60', 'D') are treated like '5m', '1h', '1D', line indicators no longer go blank after a tab switch, and indicator line width, volume Bar Style and the remembered chart type behave as set.
Rendering (0.5.7) — a rendering error no longer stops the chart redrawing, GPU device loss recovers more reliably, very large windows are clamped to the GPU limit, and last-bar updates always repaint on WebGL2.
Audit fixes (0.8.0) — indicator source and period handling, Pivot Points per period, Bollinger and StdDev exactness, Renko autoscale and default brick size, Kagi thickness, Point & Figure quantisation, Heikin-Ashi seeding, restore of saved indicators and drawings, symbol-switch load state and far-future ticks. Every fix is covered by regression tests.
Breaking Changes
FCScript follows Pine v6 (0.8.0) — x = inside an if / for / while / switch / function body now declares a new local; use := to change the outer variable. Only var / varip values persist across bars, so declare accumulating arrays, maps and objects with var. Only the chosen arm of a ternary, switch or if expression runs, and a name declared in a block is not visible after it. The bundled gallery scripts were already updated.
FCScript is stricter (0.5.6, 0.6.0) — / is always real division (wrap the quotient in int() if you relied on truncation), array.new_float(n) holds na instead of 0, and out-of-range substring / slice / fill, mismatched matrix sizes, unknown or duplicate named arguments and nested function definitions are script errors. Scripts exceeding resource limits (128 nested calls, 4,000,000 collection elements, 25,000,000 loop iterations per bar) stop with an error.
Order entry moved to the host (0.4.0) — FastChart no longer draws any order dialog. The Quick Order dialog and the onQuickOrder, orderMode, defaultOrderQty and defaultLotSize options were removed. Buy / Sell marker drops, right-click and OI-bar long-press now open your dock content, or fire the chartContextOrder event if no dockOpen listener exists.
Datafeed and widget behaviour (0.5.6, 0.6.0) — symbols containing / are sent percent-encoded (%2F) in REST datafeed paths, so a self-served restApiBase must decode them; live ticks are ignored while a symbol switch is in flight; a bare FastChart now uses a separate crosshair layer by default (dedicatedCrosshairLayer: false restores the old behaviour); unsupported TradingView-compatible options warn once in the console.
Packaging (0.5.6) — published bundles are minified and ship without source maps (set FC_SOURCEMAP=1 or FC_MINIFY=0 when building from source), and the local demo server listens on 127.0.0.1 only (pass --host to share it).
As a Upgrading from 0.3.0 — the datafeed contract and persisted user state are unchanged apart from the items under Breaking Changes: saved views, drawings and scripts survive the upgrade. If you ship FCScript scripts, review them against the Pine v6 changes above before rolling out.Integration Guide
Version 0.3.0
Released ·
Reliable Licensing & a Library-Wide Stability Pass
This release makes license handling predictable and transparent — you always know which tier is active and why — and lands the largest stability pass in FastChart's history: memory, multi-chart, live ticks, touch and zoom were each audited and hardened.
New Features
Predictable license behaviour — license keys are cryptographically signed; the chart verifies tier, expiry and domain itself and enables WebGPU/WebGL2 rendering, WebAssembly compute, FCScript, Multi-Chart/Multi-Timeframe, Compare and Replay according to your tier. Running without a valid key drops cleanly to the Community tier with a visible on-chart badge and a console message explaining exactly why — never a silently dead feature.
License lifecycle visibility — the chart warns ahead of key expiry, every license-gated action shows an on-screen notice and logs it to the console (so automated tests can see gating too), and tier, licensee and expiry are visible in the new License Details dialog.
FCScript host.* namespace — the scripting host API is now host.* (renamed from ht.*), and gains symbol search, option metadata and input-option discovery. Script errors now surface in a draggable, minimisable panel on the chart instead of failing invisibly.
Faster, leaner indicators — indicator series are stored in typed arrays with proper gap handling, cutting both compute time and memory for indicator-heavy layouts.
Improvements
Steady memory over long sessions — cached datasets are released once they leave the viewport, history is capacity-managed, and the WebAssembly engine is created once per page and shared by every chart. All-day sessions no longer accumulate memory.
Better touch and zoom — drawings and markers are easier to grab, edge-scrolling while dragging is smoother, the date axis supports drag-to-zoom, charts zoom out freely, and pinch gestures are recognised symmetrically. Mobile flicker and missed taps are gone.
Dependable multi-chart — the same instrument can no longer appear twice in a grid, saved layouts restore exactly as they were entered, and rapid layout switching no longer leaves stray charts or data feeds behind.
On-Balance Volume parity — OBV is one continuous cumulative calculation everywhere it appears, matching the standard formulation.
Bug Fixes
Chart legend after a programmatic symbol change — setSymbol() and setResolution() now refresh the OHLC legend immediately, instead of showing the previous instrument's values until the crosshair moved.
Light theme reaches the drawing toolbar — the docked drawing rail no longer stays dark when the chart is switched to the light theme.
Duplicate indicator legend row — an indicator could render a second, stale legend row at a pane boundary. It now renders once, with live values.
Price-axis labels behind the Buy/Sell buttons — axis labels no longer show through the draggable Buy/Sell markers.
getTheme() casing — always reports 'Light' or 'Dark' as documented, even when the widget was created with a lowercase theme option.
Licensing under WebViews — pages loaded from file:// have no hostname, and are now handled consistently: a domain-locked key does not silently pass there. App-bundled deployments should use a wildcard-domain key.
Live ticks on advanced chart types — Renko, Kagi, Point & Figure, range-bar and line-break charts stay stable while streaming, with a clean split between the forming bar and closed history.
Alerts, drawings and indicator settings — live alert delivery, indicator settings consistency with an unsaved-changes guard, smoother stop-loss/target and alert dragging, comparison chips, and price-axis behaviour during drags.
Rendering resilience — the chart recovers from GPU context loss, holds frame rate under sustained load, and no longer stalls on very large datasets.
Breaking Changes
Old-format (FC-…) license keys are no longer accepted — request re-issued signed keys for every deployment, and note that WebView / file:// apps need a wildcard-domain key.
FCScript scripts using the ht.* namespace must switch to host.*.
As a Upgrading from 0.2.0 — datafeed contract and persisted user state are unchanged: saved views, drawings and scripts survive the upgrade. See the FastChart Integration Guide (updated for 0.3.0, including the new FCScript and capacity sections) for details.
Version 0.2.0
Released ·
Effortless Integration & Smarter Scripting
This release makes FastChart dramatically easier to drop into any application — assets resolve from one configured base URL, intervals are accepted in every common notation, and the chart finally opens exactly how you tell it to. Under the hood, the FCScript engine takes a major step toward full Pine v6 parity, including intrabar data access.
New Features
Intrabar scripting — FCScript now supports request.security_lower_tf end to end: scripts can read real lower-timeframe sub-bars, access their history, and use them inside user functions, in both the TypeScript and WebAssembly engines.
Programmatic chart control — setResolution() and setTimeFrame() are now first-class APIs that switch the interval or range exactly like a toolbar action, including labels, linked range and data reload. No more DOM workarounds.
Strict Pine v6 validation — the FCScript validator is now grounded in the formal Pine v6 reference, catching wrong arguments and signatures before a script ever runs.
Built-in responsive toolbar — the docked drawing toolbar and responsive layout system now live inside the library itself, so every host application gets them with zero wrapper code.
Improvements
One base URL for everything — toolbar and menu icons now resolve from configureFastChartAssets({ baseUrl }) just like workers and WebAssembly, so the SDK works from any hosting path without broken icons.
Flexible interval notation — both '5' / '60' and '5m' / '1h' styles are accepted everywhere an interval can be passed, and are normalised automatically.
Your startup interval wins — a chart created with an explicit interval now opens on it (with a matching range preset) instead of the 5Y/1W default; returning users still get their last-used view.
Sharper mobile charts — range presets load with legible candle density, zoom-out is capped at 300 candles, and the bottom-bar range selector is now built in.
Cleaner time axis — the left-edge month/year label anchors to the first visible bar and no longer clips off-screen.
Bug Fixes
FCScript Pine parity batch — dozens of corrections across ta.* functions, request.security timeframe context, drawing methods, color constants, arrays, maps and string handling, with identical behavior and error messages in both engines. The conformance corpus grew from 56 to 85 verified scripts.
Multi-chart order markers — open-order markers now place and stay in sync across all panes.
As a No API signature, datafeed contract, or persisted-state format changes — existing users' saved views survive the upgrade. See the FastChart Integration Guide for the 0.2.0 integration steps.
Version 0.1.1
Released ·
Multi-Chart Improvements
This release sharpens multi-chart workflows — indicator actions are scoped to the selected pane, OHLC information renders on the canvas, and fullscreen maximizes only the pane you're working with.
New Features
Per-pane indicator actions — delete, hide, show and edit operations now apply only to the currently selected pane, making multi-chart workflows more predictable and efficient.
Improvements
OHLC information is now rendered directly on the chart canvas instead of the header, eliminating header clipping and improving visibility across all layouts and screen sizes.
Fullscreen mode now automatically maximizes only the selected chart pane, letting you focus on the chart you're working with while preserving your overall multi-chart workspace.
Version 0.1.0
First public release
Released ·
First public release
FastChart 0.1.0 is the first public release of the Teligenz charting library — a complete trading chart that drops into a web or mobile application through a single widget class.
New Features
Charting — nine chart types (candlestick, Heikin-Ashi, Renko, OHLC, line, area and more), linear/log/percentage scales, multi-chart and multi-timeframe layouts with synced panes, bar replay, symbol comparison, volume profile and light/dark themes.
65+ drawing tools — trend lines and channels, Fibonacci, pitchforks, Gann, harmonic and Elliott wave patterns, measurement and position tools, annotations and shapes, each with a full properties dialog, per-symbol persistence, undo/redo and touch editing.
85+ indicators — moving averages, RSI, MACD, Bollinger Bands, Ichimoku, Supertrend, ADX and the rest of the standard library, plus volume analysis (Volume Profile, CVD, anchored VWAP, OBV). Outputs are validated against standard reference formulations.
FCScript — a scripting language for custom indicators, with a Monaco-based editor, script gallery, debugger and profiler. Runs off the main thread on either of two engines — a TypeScript interpreter or a Rust/WASM VM — kept in step by a conformance corpus.
Built for trading apps — order and position markers, right-click ordering, price alerts, mobile gestures and bottom sheets, session persistence, data export, and 12 languages with RTL, ARIA and colour-blind-friendly modes.
Improvements
Rendering runs on the GPU via WebGPU, falling back automatically to WebGL2 and Canvas2D. Indicators and scripts compute in Rust/WebAssembly and background workers, so the main thread stays free and interaction stays smooth under load.
The chart recovers from renderer backend loss, isolates failures behind error boundaries, and monitors its own memory and frame budget to hold frame rate under sustained load.
As a release the public API is stable for integration but not frozen. Breaking changes, where needed, will land at minor version boundaries and be documented here. See the FastChart Integration Guide for integration, tiers and configuration.