Skip to content

Releases: N9RecordsTechnologiesIL/VSReacT

VSReacT v0.0.17

Choose a tag to compare

@github-actions github-actions released this 18 Jul 06:07

The scaffolder. JS-only; native module unchanged from 0.0.9.

New package: create-vsreact 0.1.0

  • bun create vsreact my-plugin / npm create vsreact@latest my-plugin — one command scaffolds a complete plugin project:
    CMake (auto-fetches JUCE and the VSReacT native module, or points at
    local checkouts), a gain/pan processor, and a themed React UI that
    hot-reloads in your DAW.
  • Interactive prompts (or --yes) for product name, company, and the
    4-char JUCE codes; --posthog wires @vsreact/posthog end-to-end
    with a placeholder API key and instructions to bring your own.
  • Zero dependencies; the generated ui/ installs @vsreact/core from
    npm like any real project.

Housekeeping

  • Core 0.0.17: the npm README now leads with the scaffolder. The
    example plugins carry a placeholder PostHog key (never a real one),
    and StashTrack's key moved out of source into build-time injection.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.17
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.16

Choose a tag to compare

@github-actions github-actions released this 18 Jul 05:29

The release-polish tier. JS-only; native module unchanged from 0.0.9.

Polish

  • npm READMEs for both packages — @vsreact/core and
    @vsreact/posthog finally have real registry pages: quick-starts,
    the full component index, the architecture picture, and the C++
    wiring for analytics.
  • VERSION exported from @vsreact/core — stamp support dumps
    and analytics with the SDK version.

@vsreact/posthog 0.0.6

  • registerOnce(props) — super properties that never clobber
    existing values (safe defaults).

Examples

  • Three new example plugins under vsreact/examples/, each a
    complete CMake + React project: synth (PianoKeyboard,
    ParamADSREnvelope, wheels, full PostHog integration), drums
    (StepSequencer patterns driving a native step clock, RingMeter —
    no analytics), and channel (EQCurve bound to APVTS bands,
    gain-reduction Meter, Disclosure) — alongside the original gain
    quick-start.
  • StashTrack ships @vsreact/posthog — editor sessions, parameter
    analytics, and error tracking wired end-to-end.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.16
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.15

Choose a tag to compare

@github-actions github-actions released this 18 Jul 04:38

The DSP-display tier — the EQ curve and the ring meter. JS-only;
native module unchanged from 0.0.9.

New components

  • <EQCurve> — the display every EQ plugin wants: the real summed
    biquad response (RBJ cookbook — peak, shelves, passes, notch,
    bandpass) drawn as a center-anchored fill, with one draggable node
    per band (x = frequency on a 20 Hz–20 kHz log scale, y = gain) and
    the wheel adjusting Q inside a begin/end gesture. The pure math is
    exported: biquadMagnitudeDb, eqResponseDb, eqXToHz/eqHzToX.
  • <RingMeter> — a circular level meter on the native arc keys:
    hot zone above hotFrom, optional center readout via format
    channel-strip rings, macro amounts, gain-reduction dials.

@vsreact/posthog 0.0.5

  • screen(name) / useScreen(name) — PostHog screen analytics
    for plugin panels: $screen { $screen_name } on mount.
  • shutdown() — editor teardown: flush everything, then go
    silent; captures after shutdown are dropped.
  • init({ propertyDenylist }) — a mechanical strip-list for
    sensitive keys (paths, emails), applied before beforeSend.

Site

  • Gallery: EQCurve and RingMeter families in all eight worlds.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.15
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.14

Choose a tag to compare

@github-actions github-actions released this 18 Jul 04:28

The workspace tier — structure for multi-page plugin UIs. JS-only;
native module unchanged from 0.0.9.

New components

  • <Tabs> — the page switcher (MAIN / FX / SETTINGS): a themed
    tab bar with an underline indicator that renders the active panel.
    Controlled or uncontrolled.
  • <Disclosure> — the collapsible settings row ("ADVANCED"):
    click the header to fold content in and out.

Hooks & control upgrades

  • useNativeValue(name, initial) — the one-liner for native → UI
    data feeds: holds the latest payload of a C++ event as state.
  • Meterreverse fills from the top (vertical) or right
    (horizontal): gain-reduction meters for compressors.

