Changelog
=========


Changes in Pannellum 2.5.5 (2019-11-21)
---------------------------------------

Bugfixes:
 - Fixed device orientation permission request such that it works with iOS 13
 - Extend yaw bounds range to allow restricted range that crosses +/-180 deg

Security fixes:
 - Fixed XSS vulnerability that allowed script execution when hot spots
   were clicked (CVE-2019-16763)


Changes in Pannellum 2.5.4 (2019-09-10)
---------------------------------------

Bugfixes:
 - Fixed issue with loading large equirectangular panoramas on iOS
 - Fixed issue with touch-based scrolling with `draggable` set to `false`

Improvements:
 - Started requesting device orientation permission (untested)


Changes in Pannellum 2.5.3 (2019-08-21)
---------------------------------------

Bugfixes:
 - Fixed loading scenes after previous load failure
 - Fixed regression that caused auto-rotation to stop after one revolution
 - Fixed behavior of `multiResMinHfov` to match documentation;
   default multi-resolution `minHfov` behavior now matches pre-v2.5

Improvements:
 - Added optional `scale` parameter to scale hot spots while zooming
 - Improved recovery from failed scene loading

API improvements:
 - Added optional pitch argument to `startAutoRotate`

Other:
 - Added Journal of Open Source Software (JOSS) manuscript
 - Numerous documentation improvements per JOSS review (thanks @vsoch and @Fil)
 - Improved continuous integration and automated testing support
 - Clarified `generate.py` error messages
 - Added Dockerfile for `generate.py`


Changes in Pannellum 2.5.2 (2019-07-13)
---------------------------------------

Bugfixes:
 - Fixed regression in Video.js plugin


Changes in Pannellum 2.5.1 (2019-07-13)
---------------------------------------

Other:
 - Fixed issue with tagging 2.5.0 release


Changes in Pannellum 2.5.0 (2019-07-13)
---------------------------------------

New Features:
 - The background color can be set for partial panoramas
   (`backgroundColor` parameter)
 - Partial panoramas are now supported for the multiresolution format
 - An author URL can now be added (`authorURL` parameter)

New API functions:
 - Added `fullscreenchange`, `zoomchange`, and `animatefinished` events
 - Added `stopMovement` function for stopping all viewer movement

Improvements:
 - Equirectangular images are now automatically split into two separate
   textures if they're too big (images up to 8192px wide should now be
   widely supported)
 - Improved render quality for equirectangular images on mobile (using `highp`
   for fragment shader)
 - Keyboard events for keys not used by the viewer are no longer captured, and
   the list of captured keys is configurable (`capturedKeyNumbers` parameter)
 - Multiresolution tiles can now be generated from cylindrical panoramas
 - Hot spots can now be removed from scenes that aren't currently loaded
 - Hot spot cursor is now set via CSS class (so it can be overridden)
 - Hot spot link attributes can now be set (`attributes` parameter)
 - The "friction" that slows down the viewer motion can now be configured
   (`friction` parameter)
 - Dynamic scenes are now properly supported for tours

Bugfixes:
 - Fixed regression in fallback renderer
 - Fixed bug with URL encoding
 - Fixed regression in Video.js plugin
 - Fixed auto-rotate bug that was manifested when using API to set view
 - Fixed full screen bug in Chrome
 - Fixed bug with removing event listeners
 - Fixed issue with mouse dragging causing jump around yaw limits
 - Fixed bug with deleting hot spots
 - Fixed bug with fading between scenes

Other:
 - Added limited test suite / continuous integration
 - Removed `requestAnimationFrame` shim, dropping support for some
   older browsers


Changes in Pannellum 2.4.1 (2018-03-03)
---------------------------------------

Bugfixes:

 - Fix touch input issue in Chrome
 - The API's `loadScene` method now works when no scenes have been loaded yet


Changes in Pannellum 2.4.0 (2018-01-30)
---------------------------------------

New Features:

- Translation support
- Event for when scene change fade completes (`scenechangefadedone`)
- Events for touch starts and ends (`touchstart` and `touchend`)
- Added ability to set custom animation timing
  function (`animationTimingFunction` parameter)
- Added option for only enable mouse wheel zoom while in
  fullscreen (`mouseZoom` parameter)
- Added option to set title and author displayed while the load button
  is displayed (`previewTitle` and `previewAuthor` parameters)
- Mouse and touch dragging can now be disabled (`draggable` parameter)
- Added option to disable keyboard controls (`disableKeyboardCtrl` parameter)
- CORS setting can now be configured

New API functions:

- Check if image is loaded (`isLoaded`)
- Method to update viewer after it is resized (`resize`)
- Set horizon pitch and roll (`setPose`)
- Turn device orientation control on and off, check if it is supported, and
  check if it is activated (`startOrientation`, `stopOrientation`,
  `isOrientationSupported`, and `isOrientationActive`)
- Method to retrieve viewer's container element (`getContainer`)

Improvements:

