openalgo-charts 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,12 +4,12 @@
4
4
 
5
5
  **A from-scratch, dependency-free HTML5-canvas charting engine for OpenAlgo.**
6
6
 
7
- Professional interactive charts, 102 built-in indicators plus your own custom ones, 51 drawing tools, order flow, market replay, linked chart grids, on-chart trading, vector SVG export and an optional WebGL2 backend. Eight lazy-loaded tiers, zero runtime dependencies, 67.05 KB Brotli for the base engine, and a one-call widget tier that adds the toolbar, drawing rail, dialogs and shortcuts.
7
+ Professional interactive charts, 102 built-in indicators plus your own custom ones, 51 drawing tools, order flow, market replay, linked chart grids, on-chart trading, vector SVG export and an optional WebGL2 backend. Eight lazy-loaded tiers, zero runtime dependencies, 67.08 KB Brotli for the base engine, and a one-call widget tier that adds the toolbar, drawing rail, dialogs and shortcuts.
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/openalgo-charts.svg?color=cb3837&label=npm)](https://www.npmjs.com/package/openalgo-charts)
10
10
  [![license](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)
11
- [![bundle](https://img.shields.io/badge/brotli-67.05%20KB%20base%20%C2%B7%20187.84%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
- [![tests](https://img.shields.io/badge/tests-4208%20passing-brightgreen.svg)](#develop)
11
+ [![bundle](https://img.shields.io/badge/brotli-67.08%20KB%20base%20%C2%B7%20187.90%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
+ [![tests](https://img.shields.io/badge/tests-4215%20passing-brightgreen.svg)](#develop)
13
13
  [![dependencies](https://img.shields.io/badge/runtime%20deps-0-brightgreen.svg)](#principles)
14
14
 
15
15
  [**Documentation**](https://marketcalls.github.io/openalgo-charts/)  ·  [**Live examples**](https://marketcalls.github.io/openalgo-charts/examples)  ·  [**Getting started**](./docs/getting-started.md)  ·  [**Migrating to 2.0**](./docs/migrating-to-2.md)  ·  [**Architecture**](./ARCHITECTURE.md)
@@ -43,11 +43,11 @@ Every chart in the [live gallery](https://marketcalls.github.io/openalgo-charts/
43
43
 
44
44
  ## Install
45
45
 
46
- Current version: **2.1.3**.
46
+ Current version: **2.1.5**.
47
47
 
48
- This patch corrects time-axis drag direction, keeps mouse panning horizontal by
49
- default, and adds a reset control and saved visible-bar preference. See the
50
- [2.1.3 changelog](./CHANGELOG.md#213) and
48
+ This patch keeps drawing previews and freehand strokes visible beyond the latest
49
+ candle and before the first loaded bar. Future drawing anchors remain editable
50
+ and retain their saved positions. See the [2.1.5 changelog](./CHANGELOG.md#215) and
51
51
  [OpenAlgo compatibility guide](https://marketcalls.github.io/openalgo-charts/docs/openalgo-compatibility/).
52
52
 
53
53
  ```bash
@@ -69,7 +69,7 @@ in front of npm rather than being places you upload to. A chart is one HTML file
69
69
  ```html
70
70
  <div id="chart" style="width:100vw;height:100vh"></div>
71
71
  <script type="module">
72
- import { createChart } from 'https://unpkg.com/openalgo-charts@2.1.3/dist/openalgo-charts.mjs';
72
+ import { createChart } from 'https://unpkg.com/openalgo-charts@2.1.5/dist/openalgo-charts.mjs';
73
73
  const chart = createChart(document.getElementById('chart'), { timezone: 'Asia/Kolkata' });
74
74
  chart.addSeries('candlestick').setData(bars);
75
75
  </script>
@@ -108,16 +108,16 @@ Import only what you use. Each tier is a separate bundle that registers into the
108
108
 
109
109
  | Import | Contents | Brotli |
110
110
  |---|---|---|
111
- | `openalgo-charts` | Engine, 13 chart types, panes &amp; scales, primitives, registries, chart state, chart linking, bar cache, interval registry, trading overlay, SVG export, render backend port, OpenAlgo feeds | 67.05 KB |
111
+ | `openalgo-charts` | Engine, 13 chart types, panes &amp; scales, primitives, registries, chart state, chart linking, bar cache, interval registry, trading overlay, SVG export, render backend port, OpenAlgo feeds | 67.08 KB |
112
112
  | `openalgo-charts/indicators` | 102 built-in indicators, the `registerIndicator` contract for your own, and the Tier-2 (external-data) contract | 27.36 KB |
113
- | `openalgo-charts/draw` | 51 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 25.82 KB |
113
+ | `openalgo-charts/draw` | 51 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 25.84 KB |
114
114
  | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point &amp; Figure, Kagi | 2.66 KB |
115
115
  | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO) with compact pixel letters, Footprint, order flow | 14.96 KB |
116
116
  | `openalgo-charts/trade` | Order / position / bracket tools + DOM ladder | 7.61 KB |
117
117
  | `openalgo-charts/webgl` | WebGL2 series backend: batched, analytically anti-aliased GPU rendering of the standard chart types behind `renderer: 'auto'`, with a session-long fallback to the 2D path | 6.38 KB |
118
118
  | `openalgo-charts/widget` | The chart with its chrome in one call: `createWidget` adds a top bar, the drawing rail, a status line, the settings and indicator dialogs, drawing properties, a right-click menu, a keymap with a `?` panel and optional layout persistence. The only tier that ships DOM | 36.01 KB |
119
119
 
120
- Everything together is **187.84 KB Brotli**; a widget terminal (base + draw + indicators + widget, what one `createWidget` call loads) is 156.24 KB. Figures are the measured `size-limit` output. The trade tier is listed as its delta over the base, so loading base + trade costs 74.66 KB.
120
+ Everything together is **187.90 KB Brotli**; a widget terminal (base + draw + indicators + widget, what one `createWidget` call loads) is 156.29 KB. Figures are the measured `size-limit` output. The trade tier is listed as its delta over the base, so loading base + trade costs 74.69 KB.
121
121
 
122
122
  ## What's built
123
123
 
@@ -409,16 +409,16 @@ Enforced in CI by [`size-limit`](./.size-limit.json). Nothing is excluded, becau
409
409
 
410
410
  | Bundle | Limit | Actual |
411
411
  |---|---|---|
412
- | Base engine | 68 KB | 67.05 KB |
413
- | Base + trade | 75 KB | 74.66 KB |
412
+ | Base engine | 68 KB | 67.08 KB |
413
+ | Base + trade | 75 KB | 74.69 KB |
414
414
  | Indicators tier | 30 KB | 27.36 KB |
415
- | Draw tier | 26 KB | 25.82 KB |
415
+ | Draw tier | 26 KB | 25.84 KB |
416
416
  | Transform tier | 5 KB | 2.66 KB |
417
417
  | Profile tier | 15 KB | 14.96 KB |
418
418
  | WebGL2 tier | 7 KB | 6.38 KB |
419
419
  | Widget tier | 37 KB | 36.01 KB |
420
- | Widget terminal (base + draw + indicators + widget) | 157 KB | 156.24 KB |
421
- | **Everything** | **188 KB** | **187.84 KB** |
420
+ | Widget terminal (base + draw + indicators + widget) | 157 KB | 156.29 KB |
421
+ | **Everything** | **188 KB** | **187.90 KB** |
422
422
 
423
423
  ## Documentation
424
424
 
@@ -458,10 +458,12 @@ python server.py --fixture # no yfinance, no network: deterministic synthetic
458
458
 
459
459
  ## Develop
460
460
 
461
+ See [Contributing](./CONTRIBUTING.md) for setup, targeted checks, documentation updates and the release workflow.
462
+
461
463
  ```bash
462
464
  npm install # install dev toolchain
463
465
  npm run typecheck # strict TypeScript check
464
- npm test # unit tests (vitest) - 4208 across 181 files
466
+ npm test # unit tests (vitest) - 4215 across 182 files
465
467
  npm run build # Rollup -> dist/ (minified ESM per tier + types)
466
468
  npm run size # size-limit (Brotli) against the budget
467
469
  npm run e2e # Playwright Chromium smoke tests
@@ -478,7 +480,7 @@ npm run verify # lint + typecheck + test + build + demo tests + dts + size +
478
480
 
479
481
  ## Status &amp; limitations
480
482
 
481
- Version **2.1.3**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
483
+ Version **2.1.5**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
482
484
 
483
485
  Known gaps, stated plainly:
484
486
 
@@ -1208,8 +1208,9 @@ interface DrawingChartHost {
1208
1208
  priceToCoordinate?(price: number, paneIndex?: number): number | null;
1209
1209
  coordinateToPrice?(y: number, paneIndex?: number): number | null;
1210
1210
  /**
1211
- * Optional, the time-axis half of the same conversion. Without them a
1212
- * horizontal nudge assumes the time scale's default bar spacing.
1211
+ * Optional, the time-axis half of the same conversion. coordinateToTime also
1212
+ * keeps previews and freehand strokes active in empty space beyond the bars.
1213
+ * Without these methods a horizontal nudge assumes the default bar spacing.
1213
1214
  */
1214
1215
  timeToCoordinate?(time: number): number;
1215
1216
  coordinateToTime?(x: number): number;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Library version string. Matches package.json (including locally prepared releases). */
2
- declare const VERSION = "2.1.3";
2
+ declare const VERSION = "2.1.5";
3
3
  /** Returns the current library version. */
4
4
  declare function version(): string;
5
5
 
@@ -3342,7 +3342,7 @@ interface ExportSvgOptions {
3342
3342
  }
3343
3343
  /** Preferences for pointer panning and the view restored by reset. */
3344
3344
  interface ChartNavigationOptions {
3345
- /** Mouse and pen plot drags. Touch gestures retain two-axis panning. Default: horizontal. */
3345
+ /** Mouse and pen plot drags. Touch gestures retain two-axis panning. Default: both. */
3346
3346
  mousePan: 'horizontal' | 'both';
3347
3347
  /** Latest bars to show initially and on reset. 0 fits all loaded bars (default). */
3348
3348
  defaultVisibleBars: number;