@vsreact/posthog 0.0.4

  • time(name) / timeEnd(name, props?) — stopwatch captures:
    preset_load { duration_ms } for load times, render passes,
    analysis sweeps.
  • init({ sampleRate }) — whole-session sampling: keep a fraction
    of clients, and kept events carry $sample_rate so PostHog can
    weight the counts.
  • init({ maxQueueSize }) — a queue cap (drop-oldest, default
    1000) so a misbehaving bridge can't grow memory.

Site

  • Gallery: Tabs and Disclosure families in all eight worlds.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.14
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.13

Choose a tag to compare

@github-actions github-actions released this 18 Jul 04:07

The synth tier — the envelope editor and the wheels. JS-only; native
module unchanged from 0.0.9.

New components

  • <ADSREnvelope> / <ParamADSREnvelope> — the classic
    four-corner envelope editor: a filled curve with draggable handles
    for the attack peak, the decay/sustain corner (both axes at once),
    and the release corner. The Param twin drives four host parameters
    with per-handle gestures. The pure adsrLevelAt sampler is exported.
  • <PitchBend> / <ParamPitchBend> — the pitch wheel: drag from
    center, springs back to rest on release; the Param twin writes
    0.5 ± bend/2 and closes the gesture at dead center.
  • <ModWheel> / <ParamModWheel> — the mod wheel: a vertical
    strip that stays where you leave it.

Pitch math

  • midiNoteToHz / hzToMidiNote — equal-temperament conversion
    (69 ↔ 440); feed an oscillator straight from PianoKeyboard.

@vsreact/posthog 0.0.3

  • group(type, key, props?) — group analytics: $groupidentify
    plus $groups stamped on every later event (cleared by reset()).
  • alias(id) and setOnce(props) — link a licence key or old
    install id; write person properties only if unset.
  • init({ beforeSend }) — scrub or veto events before they queue:
    return the edited event, or null to drop it.
  • debug(true) — log every capture and flush to the console.

Site

  • Gallery: ADSREnvelope and PitchBend/ModWheel families, interactive
    in all eight worlds.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.13
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.12

Choose a tag to compare

@github-actions github-actions released this 18 Jul 03:50

The perform tier — play your plugin, not just tweak it. JS-only;
native module unchanged from 0.0.9.

New components

  • <PianoKeyboard> — the playable keyboard: press for note-on,
    release for note-off, drag across keys for glissando (black keys
    correctly steal the top zone). heldNotes paints host MIDI in,
    octave labels on the Cs, any range via startNote/octaves.
  • <StepSequencer> — the pattern grid: rows × steps of clickable
    cells, downbeat tinting every 4, a playhead column the host drives,
    optional row labels. Fully controlled — patterns live in your state.

Value formatting

  • formatDb / formatHz / formatMs / formatPercent /
    formatSemitones / midiNoteName / mapRange
    — the readout
    strings DAW users expect ("+6.0 dB", "1.2 kHz", "350 ms", "C#4"),
    ready for NumberBox's format prop or any label.

Control upgrades

  • ProgressBarindeterminate sweeps a segment across the track
    for unknown-duration work.
  • Styling fix: arbitrary text sizes (text-[13]) now actually resolve
    to font sizes — they were silently ignored, so labels using them
    rendered at the default size.

@vsreact/posthog 0.0.2

  • posthog.captureException(error, props?) — report errors to
    PostHog error tracking as properly-shaped $exception events
    (name, message, QuickJS stack).
  • <PostHogErrorBoundary> — wrap your app: render crashes are
    captured (and flushed immediately) while a fallback keeps the
    editor window alive.
  • optOut() / optIn() / optedOut — a user privacy switch:
    opting out drops new events and discards the unsent queue;
    init({ optOut }) starts disabled.
  • useEditorSession() — brackets the editor lifetime:
    editor_session_start on mount, editor_session_end { duration_ms } on unmount, self-flushing on close.
  • useCaptureOnUnmount(event) — the closing bookend to
    useCaptureOnMount, stamped with the mounted duration.
  • unregister(key) removes one super property; getSessionId()
    exposes the session id for cross-referencing native logs.

Site

  • Gallery: PianoKeyboard and StepSequencer families, playable in all
    eight worlds.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.12
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.11

Choose a tag to compare

@github-actions github-actions released this 17 Jul 09:07

The flagship-visual tier — Output-style centerpieces and hardware feel.
JS-only; native module unchanged from 0.0.9.

