== Major JUCE features and updates ==

This file just lists the more notable headline features. For more detailed info
about minor changes and bugfixes, please see the git log!

Version 5.4.6
  - Fixed compatibility with macOS versions below 10.11
  - Multiple thread safety improvements
  - Added dynamic parameter and parameter group names
  - Updated to the latest Android In-App Purchases API
  - Improvements to the Windows message queue under high load
  - Replaced WaitableEvent internals with std::condition_variable
  - Fixed some macOS text alignment issues

Version 5.4.5
  - Improved message queue performance on Linux
  - Added missing lifecycle callbacks on Android Q
  - Refactored the AudioBlock class
  - Fixed APVTS parameter update recursion
  - Updated Bela code to support latest release
  - Fixed issues drawing italicised text on macOS
  - Fixed broken back button behaviour on Android
  - Added Bluetooth permissions settings needed for iOS 13.0+ to the Projucer
  - Replaced select() calls with poll()
  - Various bug-fixes, improvements and documentation updates

Version 5.4.4
  - Improvements to floating point number printing
  - Faster plug-in parameter indexing
  - Added support for persisting attachements to MIDI devices
  - Refactored Linux event loop handling
  - Multiple C++ modernisation improvements to the API
  - Added support for macOS 10.15 and iOS 13
  - Added support for Visual Studio 2019
  - Removed support for Visual Studio 2013

Version 5.4.3
  - Added a Visual Studio 2019 exporter to the Projucer
  - Added options to configure macOS Hardened Runtime in the Projucer
  - Fixed a potential memory corruption when drawing on macOS/iOS
  - Fixed file drag and drop for Windows 8
  - Multiple DSP module enhancements
  - Various bug-fixes, improvements and documentation updates

Version 5.4.2
  - Restructured the low-level Android native code
  - Added an ADSR envelope class
  - AudioProcessorValueTreeState performance improvements
  - Improved Xcode 10 support
  - Improved VST3 hosting
  - Windows hiDPI scaling enhancements

Version 5.4.1
  - Fixed a VST2 compilation error in VS2013
  - Fixed some live-build compilation errors in the Projucer
  - Fixed a bug in the Oversampling class
  - Made MPESynthesiserVoice::noteOnTime public
  - Fixed some bugs in the Unity plug-in wrapper
  - Fixed some VS2015 compiler errors

Version 5.4.0
  - macOS Mojave and iOS 12 support
  - Windows hiDPI support
  - Unity native plug-in support
  - Microsoft BLE MIDI support
  - Plug-in parameter groups
  - Support for production-ready Android OBOE
  - Video playback support on Android and iOS
  - AudioProcessorValueTreeState improvements
  - Support for Android Studio 3.2
  - Various bug-fixes, improvements and documentation updates

Version 5.3.2
  - Removed the OSX 10.5 and 10.6 deployment target options from the Projucer and enabled more C++11 features across all platforms
  - Replaced all usage of ScopedPointer with std::unique_ptr
  - Added camera support for iOS and Android
  - Fixed some issues using an UndoManager with an AudioProcessorValueTreeState
  - Added MIDI input to IAA plug-ins
  - Made multiple calls to MidiInput::openDevice share the same underlying win32 MIDI handle
  - Added a config flag to juce_audio_processors for enabling LADSPA plugin hosting and enabled it in the AudioPluginHost
  - Added a "plug-in can do" callback to the VSTCallbackHandler interface
  - Fixed various undefined behavior in SIMDRegister
  - Added the methods AudioBlock::copyTo/AudioBlock::copyFrom which facilitate copying to/from an AudioBuffer
  - Added a lambda callback to OpenGLGraphicsContextCustomShader to allow custom set-up when the shader is activated
  - Fixed a bug causing an unintentional menu item highlight disco party when using a popup menu in a plug-in's UI
  - Marked as deprecated: String::empty, var::null, File::nonexistent, ValueTree::invalid and other problematic statically-initialised null values

