summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 82f89b5c018f56ab7a7fb9bc933d73fd2eb00cf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
# VCV Rack changelog

In this document, Ctrl means Cmd on Mac.

### 2.2.1 (in development)
- Add `CROSS_COMPILE` environment variable to specify target triplet for building plugins for non-native architectures.
- Accept `aarch64` in target triplet as alias for ARM64.
- Rack Pro
	- Re-enable rtaudio and rtmidi in plugin adapters, so audio/MIDI devices can be used directly by Rack.
	- Fix VST3 adapter not loading on Bitwig Linux and possibly other hosts, by providing VST3 as folder bundle instead of single file.
	- Fix CLAP adapter not loading on Windows, by statically linking libgcc.

### 2.2.0 (2022-11-23)
- Add MIDI Loopback driver, allowing modules with MIDI ports to send MIDI messages to other modules.
- Improve fuzzy search in module browser.
- Allow building on ARM64 CPUs.
- Rename plugin packages to `SLUG-VERSION-OS-CPU.vcvplugin`.
- Rack Pro
	- Add VST3, Audio Unit, and CLAP plugin adapters.
	- Add framerate setting to plugins.
- API
	- Add `system::sleep()`.
	- Make `random::get()`, `uniform()`, etc use global random state instead of thread-local.

### 2.1.2 (2022-07-04)
- Add old module moving behavior (nearest and force-moving), available by disabling "View > Auto-squeeze algorithm".
- Reorganized View menu.
- Add version comparator so Rack only updates plugins or itself if the remote version is "greater" than the local version, as defined by the `string::Version` documentation.
- Add file association to Mac, so double-clicking a `.vcv` patch file in Finder opens Rack and loads the patch.
- Fix expanders not updating (connecting or disconnecting to adjacent modules) when cloning or removing modules.
- Fix VCV Audio 2 VU meter light thresholds not matching label.

### 2.1.1 (2022-05-21)
- Allow changing cable colors with port menu.
- Fix placement bugs and improve behavior when moving or duplicating modules.
- Fix probabilistic crash when undoing a module paste action.
- Rack Pro
	- Fix VST2 window size not being remembered on Mac.
- API
	- Make `SvgButton` dispatch `ActionEvent` only on left mouse down, instead of left/right mouse down and drag drop.

### 2.1.0 (2022-02-26)
- Change behavior of force-moving modules so that other modules return to original position while dragging.
- Update to RtMidi 5.0.0.
- Update to RtAudio 5.2.0.
- Update GLFW.
- Fix plug graphic sometimes being incorrectly rotated.
- Core
	- Add "Pitch bend range" setting to MIDI to CV module.
	- Fix MIDI to CV incorrectly setting pitch wheel and mod wheel outputs in MPE mode.
- Rack Pro
	- Fix crash if generating hundreds of MIDI output messages per process block in VST2.

### 2.0.6 (2022-01-15)
- Add "Save a copy" to File menu.
- Remember CPU meter state across launches.
- Use audio device's suggested sample rate as initial sample rate.
- Add more logging of initialization/destruction of subsystems and module instantiation.
- Make MIDI input queue thread-safe, fixing probabilistic crash when processing MIDI input.
- Rack Pro
	- Generate MIDI Start message in DAWs like Cubase that pre-roll transport.
	- Generate MIDI Song Position Pointer messages when DAW is playing.
	- Fix VST2 input/output channel labels being truncated in Ableton Live.
	- Improve VST2 audio performance by avoiding unnecessary copying of buffers.

### 2.0.5 (2022-01-01)
- Swap order of parameter name and module name in MIDI-Map.
- Parse all note names from c0 to b9 and accidentals like c# and eb in parameter entry field.
- Tweak framebuffer render-skipping algorithm to always render at least 1 framebuffer after the frame deadline, to prevent framebuffers from never being rendered.
- Set audio device default sample rate to 44100, and block size to 256 except DirectSound to 1024.
- Fix file dialog truncating Unicode filenames on Mac.