New components

  • <MacroPad> / <ParamMacroPad> — the centerpiece macro control:
    a circular 2D pad whose concentric rings breathe with the values
    (x spreads them, y drives intensity), axis labels, drag anywhere,
    double-click recenters. The Param twin drives two host parameters
    from one drag with both gestures opened together.
  • <HardwareKnob> / <ParamHardwareKnob> — the skeuomorphic cap
    with a glowing pointer notch riding the rim (a short value arc) and a
    faint tick track; drag/wheel/double-click like Knob.
  • <Crossfader> / <ParamCrossfader> — the DRY/WET strip: wide
    track, grippy rectangular handle, end labels, double-click recenters.
  • <PulseOrb> — a value-reactive orb: glowing core with echo rings
    that emit faster and brighter as the level rises.

Control upgrades

  • ToggleoffLabel / onLabel side captions (hardware OFF/ON
    style), the active side highlighted.
  • SliderbarThumb renders the flat hardware-style bar thumb in
    both orientations.

Site

  • Gallery: MacroPad showpiece card (wide), HardwareKnob, Crossfader,
    and PulseOrb cards — all interactive.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.11
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.10

Choose a tag to compare

@github-actions github-actions released this 17 Jul 08:57

Fields & feedback — the settings-panel tier, and value labels on the
one-line editor. JS-only; native module unchanged from 0.0.9.

New components

  • <NumberBox> / <ParamNumberBox> — the draggable number (BPM,
    ms, semitones): drag vertically, wheel to step, double-click to
    reset, snap-to-step without float dust (snapToStep exported). The
    Param twin shows the host's formatted text.
  • <Checkbox> / <ParamCheckbox> — settings-panel rows; checked =
    value ≥ 0.5, gestures automation-safe.
  • <RadioGroup> / <ParamRadioGroup> — vertical exclusive options
    with dots; value ↔ index mapping like Segmented.
  • <ProgressBar> — determinate progress with optional percent.
  • <Spinner> — indeterminate loading, a 100° arc chasing its tail
    on the native arc keys.

GenericEditor

  • Every knob now shows a live value label (the host's formatted
    text) plus the parameter name beneath it.

Site

  • /components gallery: six new cards (NumberBox, Checkbox, RadioGroup,
    ProgressBar, Spinner, Button sizes & states) and live value labels on
    the GenericEditor card.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.10
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.9

Choose a tag to compare

@github-actions github-actions released this 17 Jul 08:43

PostHog analytics inside your plugin.

New package: @vsreact/posthog 0.0.1

  • posthog client — posthog-js-shaped API (init, capture,
    identify, register, set, reset, flush) that batches in JS
    (flush at 10 events / 10s) and delivers through the native bridge.
    Every event carries distinct_id, $session_id, and lib metadata.
  • usePostHogParameters() — the one-liner for plugin usage
    analytics: every host parameter change becomes one debounced
    parameter_changed {parameter_id, value, text} event per parameter.
  • useCaptureOnMount(event) for panel/screen views, usePostHog().

Core 0.0.9 — native side

  • vsreact::PostHogBridge — chain it in onNativeCall like the
    ParameterBridge. Answers posthog:config (persistent anonymous
    distinct id via an optional stateFile, host) and posthog:send
    (queues batches, posts {api_key, batch} to {host}/batch/ on a
    background thread via juce::URL). The API key stays in C++. Test
    transport + synchronous-flush hooks included; covered by C++ tests.
  • Release workflow now builds and publishes both packages; CI tests both.
  • No other core changes — JS core API identical to 0.0.8.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.9
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs

VSReacT v0.0.8

Choose a tag to compare

@github-actions github-actions released this 17 Jul 08:17
  • @vsreact/core/components subpath export — the whole component
    kit importable on its own (import { Knob, Select, Meter } from "@vsreact/core/components"). Same exports as the root; exists for
    readability and as the boundary line if the kit ever becomes its own
    package. Everything still ships in the one @vsreact/core install.

Install

bun add @vsreact/core   # or npm install / yarn add / pnpm add

Fetch the native JUCE module with CMake:

include(FetchContent)
FetchContent_Declare(vsreact
  GIT_REPOSITORY https://github.com/N9RecordsTechnologiesIL/VSReacT.git
  GIT_TAG        v0.0.8
  SOURCE_SUBDIR  vsreact)
FetchContent_MakeAvailable(vsreact)

Docs: https://vsreact.n9records.com/docs