Version 5.3.1
  - Add Android and iOS support to AudioPluginHost
  - Added support for Bela in the form of an AudioIODeviceType
  - Add bypass support to both hosting and plug-in client code
  - Added an isBoolean flag to APVTS parameters
  - Re-worked plug-in wrappers to all use new parameter system via LegacyAudioParameter wrapper class
  - Fixed an issue where opening the same midi device twice would cause a crash on Windows
  - Deprecated MouseInputSource::hasMouseMovedSignificantlySincePressed() and replaced with more descriptive methods
  - Added support for relative or special path symbolic links when compressing/uncompressing zip archives and creating/reading files
  - Ensured that File::replaceInternal does not fail with ACL errors on Windows
  - Merged-in some Ogg-Vorbis security fixes
  - Fixed a bug which would prevent a SystemTrayIconComponent from creating a native popup window on macOS
  - Various Android and iOS fixes
  - Added a "PIP Creator" utility tool to the Projucer
  - Added options for setting plugin categories and characteristics with MultiChoicePropertyComponent in the Projucer
  - Fixed a Projucer bug where the OSX base SDK version was not being set
  - Added a command-line option to use LF as linefeeds rather than CRLF in the Projucer cleanup tools
  - Multiple documentation updates

Version 5.3.0
  - Added support for Android OBOE (developer preview)
  - Updated JUCE's MPE classes to comply with the new MMA-adopted specification
  - Multiple documentation updates
  - Restructured the examples and extras directories and updated all JUCE examples
  - Multiple hosted parameter improvements
  - Overhauled the GenericAudioProcessorEditor
  - Added support for a subset of the Cockos VST extensions
  - Added support for loading VST3 preset files
  - Added boolean AudioProcessorParameters
  - Added thread safe methods for getting and setting the AudioProcessorValueTreeState state
  - Added customisable MacOS icons

Version 5.2.1
  - Added native content sharing support for iOS and Android
  - Added iOS and Android native file chooser support
  - Implemented WebBrowserComponent on Android
  - Added SystemStats::getDeviceManufacturer()
  - Ensured that JUCE will always use the high-performance audio path on Android if the device supports it
  - Added memory warning callbacks on iOS
  - Refactored iOSAudioDevice to support multi-channel audio devices and improve the handling of sample rate changes from other apps
  - Added SidePanel and BurgerMenu component classes
  - Added PushNotifications support on OSX
  - Added support for VST3 SDK 3.6.8
  - Added support for loading VST3 preset files
  - Added higher-order ambisonics support
  - Added thread safe methods for getting and setting the AudioProcessorValueTreeState state
  - Cleanup and refactoring work on the AudioProcessorGraph and the audio plugin host demo
  - Changed the default language standard for new projects from C++11 to C++14 and set all JUCE projects to use C++14
  - Made the ScopedPointer interface more compatible with std::unique_ptr
  - Changed Windows projects to use dynamic runtime linking by default
  - Added lambda callbacks to ListenerList, Slider, Button, Label, ComboBox and TextEditor
  - Fixed the live-build engine on Windows
  - Multiple DSP module fixes and features
  - Multiple threading and undefined behaviour fixes and improvements
  - Various graphics optimisations
  - Multiple Projucer UI and UX improvements
  - Various documentation tweaks and fixes

Version 5.2.0
  - Added a CMake exporter to the Projucer
  - JUCE analytics module
  - Added support for push notifications on iOS and Android
  - Added in-app purchase support for macOS
  - Added a plugin binary copy step to the Visual Studio exporter
  - Added an option to set the debug information format in the Visual Studio exporter
  - Added a link-time optimisation option to all exporters
  - Added support for adding asm files to Android projects
  - Improved the reliability of the Projucer's live-build engine
  - Added support for AUv2 Midi Effect plug-in hosting
  - Added support for Atmos 7.0.2 and 7.1.2 Surround formats
  - Added support for the OGG sub-format inside a WAV file
  - Added support for querying the audio hardware on how many overruns/underruns occurred
  - Implement Process::hide on mobile platforms
  - Added support for multi-touch drag and drop
  - Improved the performance of 3D rendering when multiple OpenGL contexts are used at the same time
  - Tweaked the rate at which EdgeTable grows its internal storage, to improve performance rendering large and complex paths

