Merged
Conversation
…ecause they need to be called on every bar even if they are inside a conditional block
- proper handling of multi level nested conditions - handling transformed IIFE statements - edge cases for switch/case statements - missing enum keyword
Fix : backfill issue in ta methods : sma, highest, lowest, stdev, variance, dev, wma, linreg, cci, median, roc, change, alma
…tains the provider ID Fix - request.security : properly handle tuple returns
Pine script compliance fixes
v0.9.0 - Box, Table & Polyline Namespaces, Pine Script Compliance & Critical Fixes
Fixed missing enum extend. #137
Fixed for consistent evaluated hline options. #134
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[0.9.0] - 2026-02-27 - Box, Table & Polyline Namespaces, Pine Script Compliance & Critical Fixes
Added
box.*): Full implementation of the box drawing namespace —box.new(),box.copy(),box.delete(), and all setter/getter methods (set_left,set_right,set_top,set_bottom,set_bgcolor,set_border_color,set_border_width,set_border_style,set_text,set_text_color,set_text_size,set_extend, etc.).table.*): Full implementation of the table drawing namespace —table.new(),table.cell(),table.delete(), and cell/table setter methods. Tables are positioned at fixed screen locations (position.top_left,position.bottom_center, etc.) and rendered as DOM overlays in QFChart.polyline.*): Implementation ofpolyline.new()for rendering multi-point connected paths from arrays ofchart.pointobjects, with support for curved lines, closed shapes, and fill color.int(),float(), andstring()cast/conversion expressions in Pine Script syntax (e.g.,x = int(someValue)).enumKeyword Support: Addedenumkeyword handling in the transpiler for Pine Script v6 enum declarations.box.test.ts,table.test.ts,polyline.test.ts,linefill.test.ts,fill.test.ts,hline.test.ts,line.test.ts,plot.test.ts,constants.test.ts,request.test.ts,ta-backfill.test.ts,parser-fixes.test.ts(1000+ new test cases).Changed
label.style_label_up→label.style_label_up). Aligned string constants across label styles, line styles, shape types, and size presets so PineTS output is directly compatible with QFChart renderers without manual mapping.Fixed
na == naEquality: Fixedna == nato correctly returnfalsein Pine Script (unlikeNaN === NaNin JavaScript which is alsofalse, but the equality transpilation path was not applying__eq()consistently in all cases).ta.*window-based functions (sma,highest,lowest,stdev,variance,dev,wma,linreg,cci,median,roc,change,alma) when the function call is inside a conditional block (e.g.,if someCondition => ta.sma(...)). Previously, the source-series backfill would fail because the method wasn't being called on bars where the condition was false, leaving the window incomplete.ta.obv,ta.tr, and other TA function-variables that behave as both a function call and a variable. These must be evaluated on every bar — even when referenced inside a conditional block — to maintain accurate rolling state. They are now hoisted to the top of the context function.math.roundCompliance: Fixedmath.roundto match Pine Script's rounding behavior (rounds half away from zero, matching Pine'smath.round()semantics rather than JavaScript'sMath.round()which rounds half towards positive infinity).request.security—syminfo.tickerId: Fixedrequest.securityto correctly parsesyminfo.tickerIdwhen it contains the provider prefix (e.g.,"BINANCE:BTCUSDT"), stripping the provider ID before lookup.request.security— Tuple Returns: Fixedrequest.securityto correctly unwrap and return tuple values from the secondary context.if/else if/elsechains that span multiple indentation levels.color.*Fixes: Fixed severalcolor.*function edge cases for correct RGBA string generation.