Skip to content

VP Script

Publishing

Publishing puts your indicator in the shop, where anyone can read it and add it to their own chart. It is free, it is open source, and it is reversible.

How it works

Press PUBLISH in the Scripts panel, give it a title and a description, and submit. You are submitting for review rather than publishing directly: every version is checked automatically before anyone can install it, and there is no route from an author’s keyboard to a reader’s chart that skips that.

The status of everything you have submitted is in the Scripts panel, and it updates itself while a review is running.

Every version goes through the review. A moderator takedown is the one state you cannot leave.

What the review does

The bench compiles your script and runs it against a set of deliberately awkward charts:

  • a trending chart, a flat one, a single bar, and an empty one;
  • the same bars twice, to catch anything that differs between two runs;
  • a large chart, against a time budget;
  • every string your script would draw, against the same rules your title and description pass, because a link in a label is a link in front of a reader.

If it does not pass, the review’s own words are shown to you verbatim, with the fixture or the line that caught it. Fix it and submit again; that creates a new version and nobody is moved onto it automatically.

The review runs in the same sealed realm your indicator will run in for readers, so it certifies the behaviour that will actually ship rather than something close to it.

Versions and updates

Publishing again creates a new version of the same listing: the same page, the same install count, the same readers. Say what changed when you submit it: updates are opt-in, so that note is the only thing a reader has to decide from.

Nobody is moved onto a new version automatically. An install is pinned to the exact bytes it was made against, and the reader accepts an update when they choose to.

Sending one to a single person

You do not have to publish to let somebody else run your indicator. From the Scripts panel, Share sends it to one email address. This works on an unpublished draft, which is the point: it is how a work in progress reaches a second pair of eyes.

They get an offer, not an indicator. Nothing appears on their chart until they accept it from the notifications panel beside their account, and when they do it lands under Shared with me in the Indicators dialog, ready to add.

A shared indicator has not been through the review, and the accept step says so. It still runs in the same isolated sandbox as anything from the shop, because it is still code the reader did not write. A moderator takedown also reaches shared copies: sharing is not a way around one.

Where other people’s indicators run

An installed community indicator does not run in the page. It runs in an isolated frame on a separate domain, with no network access, no cookies and no access to the reader’s account, in its own worker, with a watchdog that stops one that stops responding.

Isolation is about containment, not correctness. It cannot tell whether an indicator is any good, which is why every listing shows its full source: read it before you run it.

Taking it down

You can unpublish at any time from the Scripts panel. The listing leaves the shop, its page stops resolving, and it stops running for people who installed it. An author who has decided something is wrong means it should stop, not that new readers should be spared while existing ones keep it.

Unpublishing is not deletion. Your versions are kept, and you can submit the listing again later; it goes back through the review like anything else.

What will not be accepted

Anything that phones home, evaluates text as code, reads the clock, or never terminates is refused, most of it before it is even stored. So is an exact copy of an indicator somebody else has already published.

If you find a published indicator that should not be there, report it from its page. A takedown reaches charts that are already open, not just new installs.