Version 5.1.2
  - Fixed multiple plugin-resizing bugs
  - Added support for AUv3 MIDI and screen size negotiation
  - Added support for Xcode 9 and iOS 11
  - Added an In-App Purchases module
  - Added backwards compatible constexpr support
  - Standalone plug-in improvements
  - Better .jucer file change monitoring in the Projucer
  - Increased the speed of AU parameter lookup
  - Improved the Android thread management when dealing with web requests
  - Better denormal support
  - Plug-in parameters can be explicitly marked as continuous or discrete
  - Multiple documentation updates

Version 5.1.1
  - Fixed Windows live build engine on Visual Studio 2017
  - Fixed a compiler error in juce_MathFunctions.h in Visual Studio 2013
  - Fixed a potential crash when using the ProcessorDuplicator
  - Fixed a compiler-error in Filter::IIR
  - Fixed an issue where the WavFileFormatWriter could not create files with discrete channels
  - Fixed an issue where a window which is beneath a hidden window would not receive any clicks on Linux
  - Altered the format of BREAKING-CHANGES.txt to display better on GitHub
  - Projucer: Fixed an issue in exporter tilde expansion
  - Fixed compiler errors when building the DSP module with a static version of FFTW
  - Fixed an audio glitch when bypassing the convolution engine
  - Fixed an issue where a JUCE VST2 would not correctly report that it supports resizing of it’s plugin editor
  - Various documentation tweaks and fixes

Version 5.1.0
  - Release of the JUCE DSP module
  - Multichannel audio readers and writers
  - Plugin editor Hi-DPI scaling support
  - Major improvements to Projucer module search paths
  - Added Projucer support for iOS app groups
  - Added support for AVFoundation and deprecated the use of Quicktime
  - Added a new real-time audio thread priority for Android
  - Various Projucer UI fixes
  - Various documentation fixes
  - Various minor improvements and bug fixes

Version 5.0.2
  - Improved project save speed in the Projucer
  - Added option to save individual exporters in the Projucer
  - Added the ability to create custom colour schemes for the Projucer’s code editor
  - Minor fixes to JUCE’s SVG parser
  - Various bug fixes in the way JUCE handles Hi-DPI monitors
  - Improved code browsing in Visual Studio Exports
  - Improved the handling of audio device buffer size changes on iOS
  - Fixed bug in the Win32 FileChooser dialog when selecting a nonexistent root drive
  - Fixed a Projucer crash when saving projects with no targets
  - Fixed a bug where Projucer generated Makefiles would not trigger a recompilation when header files had changed
  - The standalone plugin target is now compatible with effect plug-ins
  - Fixed an issue where it was not possible to use the live build engine on plugin projects
  - Improved the way the Projucer’s live-build engine searches for platform headers on Windows
  - Fixed an issue where the Projucer would complain about not having internet even if the user had a license
  - Fixed a use-after-free in the AUv3 wrapper
  - Fixed an issue where the channel layout would not be reported correctly in the AUv3 wrapper
  - Fixed a potential memory overrun issue when hosting VST2 plugins with more than eight channels
  - Fixed a problem with the Mac main menu bar showing menus in the wrong position
  - Various Projucer UI fixes
  - Various documentation fixes
  - Various minor improvements and bug fixes