- Double-clicking now causes the viewer to zoom in (and back out when
  double-clicking while zoomed in)
- New lines are now allowed in hot spot text
- Support for HTML in configuration strings can be enabled when using
  the API (`escapeHTML` parameter)
- Fallback cursor is provided for browsers that don't support SVG data URIs
- Image type configuration parameter is now validated
- Optional callbacks added to `lookAt`, `setPitch`, `setYaw`, and `setHfov`
  API functions
- Scroll events are now only captured when they're being used
- Viewer object is now assigned to a variable in the standalone viewer
- Hot spots can now be added with API before panorama is loaded
- Viewer UI is now created in a container element

Bugfixes:

- Fixed race condition when scene change hot spot is double-clicked
- Fixed bug with preview image absolute URLs
- Removed redundant constraints on yaw in API
- Tabbing now works, and only events for keys that are used are captured
- Fixed bug in HTML escaping
- Fixed bug that sometimes occurred when `orientationOnByDefault` was `true`
- Yaw no longer changes when device orientation mode is activated
- Fixed iOS 10 canvas size too big issue
- Fixed iOS 10 NPOT cube map issue
- Hot spots added via API are now permanent between scene changes
- Fixed multiple bugs with removing event listeners
- Fixed bug with multiresolution tile loading
- Fixed `sameAzimuth` target yaw not working when `northOffset` wasn't set
- Fixed bug yaw out of bounds in `mouseEventToCoords`
- Fixed bug with `animateMove` function
- Fixed bug with scene change fade
- Yaw animation is now always in the shortest direction
- Fixed bug related to removing hot spots


Changes in Pannellum 2.3.2 (2016-11-20)
---------------------------------------

Bugfixes:

 - Fix Chrome fullscreen regression introduced in 2.3.1


Changes in Pannellum 2.3.1 (2016-11-19)
---------------------------------------

Bugfixes:

 - Removed use of poorly supported ES6 `Math.sign` function
 - Fixed fullscreen bug in Internet Explorer
 - Fixed framerate issue with device orientation control enabled

Improvements:

 - Better handling of view limits when both limits are in view


Changes in Pannellum 2.3.0 (2016-10-30)
---------------------------------------

New Features:

 - Device orientation support for mobile devices
 - Event framework for API
 - Partial panorama background color can now be set using
   `backgroundColor` parameter
 - Custom hot spots are now supported as are hot spot click handlers
 - Hot spots can now specify target HFOV (`targetHfov` parameter)
 - Parameter to hide all controls (`showControls`)
 - Parameter to disable mouse zooming (`mouseZoom`)

New API functions:

 - Destructor (`destroy`)
 - Look at position (`lookAt`)
 - Get current scene ID (`getScene`)
 - Load scene (`loadScene`)
 - Add and remove scenes (`addScene` and `removeScene`)
 - Add and remove hot spots (`addHotSpot` and `removeHotSpot`)
 - Auto rotate start / stop (`startAutoRotate` and `stopAutoRotate`)
 - Retrieve current configuration (`getConfig`)
 - Toggle fullscreen (`toggleFullscreen`)
 - Get and set north offset (`getNorthOffset` and `setNorthOffset`)

Improvements:

 - Pitch and yaw limits are now applied to edge of viewer instead of center
 - Panorama extents can now be set using URL parameters
 - Individual XMP metadata parameters can now be overridden
 - Horizon pitch and roll can now be manually set (was previously only
   supported via XMP metadata)
 - When auto rotate restarts, the pitch and HFOV now return to their
   original values
 - API movements can now be animated
 - Standalone viewer is more mobile friendly
 - Improved touch panning interaction
 - Fragments identifiers can now be used for standalone viewer configuration
 - Blob URLs are now supported
 - Added hot spot debug indicator
 - Video.js plugin now accepts a Pannellum configuration

Bugfixes:

 - Fixed numerous auto rotate bugs
 - Auto rotate speed is now actually in degrees per second
 - Long error URLs are now properly wrapped
 - Fixed mobile device orientation change bug
 - Fixed Safari fullscreen bug
 - Fullscreen now works in IE
 - Fixed Chrome bug where hot spots appeared above controls
 - Scene fades with multires now work properly
 - Hot spot target pointing now works when set to zero
 - Hot spots without text are now properly handled
 - Fixed memory leaks
 - Fixed multires tile loading error
 - Fixed a few URL handling bugs
 - Fixed multires zoom jumping when viewer was resized
 - Title and author are now reset when changing scenes
 - Mouse handlers now work with Hi-DPI displays
 - Minimum and maximum HFOV can now both be set to the same value

Backwards-Incompatible Configuration Parameter Changes:

 - The deprecated `tour` parameter was removed; tour JSON configuration files
   can be used with the `config` parameter


Changes in Pannellum 2.2.1 (2016-03-11)
---------------------------------------

New Features:

 - NPM support

Improvements:

 - Set `Accept` header to request images
 - Ensure `hfov` is a number
 - Better restriction on yaw range