### 2.0.4 (2021-12-18)
- Fix hang when initializing Audio module.
- Fix hidden window after closing while minimized and reopening.
- Move Import Selection menu item to File menu bar.
- Switch from GTK3 to `zenity` for opening dialogs on Linux.
- Implement prompt dialog on Windows.
- Make Windows installer add Rack to list of CFA allowed apps, allowing Rack to write to "My Documents" folder if Controlled Folder Access is enabled.
- Rack Pro
	- Improve stability of DAW MIDI clock.
	- Fix graphics glitch when duplicating module with Ctrl+D in Ableton Live.
	- Re-enable patch load error dialog.
- SDK
	- Compile with `-fno-omit-frame-pointer`.

### 2.0.3b (2021-12-09)
- Rack Pro
	- Use separate template patch when running as a plugin.

### 2.0.3 (2021-12-09)
- Fix MIDI-Map not accepting MIDI CC.
- Fix order of Audio-16 outputs 13/14 and 15/16.
- Clear patch before removing autosave dir when loading patch. This fixes inability to load patches on Windows when modules hold file handles to patch storage.
- Fix crash when patch attempts to add a cable that connects to a valid Port but an inexistent PortWidget (e.g. if a module defines a Port but omits the PortWidget).
- Upgrade from ustar to pax tar patch format. Don't store actual uid/gid, just set to 0.
- Rack Pro
	- Add external audio/MIDI drivers in plugin, except ASIO on Windows.
	- Show machine ID in splash window for offline activation.
	- Prevent "Reserved" plugin parameter from being changed when moving module parameters.

### 2.0.2 (2021-12-06)
- Turn off lights if module is bypassed.
- Fix Font and Image not loading UTF-8 filenames on Windows.
- Fix plugins not loading if their fallback alias exists.
- Fix crash when sometimes unsetting audio interface on Mac.
- Rack Pro
	- Save/restore plugin window size in patch.
	- Fix crash on scan in Renoise.

### 2.0.1 (2021-12-02)
- Fix network connection timeout.
- Flush log file when logging to avoid truncated logs.