Version 5.0.1
  - Fixed Windows live build engine on Visual Studio 2017
  - Fixed memory-leak in Projucer live build engine
  - Fixed an issue where you could not paste your redeem serial number with Cmd+V on macOS
  - Fixed an issue where the Projucer would crash on linux due to missing symbols in WebKit
  - Minor Projucer UI improvements
  - Various minor improvements and bug fixes

Version 5.0.0
  - New licensing model
  - Projucer UI/UX overhaul
  - New look and feel (version 4)
  - New standalone plug-in format
  - Added support for Visual Studio 2017
  - Added support for VST3 SDK 3.6.7
  - Added support for Apple Inter-App Audio on iOS
  - Various Android stability and performance improvements
  - Added support for non-experimental gradle plug-in versions >= 2.2 and Android Studio 2.3
  - Added support for closed-source third-party modules
  - Added support for Windows 10 Bluetooth LE MIDI devices
  - Modernised JUCE codebase to use C++11/14 features
  - Added support for Linux embedded platforms
  - Added support for WebBrowserComponent on Linux
  - Added support for IPv6
  - Various minor improvements and bug fixes
  - Various documentation improvements

Version 4.3.1
  - Added support for iOS download tasks
  - Added support for AAX plug-in meters
  - Added support for dynamically disabling/enabling sidechains in ProTools
  - Re-introduced support for VST3 plug-ins reporting which VST2 plug-in they can replace
  - Added withRightX and withBottomY methods to Rectangle
  - Added support for windows 10 on screen keyboard
  - Added move semantics to AudioBuffer
  - Added colour coding scheme to module icons in the Projucer to indicate which type of license a module uses
  - Removed all deprecation warnings for macOS Sierra
  - Fixed multiple touch, pen and mouse input related bugs on Windows
  - Added submenu support to ComboBoxes and simplified the usage of ComboBoxes
  - Various minor improvements and bug fixes
  - Various documentation improvements

Version 4.3.0
  - Added API and examples for ROLI Blocks
  - Multiple Projucer live-build UI and diagnostics improvements
  - JUCE now supports hosting multi-bus plug-ins
  - BufferingAudioSource now supports pre-buffering (useful for offline processing)
  - Added microphone permissions switch to Projucer for iOS targets
  - Standalone wrappers now correctly save and restore midi settings
  - Various performance improvements to BigInteger
  - Fixed various FlexBox bugs
  - Added a workaround for the broken “Open Recent…” menu on os x
  - Various minor improvements and bug fixes
  - Various documentation improvements

Version 4.2.4
  - Pre-release of live build engine on Windows
  - Added FlexBox layout engine
  - Removed dependency on external Steinberg SDK when building and/or hosting VST2 plug-ins
  - Added support for MIDI network sessions in the iOS simulator
  - Added support for symmetric skew to Slider, NormalisableRange and SliderPropertyComponent
  - Projucer now asks the user what to do when it detects that the .jucer file was modified outside of the Projucer
  - Improved support for Windows 10 touch devices
  - Added begin/end iterator methods for ValueTree, for handy range-based-for loops over its children
  - Added support for recent mingw-w64 compilers
  - Added useful proportional Rectangle utility methods
  - Significantly improved the performance of BigInteger
  - Added support for expiring licenses to juce_tracktion_marketplace
  - Added support for retina mouse cursors on OS X
  - Added a new low-quality mode for the CameraDevice
  - Added pkg-config support for Linux
  - Projucer will now wrap your AAX plug-in in the bundle format expected Pro Tools on Windows
  - Multiple bug-fixes for AudioUnit parameter ids
  - Fixed a bug where AlertWindows weren’t always on top
  - Multiple fixes for web InputStreams
  - Various improvements to the live build engine
  - Various minor improvements and bug fixes
  - Various documentation improvements

Version 4.2.3
  - Various VST3 improvements: resizing VST3 windows, plug-in compatibility issues
  - Use NSURLSession on newer OS X versions
  - Add compatibility for VST 3 SDK update 3.6.6
  - Miscellaneous fixes and improvements

