
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
control-panel
Advanced tools
Embeddable panel of inputs for adding parameter selection to your app or visualization. Modern and minimalist design. Fully encapsulated module including JS and CSS. Can easily be added to any app or page. Heavily inspired by dat-gui, but streamlined, simplified, and written as a npm module for use with browserify.
Supports the following input types
range•checkbox•text•color•button•interval•select
Includes the following themes
dark•light
Want to contribute a new theme or input type? Submit a PR!
Add to your project with
npm install control-panel
Create a panel with four elements and add to your page in the top right.
var control = require('control-panel')
var panel = control([
{type: 'range', label: 'my range', min: 0, max: 100, initial: 20},
{type: 'range', label: 'log range', min: 0.1, max: 100, initial: 20, scale: 'log'},
{type: 'text', label: 'my text', initial: 'my cool setting'},
{type: 'checkbox', label: 'my checkbox', initial: true},
{type: 'color', label: 'my color', format: 'rgb', initial: 'rgb(10,200,0)'},
{type: 'button', label: 'gimme an alert', action: function () {alert('hello!');}},
{type: 'select', label: 'select one', options: ['option 1', 'option 2'], initial: 'option 1'}
{type: 'multibox', label: 'check many', count: 3, initial: [true, false, true]}
],
{theme: 'light', position: 'top-right'}
)
panel = control([input1, input2, ...], [opts])The first argument is a list of inputs. Each one must have a type and label property, and can have an initial property with an initial value. For example,
{type: 'checkbox', label: 'my checkbox', initial: true}
Each type must be one of range • input • checkbox • color • interval • select. Each label must be unique.
Some types have additional properties:
range can specify a min, max, and step (or integer steps). Scale can be either 'linear' (default) or 'log'. If a log scale, the sign of min, max, and initial must be the same and only steps is permitted (since the step size is not constant on a log scale).color can specify a format as either rgb • hex • arraybutton can specify an action callback. Button inputs are not reflected in the state and do not trigger an 'input' event.interval obey the same semantics as range inputs, except the input and ouput is a two-element array corresponding to the low/high bounds, e.g. initial: [1, 7.5].select can specify a list of options, either as an Array (in which case the value is the same as the option text) or as an object containing key/value pairs (in which case the key/value pair maps to value value/label pairs).multibox can specify a number of checkboxes, either by providing a count or a list of names from which the number will be inferred, in which case the color of each box and a text name can also be provided as lists colors and namesThe following optional parameters can also be passed as opts
root root element to which to append the paneltheme can specify light • dark or provide an object (see themes.js for format)title a title to add to the top of the panelwidth width of panel in pixelsposition where to place the panel as top-left • top-right • bottom-left • bottom-right, if undefined will just use relative positioningpanel.on('input', cb(data))This event is emitted every time any one of the inputs change. The callback argument data will contain the state of all inputs keyed by label such as:
{'my checkbox': false, 'my range': 75}
FAQs
embeddable panel of inputs for parameter setting
We found that control-panel demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.