### 2.0.0 (2021-11-30)
- Redesign Module Browser with compact layout, adjustable zoom levels, sorting options, intelligent searching, and multiple tag selection.
- Redesign component graphics and Core panels by [Pyer](https://www.pyer.be/).
- Add port tooltips with name, voltage, and list of connected ports.
- Add port context menu with ability to create cables with a particular color, drag any cable from the stack, or delete the top cable.
- Evaluate mathematical expressions (such as `1+2*3`) in parameter context menu fields.
- Add multiple module selection by highlighting a rectangle or Shift-clicking on a module panel.
- Add importing/exporting module selections to new `.vcvs` file format.
- Add module whitelist to Module Browser which synchronizes individual modules chosen in the VCV Library.
- Add favorite modules filter to Module Browser.
- Restructure engine to no longer use an "engine thread".
	- Improve engine performance and latency by no longer requiring thread synchronization between the engine thread and audio thread. The engine now runs directly on the audio thread.
	- Add support for multiple simultaneous audio devices.
	- Add "Master module" context menu item to VCV Audio modules to select which audio device clocks the engine.
	- Allow other modules to be the primary module, such as VCV Recorder for rendering audio faster than real-time.
	- Remove "Real-time priority" menu item, since the thread priority is now managed elsewhere (RtAudio, etc).
	- Remove engine pausing as it no longer makes sense with the new engine architecture.
- Replace module disabling with bypassing, which directly routes certain inputs to outputs if specified by the plugin.
- Duplicate cables patched to inputs when a module is duplicated.
- Add module tags to module context menu.
- Add module manual URL (if plugin developer supplies it) to module context menu item.
- Add quick access to user module patches from `<Rack user dir>/presets/<plugin slug>/<module slug>` to module context menu. Supports subdirectories.
- Add infinity and NaN protection to cables, so they won't propagate non-finite values from badly behaving modules.
- Add basic headless support with the `-h` flag.
- Add multiple parameter dragging modes: scaled linear, absolute rotary, and relative rotary.
- Add "knobLinearSensitivity" property to settings.
- Add timestamps to MIDI messages.
- Allow sending and receiving SysEx messages through MIDI drivers.
- Allow scrolling with Alt+click and drag.
- Add "File > Open recent" menu item for opening recent patches.
- Add "Preset > Save template" to module context menu which saves the default module preset to load when a new instance is added to the rack.
- Break Rack executable into libRack shared library and lightweight standalone Rack executable.
- Add support for 1/2x and 1/4x low-fidelity sample rates to engine and "Engine > Sample rates" menu.
- Add Escape key command for existing fullscreen, in case F11 doesn't work.
- Copy cable color when cloning cables with Ctrl+click.
- Fix key commands on AZERTY, Dvorak, and all other keyboard layouts.
- Add Mouse device to Computer keyboard/mouse MIDI driver.
- Make scrollbar mouse interaction similar to modern OS behavior.
- Re-render framebuffers when subpixel offset changes, fixing bug that makes ports and knobs appear slightly offset at certain zoom levels.
- Use new `.vcv` patch format, an archive (POSIX tar compressed with Zstandard) of a `patch.json` file, module patch assets, and potentially other future files.
- Use randomly-generated 53-bit IDs to identify modules and cables in the patch.
- Use a fuzzy search algorithm for searching modules in the Module Browser.
- Add tips window which appears when Rack launches or when choosing "Help > Tips".
- Check for Library updates every few seconds to avoid needing to restart Rack to check for updates.
- When clicking on a module in the Module Browser and immediately releasing, place the module in the last cursor position in the rack, rather than the current cursor position.
- When clicking and dragging a module from the Module Browser, fix the mouse handle offset to the center of the module.
- Allow darkening rack brightness.
- Draw spotlight near cursor when rack brightness is lowered.
- Improve light rendering with a more physical blending algorithm.
- Add engine CPU meter and framerate meter to menu bar.
- Allow zooming rack with extra mouse buttons 4 and 5.
- Add `"pixelRatio"` to settings for forcing the UI pixel scale.
- If Ctrl+clicking on any menu item, the menu stays open (except for some menu items like "Delete Module").
- Add Ctrl+F1 key command when cursor is hovering a module to open its user manual.
- Redesign CPU meter with percentage history graph.
- Add PulseAudio driver on Linux.
- Distribute .pkg installer on Mac.
- Check for VCV Library updates when Library menu is opened, rather than at time intervals.

- Core
	- Add Audio-2 module with stereo input/output, a level knob, and VU meters.
	- Add DC blocker setting to Audio modules. On Audio-2, enable it by default.
	- Add MPE mode to MIDI-CC and MIDI-Gate.
	- Add mode to MIDI-CC to process 14-bit MIDI CC via MSB/LSB.
	- Use MIDI timestamps in MIDI-CV, MIDI-CC, MIDI-Gate, and MIDI-Map to improve overall timing and drastically reduce clock jitter.
	- Add red clip lights to VCV Audio-8/16 when signal reaches beyond ±10V.
	- Reset notes in MIDI-CV and MIDI-Gate if an "all notes off" MIDI message is received.
	- Allow disabling smoothing for MIDI-CV (pitch and mod wheel), MIDI-CC, and MIDI-Map.
	- Add several module presets for many Core modules.

- API
	- Add setters/getters for nearly every instance variable in Rack's API. Use these for higher likelihood of stability.
	- Compile Rack and plugins with `-march=nehalem`, enabling (and requiring) up to SSE4.2 and POPCNT instruction sets.
	- Add `Module::configInput()` and `Module::configOutput()` for adding names to ports.
	- Replace `ParamWidget::paramQuantity` with `ParamWidget::getParamQuantity()`.
	- Add `.modules[].manualUrl` to plugin manifest schema.
	- Add `appendAudioMenu()` and `appendMidiMenu()` so plugin developers can develop custom audio/MIDI interfaces without adding an `AudioWidget/MidiWidget` to their panel.
	- Make `Module::toJson()` and `fromJson()` virtual.
	- Add `Module::paramsToJson()` and `paramsFromJson()` virtual methods.
	- Add `SwitchQuantity` and a helper method `Module::configSwitch()` for displaying named values in the parameter context menu. Also add `Module::configButton()` recommended for momentary switches with no value labels.
	- Overhaul Engine threading model to allow as many Engine methods to be called simultaneously as possible, while ensuring that Module events are mutually exclusive to module processing.
	- Add `Engine::getNumModules()` and `Engine::getModuleIds()`.
	- Add `event::KeyBase::keyName`. Plugins should use this instead of `key` for alphanumeric keys in order to support all keyboard layouts.
	- Improve thread safety of `dsp::RingBuffer`.
	- Add several convenient filesystem routines to `system::`.
	- Add `system::getTime()` and `getUnixTime()`.
	- Add `system::readFile()` and `writeFile()`.
	- Move all `string::` functions dealing with filesystem paths to `system::`.
	- Change type of `Module::id` and `Cable::id` from `int` to `int64_t`.
	- Move event classes to inside `widget::Widget` class.
	- Deprecate `Window::loadSvg()`. Un-deprecate `Svg::load()`.
	- `Font` and `Image` can no longer be stored across UI frames. Load them with `APP->window->loadFont()` and `loadImage()` each `draw()` method.
	- Add `Widget::hasChild()`, `addChildBottom()`, `addChildBelow()`, `addChildAbove()`, and `drawChild()`.
	- Add `Module::createPatchStorageDirectory()` and `getPatchStorageDirectory()`.
	- Add `createMenuLabel()`, `createMenuItem()`, `createCheckMenuItem()`, `createBoolMenuItem()`, `createBoolPtrMenuItem()`, `createSubmenuItem()`, `createIndexSubmenuItem()`, and `createIndexPtrSubmenuItem()` to helpers.
	- Add `Module::onReset()` and `onRandomize()`. Overrides default param resetting and randomization behavior if overridden, unless super methods are called.
	- Add `Module::SaveEvent`.
	- Add operator overloads for `Vec`.
	- Add `string::join()`, `split()`, `formatTime()`, and `formatTimeISO()`.
	- Add `random::Xoroshiro128Plus` which can be used like C++ `<random>` classes.
	- Add `Port::getVoltageRMS()`.
	- Add `Widget::drawLayer()` for handling multiple draw passes.
	- Add on/off threshold values to `dsp::SchmittTrigger`.
	- Add `dsp::convert()` template functions for converting audio between normalized floats and integers.
	- Add `bool app::SvgSwitch::latch` setting for latching button switches.
	- Dispatch `Module::SampleRateChange` event when `Module` is added to engine.

### 1.1.6 (2019-11-04)
- Add ability for plugins to use LuaJIT on Mac.
- Fix normal random number generator possibly returning -infinity.
- Core
	- MIDI-Map: Don't move param until the first MIDI CC command is sent.
- API
	- Remove support for namespaced `rack::APP`, `rack::DEBUG`, etc macros. Use namespace-less `APP`, `DEBUG`, etc instead.
	- Add `dsp::IIRFilter`.

### 1.1.5 (2019-09-29)
- Swap order of tags and brands in Module Browser.
- Add View > Frame rate menu bar item.
- Hide menu and scrollbars when fullscreen.
- Add key command (F3) for engine CPU meter.
- Add numpad key commands.
- Automatically unzip update on Mac.
- Stop worker threads when engine is paused to save CPU.
- Core
	- Disable smoothing for MIDI CC buttons in MIDI-Map.
	- Fix sustain pedal release bug when using polyphonic mode in MIDI-CV.
- API
	- Add libsamplerate library.

### 1.1.4 (2019-08-22)
- Fix parameter smoothing of MIDI-Map.
- Sort modules within plugin in the Module Browser according to plugin rather than alphabetically.
- Fix bug where knobs sometimes jump while dragging.
- Reimplement CPU meter to measure thread runtime, not real time.
- Fix crashes when deleting/duplicating modules while dragging modules/cables in certain cases.
- API
	- Add `dsp::BiquadFilter`.
	- Add `dsp/approx.hpp` with approximate math functions.
	- Add `simd::tan()`, `atan()`, and `atan2()`.
	- Add `string::toBase64()` and `fromBase64()`.

### 1.1.3 (2019-07-23)
- Include root certificate bundle for libcurl on all OS's.
- Revert to OpenSSL from Schannel on Windows.
- Bundle unsigned Fundamental package on Mac.

### 1.1.2 (2019-07-20)
- Add app notarization on Mac, which removes the "Apple cannot check for malicious software" message on launch.
- Write stack trace to log.txt and display dialog box when Rack crashes.
- Re-enable JACK MIDI driver on Linux.
- Fix scroll speed for mice and trackpads on Mac.
- Fix undo history bug when dragging patch file to the Rack window.
- Fix crash when pasting presets to an empty rack space with Ctrl+V.
- Fix module expanders being assigned incorrectly when loading presets.
- Add check for duplicate port IDs for modules.

### 1.1.1 (2019-07-01)
- Add auto-updating on Windows when Help > Update VCV Rack is clicked.
- Fix extension filters in open/save dialog box on Windows.
- Fix expanders not attaching when force-dragging modules.

### 1.1.0 (2019-06-27)
- Request microphone access on Mac to prevent Mac 10.14+ from blocking audio input.
- Clear filters in Module Browser when backspace is pressed while the search field is empty.
- Add Ctrl+0 key command to set zoom to 100%.
- Emulate middle-click with Ctrl+shift-click on Mac.
- Fix MIDI receiving in Bridge MIDI driver.
- Fix opening/saving UTF-8 filenames on Windows.
- Fix bug where cable ID's were not being set in .vcv patches.
- Plugin API
	- Add `string::absolutePath()`.
	- Use namespace for Core plugin to avoid name clashes.

### 1.0.0 (2019-06-19)
- Add polyphonic cables.
- Add multithreading to engine.
- Add undo/redo history.
- Add module expander support.
- Add parameter labels, units, and descriptions.
- Add parameter tooltips for quickly viewing parameter values.
- Add parameter context menu for entering numerical values, unmapping, etc.
- Change parameter initialization to double-click.
- Add ability to Ctrl+click on an input port to clone the existing cable.
- Add module "force" dragging when holding Ctrl.
- Add ability to disable modules with a context menu item and key command Ctrl+E.
- Add sample rates up to 768,000 Hz (16 x 48,000 Hz).
- Overhaul Module Browser with visual previews of modules.
- Add plugin info sub-menu to module context menu with links to manual, website, source code, etc.
- Add factory presets to module context menu if plugin supplies a folder of presets.
- Add default template patch.
- Add menu item to save the current patch as the template.
- Add "frameRateLimit" and "frameRateSync" for setting maximum screen refresh rate and to toggle vertical sync.
- Add "autosavePeriod" for setting the frequency of autosaves in seconds.
- Add textual menu bar, rearranged menu items, removed icons.
- Make CPU timer display microseconds and percentage instead of millisamples.
- Add engine real-time priority setting.
- Make rack infinite in all four directions.
- Add bus board graphic to rack.
- Add key command Ctrl+`-` and Ctrl+`=`, or Ctrl+scroll, for zooming the rack.
- Fix draw order of cable plugs and wires.
- Make Gamepad MIDI driver generate MIDI CC instead of MIDI notes for buttons.
- Add Numpad keyboard MIDI device.
- Fix Unicode user directories on Windows.
- Add ability to change cable colors in `settings.json`.
- Add `-p X` flag for dumping a screenshot of each available module.
- Allow user to see changelogs of plugins before updating their plugin library.
- Allow user to update individual plugins.
- Core
	- Add Audio-16 with 16/16 inputs/outputs.
	- Add CV-MIDI, CV-CC, and CV-Gate for sending MIDI to external devices.
	- Add MIDI-Map for mapping MIDI CC parameters directly to Rack parameters.
	- Add polyphony to MIDI-CV.
	- Add MPE mode to MIDI-CV.
	- Add "Panic" button to all MIDI modules to reset performance state.
- Plugin API
	- Add [`helper.py`](helper.py) for creating and manipulating plugins with the command-line.
	- Add [`simd.hpp`](include/dsp/simd.hpp) for generically handling arithmetic and math functions for vectors of floats, accelerated with SSE.
	- Add `dsp::VuMeter2`.
	- Add `dsp::Timer` and `dsp::Counter`.
	- Overhaul event system with many new events.
	- etc. See more at https://vcvrack.com/manual/Migrate1.html.
- Licenses
	- Relicense Rack to GPLv3 with the VCV Rack Non-Commercial Plugin License Exception and a commercial licensing option.
	- Collect all license statements into new [LICENSE.md](LICENSE.md) file.
	- License Core panel graphics under CC BY-NC-ND 4.0.

### 0.6.2 (2018-07-13)
- Add module presets.
- Add [command line arguments](https://vcvrack.com/manual/Installing.html#command-line-usage) for setting Rack directories.
- Improve UI/engine communication stability.
- [VCV Bridge](https://vcvrack.com/manual/Bridge.html) 0.6.2
	- Add VST FX plugin.

### 0.6.1 (2018-06-17)
- Add gamepad MIDI driver.
- Add computer keyboard MIDI driver.
- Add JACK support on Linux.
- Add velocity mode to MIDI-Trig.
- Add MIDI multiplexing so multiple MIDI modules can use the same MIDI device on Windows.
- Make Module Browser layout more compact.
- Add power meter.
- Add icons to toolbar.
- [VCV Bridge](https://vcvrack.com/manual/Bridge.html) 0.6.1
	- Replace VST effect plugin with VST instrument plugin with audio inputs.
	- Add MIDI support.
	- Add DAW transport and clock.

### 0.6.0 (2018-03-29)
- Release [*VCV Bridge*](https://vcvrack.com/manual/Bridge.html) for interfacing Rack with your DAW.
	- VST/AU effect plugins (Mac and 32/64-bit Windows) for using Rack as a send/return on a DAW track.
	- Enables future VSTi/AU instrument plugins with MIDI and DAW clock transport to be added in a later Rack 0.6.* update.
- Updated [*Plugin Manager*](https://vcvrack.com/plugins.html) to handle open-source plugins.
	- Potentially all plugins can be added with help from the [VCV Community](https://github.com/VCVRack/community/issues/248).
- New *Module Browser* for adding modules to the rack.
	- Launch by right-clicking on the rack or pressing <enter>.
	- Add "favorite" modules by clicking on the star button.
	- Navigate modules with arrow keys or mouse.
- Redesign [Core](https://vcvrack.com/manual/Core.html) modules.
	- Access to audio channels beyond the first 8 inputs/outputs.
	- Improve AUDIO stability.
	- Add retrigger output to MIDI-1.
	- Merged MIDI clock module with MIDI-1.
	- Fix MIDI-4 sustain pedal in polyphonic modes.
- Improve sample rate conversion performance, is disabled entirely when not needed.
- Patch cable colors are saved to patch files.
- Add highlighting for active patch cables when hovering mouse over port.
- Add shadows to knobs and ports.
- Add File > "Disconnect cables".
- Release [Rack SDK](https://github.com/VCVRack/Rack/issues/258#issuecomment-376293898) for compiling plugins without compiling Rack.

### 0.5.1 (2017-12-19)
- Add Plugin Manager support.
- Fix metadata panel in the Add Module window.

### 0.5.0 (2017-11-21)
- Add zoom scaling from 25% to 200%.
- Automatically scroll when dragging cables to the edge of the screen.
- Add Quad MIDI-to-CV Interface, CC-to-CV, Clock-to-CV, and Trigger-to-CV MIDI interfaces.
- Improve support for ASIO, WASAPI, DirectSound, Core Audio, and ALSA audio drivers.
- New module browser with search and tags.
- Enhanced LED emulation in graphics engine.
- File > New attempts to load "template.vcv" in the "Documents/Rack" folder if it exists.

### 0.4.0 (2017-10-13)
- Cables can now stack on output ports.
- Add sub-menus for each plugin, includes optional plugin metadata like URLs.
- Add MIDI CC-to-CV Interface, updated MIDI-to-CV Interface.
- Add new scrolling methods: middle-click-and-drag, shift-scroll, and arrow keys.
- Add engine pausing in sample rate menu.
- Add resizable blank to Core.
- Add LEDs on plugs.
- Support for AMD Phenom II processors.
- Use self-contained Mac app bundle, no need for a Rack folder.

### 0.3.2 (2017-09-25)
- Add key commands.
- Fix "invisible knobs/ports" rendering bug for ~2010 Macs.
- Add "allowCursorLock" to settings.json (set to "false" for touch screen support).
- Fix 100% CPU issue when no audio device is selected.
- Add vector scaling panels.

### 0.3.1 (2017-09-13)
- Fix Windows open dialog current working directory graphics problem.
- Ctrl+C/Ctrl+V to copy/paste from text and password fields.
- Automatically remember settings and login token between launches.
- Remove .zip after downloading and extracting plugin.
- Ctrl+click to right click on Mac.
- Fix menu "flicker" when menu cannot fit in window.
- tweaks to Fundamental and Audible Instruments plugins.

### 0.3.0 (2017-09-10)
- Knobcon public Beta release.