Version 4.2.1
  - New class CachedValue, for providing easy and efficient access to ValueTree properties
  - Reduced audio plug-in binary sizes on OS X and added symbol-stripping option
  - Miscellaneous fixes and improvements

Version 4.2
  - Added support for AudioUnit v3 on OS X and iOS
  - Simplified the JUCE module format. Removed the json module definition files, and made
    it easier to manually add modules to projects. The format is fully described in the
    document juce/modules/JUCE Module Format.txt
  - iOS project support: added custom resource folders, custom xcassets, app capabilities,
    and screen orientation settings.
  - Deleted the Introjucer.. But don't panic! All of its functionality is now supplied by a
    more open-source version of the Projucer. By refactoring the closed-source LLVM compilation
    code into a DLL, we've been able to unify the Introjucer and Projucer into a single
    open-source project. This will allow everyone to compile the Projucer's IDE themselves, and
    having just one app instead of two will make things a lot less confusing!

Version  4.1
  - Added multi-bus support for audio plug-in clients
  - Added support for MIDI effect plug-ins (AU and AAX).
  - Added new example: Network Graphics Demo

Version 4.0.3
  - Added MPE (Multidimensional Polyphonic Expression) classes
  - Added full support for generating and parsing Midi RPN/NRPN messages
  - Made the LinearSmoothedValue class public
  - Miscellaneous fixes and minor improvements

Version 4.0.2
  - Miscellaneous fixes and house-keeping

Version 4.0.1
  - Initial release of the Projucer!
  - Full OSC support!
  - Android Studio exporting from the Introjucer
  - Android-M pro-audio low-latency i/o support
  - Bluetooth MIDI device support on iOS and Android
  - AudioSampleBuffer refactored into a templated class AudioBuffer, to allow
    32 or 64 bit float support
  - Audio plugin and hosting now supports 64-bit data
  - Support for force-touch and pen pressure on iOS and Windows
  - Added easy sound-file playing methods to AudioDeviceManager
  - Many updates to Introjucer
  - Many new tutorials and examples

Version 3.3.0
  - New functions for Base64 conversion
  - New command-line options in the introjucer for trimming whitespace and
    replacing tabs in source files

Version 3.2.0
  - Major OpenGL performance/stability improvements
  - Performance improvements to FloatVectorOperations math functions
  - New FloatVectorOperations: abs, min, max, addWithMultiply, clip
  - Midi channel pressure support
  - New example projects ComponentTutorialExample, SimpleFFTExample,
    PluckedStringsDemo
  - New class ValueTreeSynchroniser, for remote-syncing multiple
    ValueTrees
  - HTTPS/SSL support on Linux
  - Added methods for degrees to radians conversions
  - Added Neon instruction set support for Android targets
  - JUCE ValueTree performance improvements
  - Linux and Android multi-monitor HiDPI support
  - Support the “display=none” attribute in SVG files
  - Support for text elements in SVG files
  - Added Whirlpool hash class to the cryptography module
  - Various improvements for parameter automation in VST, VST-3,
    AudioUnits and AAX
  - Various improvements to JUCE Synthesiser
  - Linux Code::Blocks project support
  - Multicast support
  - Add support to generate project version numbers from project git tags
  - Various updates to example projects
  - Stability improvements to re-order and resize code of plug-in windows
  - Support for external third-party native libraries on Android
  - Introjucer’s auto-update now displays release notes
  - Various Introjucer usability improvements
  - Support for in-memory fonts on Android
  - New FFT class
  - WASAPI exclusive mode support
  - More C++11 feature support macros
  - Performance improvements to XML parsing
  - Add compatibility for AAX SDK 2.2.0
  - Added parameters to the ValueTree::Listener::valueTreeChildRemoved()
    and valueTreeChildOrderChanged() methods to include more info about
    exactly what changed
  - Over 400 minor changes, bug-fixes, documentation improvements, etc.