Changes in Pannellum 2.2.0 (2016-01-27)
---------------------------------------

New Features:

 - An API has been added instead of just a standalone viewer; the API should be
   considered experimental at this point and may be subject to change
 - The `PosePitchDegrees` and `PoseRollDegrees` XMP tags are now supported
   (used by the Ricoh Theta S)
 - Optional fade animation for transitioning between scenes using the
   `sceneFadeDuration` parameter
 - New `autoRotateStopDelay` parameter that allows the panorama to be rotate
   for a specific period of time before stopping
 - Hot spot debug parameter to assist with positioning hot spots
   (`hotSpotDebug`)
 - Parameter to disable keyboard zooming (`keyboardZoom`)

Improvements:

 - Much better equirectangular video support using Video.js
 - High-DPI support
 - Unified configuration files; tour configuration files can now be used
   directly with the `config` parameter
 - Page title is now set to the panorama title in the standalone viewer
 - Aspect ratio of preview image is now maintained
 - Fullscreen button is now only shown if fullscreen is allowed
 - Pointer Events are now supported for touch controls in IE / Edge
 - Performance improvements
 - CSS 3D renderer now works with cubemaps
 - CSS 3D renderer now works in IE 10/11
 - Configuration files are now loaded asynchronously (synchronous request are
   deprecated by most browsers)
 - Improved keyboard zooming speed
 - Added checks to avoid browser NPOT cubemap bugs
 - Better path handling
 - Informative error is shown when Pannellum is opend from local filesystem
   instead of a web server

Bugfixes:

 - Fixed zoom out jerkiness in Chrome
 - Fixed inertia-related jumping
 - Fixed CSS 3D renderer edge flickering issue
 - Fixed CSS 3D renderer hot spot display bug
 - Fixed a number of Safari-related bugs
 - Fixed bug with autoloaded tours
 - Fixed bug where hot spot tooltips were sometimes obscured
 - Fixed CSS 3D renderer fullscreen bug
 - Fixed `vOffset` bug
 - Fixed image hot spots bug
 - Fixed zoom bug related to small multires panoramas

Backwards-Incompatible Configuration Parameter Changes:

 - The sign of hot spot yaw positions has been flipped to match the rest of
   Pannellum's yaw values
 - The `tour` parameter is deprecated and will be removed in the next major
   release; tour JSON configuration files can be used with the `config`
   parameter
 - Undocumented URL configuration parameters can no longer be used
 - The `header` parameter can no longer be used; use the API instead

Other:

 - Extra row of pixels no longer needed in multires fallback images
 - Added JSDoc documentation


Changes in Pannellum 2.1.1 (2015-01-19)
---------------------------------------

Bugfixes:
 - Force subpixel rendering for hot spots


Changes in Pannellum 2.1.0 (2015-01-14)
---------------------------------------

New Features:

 - Ability to limit pitch, yaw, and hfov extents
 - Can set starting pitch and yaw in scene linked to by hotspot
 - Pinch to zoom
 - Zoom and fullscreen controls can be hidden
 - "Inertia"
 - Option to begin auto rotating after a period of user inactivity
 - Use Photo Sphere XMP metadata for configuration
 - Preliminary equirectangular video support (no controls)

Improvements:

 - Loading progress bar is displayed for equirectangular panoramas
 - Error message for image being to large for a device is now much more
   descriptive
 - Zoom level choosing for multiresolution panoramas is improved
 - Documentation of configuration parameters was added
 - Python 2.7 support for multiresolution tile generator script

Bugfixes:

 - Fix bug where preview images wasn't always loaded for cubic panoramas
 - Hot spots are now displayed behind controls
 - Fix bug with multiresolution panoramas when `basePath` isn't defined
 - Error message displayed for IE 9

Backwards-Incompatible Configuration Parameter Changes:

 - `voffset` changed to `vOffset`
 - `autorotate` changed to `autoRotate`
 - `autoload` changed to `autoLoad`
 - `autoLoad` value changed from `'yes'` to `true`

Other:

 - Popout mode, for browsers that do not support the fullscreen API, has been
   removed


Changes in Pannellum 2.0.1 (2014-08-24)
---------------------------------------

Bugfixes:
 - Fix keyboard controls in Safari


Changes in Pannellum 2.0 (2014-08-22)
-------------------------------------

New Features:

 - New rendering backend
 - Multiresolution panoramas
 - Partial panoramas
 - Cubic panoramas
 - CSS 3D fallback renderer for multiresolution panoramas
 - JSON configuration files
 - Hot spots and tours
 - Compass headings

Improvements:

 - More configuration options
 - New theme
 - Performance improvements
 - CORS support

Bugfixes:

 - Numerous


Changes in Pannellum 1.2 (2012-08-28)
-------------------------------------

New Features:

 - Added keyboard panning controls
 - Added support for a fallback URL if WebGL is not supported

Improvements:

 - Clarified load button text
 - Switched from raster to vector icons

Bugfixes:

 - Added workaround for WebKit fullscreen regression
