JS9 ChangeLog
Minor Patch Release 2.0.2 (December 15, 2017)
- add zscale, zmax to SetScale()
- improve display-based routines (separate, gather, resize, center, select)
- improve alignment of differently sized images
- allow zoom during image blending
- add menu support for closing all images
- add support for selecting a target display in a supermenu
- add support for dispersing images from one display into new displays
- add support for gathering images from multiple displays into one
- add support for new image inheriting params from current image
- fix allinone (don't use wasm)
- fix bug loading wasm file in LoadWindow('new')
Minor Patch Release 2.0.1 (September 29, 2017)
- move helper log file outside www directory
- improve fetchURL() error messages
- fix bug in load catalog menu option
- allow json opts in Load* family of routines
- fix bug in JS9.Preload by saving a copy of opts
Public Release 2.0 (September 27, 2017)
- add support for emscripten-based WebAssembly
- add support for HPX projection
- add wcs selection menu to regions config dialog
- aesthetic improvements to regions config dialog
- fix race condition in Electron startup if not codesigned
- fix binning when manually specifying parent file
- fix wcs system display in infobox
- fix bug in js9Helper.js where localhost was not upgrading to use ws
- update emscripten to v1.37.20
- update fabric.js to v1.7.19
- update socket.io to v2.0.3
- update jquery to v3.2.1
- update jquery-ui to v1.12.1
Public Release 1.12 (July 25, 2017)
- refactor astroem to use astroem repository of emscripten library byte-code
- add DisplaySection() public routine
- add ability to extract a section from images (as well as tables)
- add fits2fits configuration params for large files support
- add large file support in which large files can be handled externally
- allow infoBox to be configured via JS9.globalOpts.infoBox and preferences
- add wcs center and wcs fov display to infoBox
- add js9.app Mac desktops to run js9 script (drag/drop images onto it, etc.)
- add support for specifying URLs on js9 command line (uses proxy load)
- JS9.Preload() will now call JS9.ProxyLoad(), if required
- proxy load now turned on by default (needed for Desktop use)
- add support for drag/drop URLs onto JS9 display (uses proxy load)
- add support for uploading FITS files to a remove server
- add support for displaying bzip2 files
- add support for drag drop of region, catalogs, sessions (by file extension)
- add text, fonts, stroke options to region configuration dialog box
- add support for specifying a text region as a child of a region
- add js9-to-ds9 region conversion to js9 script (-r)
- add support for importing ds9 regions, including properties in comments
- sort overlapping regions so smallest is on top
- fix memory leaks in mef support
- add Divs plugin to show/hide in-page JS9 plugin divs
- allow shape size controls to match shape color at border, corner, or both
- use file extensions when opening local files (fits, regions, catalogs, etc)
- add keyboard action to move selected region in back of other shapes (not a default)
- JS9.RegisterPlugins() will instantiate plugins if scripts load asynchronously
- add JS9.InstantiatePlugins() public routine
- deprecate auto load of js9Prefs.son (load js9prefs.js explicitly instead)
- update emscripten to v1.37.9
- update socket.io to v1.7.3 (big change in module directory structure)
Public Release 1.11 (January 9, 2017)
- add support for displaying HEALPix files
- add initial support for memory management of internal FITS files
- add menu support for clearing FITS files from internal memory
- add support for running JS9 on the Desktop using Electron.js
- integrate Desktop Electron support into into js9 script
- add ability to load local catalogs and save catalogs to disk
- add JS9.LoadCatalog() and JS9.SaveCatalog() public routines
- add Shape Layer plugin to turn on/off layers and set the active layer
- remove list of shape layers from View menu in favor of Shape Layer plugin
- add JS9.ActiveShapeLayer() public routine
- improve onimagedisplay processing for mef, cube, imarith plugins
- fix bug in cube plugin blink support
- update fabric.js to v1.6.6
- update socket.io to v1.5.1
- update closure-compiler to v20160911
Public Release 1.10 (October 11, 2016)
- add support for full-display mode
- add support for keyboard actions and shortcuts
- add JS9.SetRGBMode(), JS9.GetRGBMode() public routines
- unclutter the position/value display
- don't update value/position if "special key" is pressed
- buttons and menu/titlebars are now beautiful and Mac-like
- buttons can be beautiful and flat (change via class specification)
- add support for copying regions to another image (JS9.CopyRegions())
- add initial support for plotly plotting library
- improvements to energyplot, evfilter, binning plugins
- add support for alternate WCS (including JS9.GetWCS, JS9.SetWCS routines)
- add JS9.LookupImage() public routine
- generalize and extend plugin callback capability
- extend range of FITS files that can be WCS-projected using Montage
- add support in the File menu for saving and loading sessions
- add JS9.LoadSession() and JS9.SaveSession() public routines
- update imexam,fitsy, archive plugins
- update fabric.js to v1.6.3
- update cfitsio to v3.39
- update socket.io to v1.4.5
Public Release 1.9 (June 8, 2016)
- add standard RGB image processing functions to the Analysis menu
- add support for gesture-based zoom (scroll wheel and pinch)
- add MouseTouch plugin to change mouse/touch actions
- image id now contains extension name or number for FITS extensions
- add support for histogram equalization scaling
- add support in js9 script for starting up a browser/web page
- add support for displaying slices of a FITS data cube
- add support for image arithmetic (between 2 images or image & constant)
- add support moving images between JS9 displays
- add support for displaying HDUs in multi-extension FITS files
- add 'magma', 'inferno', 'plasma', 'viridis' colormaps from matplotlib
- deprecate the use of funtools when building JS9; please use cfitsio
Public Release 1.8 (March 21, 2016)
- add image blending plugin to support blending operations between images
- add ability to blend images using W3C composite/blending modes
- add colorbar plugin to display colormap vs intensity information
- add blink plugin to blink images
- add line region (with support for multiple line segments)
- add raw data layers to allow manipulation of underlying raw data
- add JS9.FilterRGBImage() to support RGB image processing routines
- add JS9.GaussBlurData public routine to perform Gaussian blur on data layer
- add JS9.RawDataLayer() public routine for raw data layer manipulation
- add JS9.ShiftData() public routine to shift raw data in x and y
- add JS9.GetDisplayData(), returning data for all images in a given display
- add JS9.SaveJPEG() public routine to save image and overlays as JPEG
- add JS9.AddColormap() public routine to add a colormap to JS9
- add JS9.SaveColormap(), JS9.OpenColormapMenu() public routines
- JS9.SavePNG() public routine now saves image and graphical overlays
- add support for reprojecting images using Montage/mProjectPP
- add JS9.Reproject() public access routine
- change menu option Color->alpha (0 to 255) to Color->opacity (0.0 to 1.0)
- fix bug when interactively changing panner for non-square images
- fix bug in lut colormap, which truncated the first color
- refactor emscripten astroem package into sub-packages
- update emscripten to v1.35.0
Public Release 1.7 (January 12, 2016)
- add Jupyter/IPython support for iframes
- add keyboard focus support for Jupyter/IPython
- add timeouts to avoid back-end connect() hangs
- add support for using rgb file as the display over a data file
- default helper is "none" (for Jupyter, where js9Prefs.json is not loaded)
- add lower right handle to change width and height of display
- add View menu option to change width and height of display
- add JS9.ResizeDisplay() to change the size of a JS9 display element
- add JS9.DisplayPlugin() public routine for custom menus
- add JS9.GetFITSHeader() (as a string) public routine for custom menus
- add resize handle to display (lower right corner)
- add View menu option to change the display width and height
- add support for handling group events in shape layers (i.e. catalogs)
- add support for handling mouse events in shape layers (i.e. catalogs)
- add support for tooltips to shape layers (i.e. catalogs)
- add return values to saveFITS() and savePNG()
- add spinner while waiting
- fix OpenFileMenu() and OpenRegionMenu() when using multiple displays
- fix text region printing
- fix bug in panner box when panner image does not fill panner width
- fix region configure to "delete" only itself (not all regions)
- fix one pixel bug in WCS region conversion
- update fabric.js to v1.5.0
- update socket.io to v1.3.7
- updated jquery to v1.11.3
Public Release 1.6 (November 7, 2015)
- add support for extracting image/table sections from "parent" files
- add JS9.LoadProxy() public API routine to load FITS URLs via proxy server
- add support for loading Dropbox (and other CORS enabled) shared links
- add support for loading links by proxy through the back-end server
- add SetValPos and DisplayMessage public routines
- add options to create new JS9 windows from the file menu
- add experimental support for JS9 in an iframe, using postMessage
- remove starting "_" from SUPERMENU id (not legal syntax)
- fix various iOS foibles (scrolling, double-click to close)
- fix memory leak in cfitsio RefreshImage() support
- fix bug in lut colormap limit check
- fix bug in JS9.RefreshImage() blob handler
- fix overflow bug in cfitsio bscale/bzero support
- fix bug in zscale by properly exposing emscripten methods
- update emscripten to 1.34.1
- update wcs library to 3.9.0
Public Release 1.5 (July 9, 2015)
- add support for specifying regions using Funtools/DS9 syntax
- add support for loading Funtools/DS9 region files
- add support for running the Node.js helper using https protocol
Public Release 1.4 (May 3, 2015)
- add Preferences plugin to set image and region user prefs
- add ability to save image to FITS and PNG files (limited Safari support)
- add ability to save regions to a text file
- fix bugs in Binning plugin (mainly for cfitsio, but some general bug fixes)
Public Release 1.3 (March 30, 2015)
- add cfitsio library support to JS9 (emscripten compile to javascript)
- add data-width and data-height attributes to change the size of JS9 divs
- extend tpos and js9helper to use cfitsio (or funtools)
- update tpos js9Protocol to 1.1 to include header comments in the header
- default WCS is now determined in the browser, not by the back-end server
- ensure that section info is maintained during JS9.RefreshImage()
- prevent preload from happening more than once
- fix broken File->Open menu option
- update emscripten to v1.27, add new optimizations to astroem
Public Release 1.2 (January 4, 2015)
- concurrent release of pyjs9 1.0 on github
- update socket.io to the Engine.IO-driven v1.x (specifically v1.2.1)
- add ability to reconnect to node.js server automatically if latter restarts
- add support for specifying a temp work dir for back-end analysis
- add http support to js9Helper.js so messages can be sent via GET, POST
- JS9.Load: accepts FITS files as blobs and base64-encoded strings
- JS9.RefreshImage: accepts blobs (FITS files), js arrays and typed arrays
- JS9.GetImageData(): returned data can be array or base64-encoded string
- fix bug in arguments to public api routines sent via external message
- fix bug in File List: clicking on same file multiple times now redisplays
Public Release 1.1 (November 15, 2014)
- NB: api change: added errcode to argument list of RunAnalysis() callback
- new api: AddDivs() to add JS9 displays and/or plugins to the web page
- new api: Send() sends msgs programmatically (useful for 3rd party helpers)
- add support for super-menus that can control multiple JS9 displays
- add support for onload callback when displaying FITS files
- allow xcen, ycen (in image coords), zoom to be passed in obj to JS9.Load()
- re-factor js9Helper.js: each analysis task is its own top-level msg
- allow user-defined msgs to be added to analysis tasks more easily
- ensure correct region size during RefreshImage() and table binning
- add contour plugin to default plugins in js9plugins.js
- add checks for NaN values to imexam plugins
- fix imexam plugins bug when regions are rotated and resized
- fix bug in encircled energy preventing calculation for non-integer radii
- properly handle FITS TFORM cards without a repeat value (XMM data)
- resize regions properly when tables are binned by a block factor
- ensure that datamin and datmamax are updated when a binary table is binned
- don't send image notify events to back-end during contrast/bias changes
Public Release 1.0 (September 30, 2014)
- NB: change to the Public API: id is no longer first argument. See API doc.
- infobox plugin upgraded to a tabular display
- node.js server sends unique pageid back to JS9
- JS9 menus now cover light windows (higher zindex)
- improved accuracy of polygon points for contours
- moving a polygon point now calls listRegion
- added missing commas in WCS display of polygon points
- corrected WCS for drag/drop of sections of FITS binary tables
- fixed incorrect region size when binning FITS binary tables
- fixed memory leak in astroem reg2wcs routine
- plugin divs can now set height and width using CSS
- added defensive code to remove bash functions from CGI and node calls
- updated fabric.js to 1.4.11
Release 1-epsilon (July 28, 2014)
- JS9.Load() can now load FITS files directly (rather than converting to PNG)
- added support for FITS binary tables, including binning and filtering
- added support for gzip'ed FITS files
- added support for "physical" coordinates (i.e., tied to original data file)
- changed 2D graphics subsystem from Kinetic.js to fabric.js
- added generalized shape layer support for regions, catalogs, contours, etc.
- region context menu is now a light-weight web page with many new features
- added text and point regions
- position of a pixel is now in the center of the pixel
- accelerator key changed from shift key to meta key (command on Mac, control elsewhere)
- reduced number of js9 files to load in a web page
- redesigned and flattened returned region object
- redesigned public API
- changed Public routines JS9.Pix2WCS and JS9.WCS2Pix to be 1-indexed
- added ability to group and move regions
- box rotation is now around the center of the region
- all image coordinate are now 1-indexed throughout
- fixed bug where adding a polygon pt didn't show until region was selected
- changed polygon points to an array of objects {x, y} instead of just x, y
- fixed various layout bugs in plugins
- updated emscripten to latest version
- updated flot to latest version
- updated jquery to 1.11.1
Beta Release 13 (April 6, 2014)
- added support for handling NaN values
Beta Release 12 (March 10, 2014)
- added support for browser-based analysis via plugins (JS9.RegisterPlugin)
- converted Menubar, Info, Panner, Magnifier to plugins
- initial version of imexam plugin available (in plugins directory)
- initial version of archive/catalog server plugin available
- added support for zscale (IRAF min/max algorithm for scaling)
- added support for user scale limits
- regions can now be moved off the image
- shift key disables mouse plugin callbacks
- zooming a small image will use all of the available display canvas
- added support for sub-pixel zooming
- added ability to process all keys in keypress callback
- added arrow key support for moving regions
- added fractional pixel positions for zoomed images
- fixed bug which reset pan when changing colormaps on a zoomed image
- added strict mode
- update emscripten to 1.8.2
Beta Release 11 (December 18, 2013)
- initial port to iPad
- removed notifyHelper message when mouse enters image window
- fixed tpos crash when converting really large images
- updated jquery.contextMenu.js
Beta Release 10 (December 9, 2013)
- added support for RGB composite display
- added support for reading in auxiliary files via auxFiles preference
- added support for overlaying FITS image masks
- added support so that drag and drop files can be found by local analysis
- added analOpts.dataPath to specify where to look for drag and drop files
- box regions need to rotate around upper left point to ensure consistency
- changed name of fitshelper to js9helper
- changed JS9.submitAnalysis() to JS9.SubmitAnalysis()
- changed analOpts.datadir to analOpts.dataDir
- removed wcs event processing from node and CGI helper (use browser wcs)
- js9helper not run as a server from js9Helper.js any more (scales better)
- added ability to turn off redraw when creating a large number of regions
- fixed bug in panner display for non-square images
- added work-around for Google Chrome v31 bug (regions not drawn)
Beta Release 9 (October 23, 2013)
- added support for client-based WCS using emscripten 1.5.6
- added drag and drop of FITS images (binary tables are coming)
- added support for region callbacks (executed when a region changes)
- added JS9.Regions() public routine to retrieve and modify selected regions
- added Close Image button to File menu
- reduced size of panner when created by View menu
- updated Kinetic.js to v4.7.2
- minor bug fixes (e.g., annuli strokeWidth not resizing properly)
Beta Release 8 (September 23, 2013)
- fixed security in node.js support by requiring use of wrapper scripts
- added support for CGI-based back-end helpers
- implemented automatic discovery of analysis definitions
- added timer-based management of WCS update requests
- updated socket.io to 0.9.16
- changed routine name from JS9.preloadImages() back to JS9.Preload()!
Beta Release 7 (August 19, 2013)
- fits2png: added support for "%cookie" in odir specification
- js9.js and js9Helper.js both now use js9Prefs.json for setting preferences
- fixed bug in display/manipulation of panner when image is zoomed
- added "none" as an analysis return type to support hidden analysis
- changed routine name JS9.Preload() to JS9.preloadImages()
- added clipping to region manipulation
- fixed region strokewidth problem when zooming image
- fixed magnifier and panner where multiple instances of js9 are present
- numerous changes to pass new JSLint rules
- updated jquery to 1.10.2
- updated jquery.flot to 0.8.2
- removed references to of jquery-ui in demo files (its not used)
Beta Release 6 (July 22, 2013)
- added support for panner window, including ability to zoom the panner
- added support for magnifier window, including ability to change magnification
- implemented zoom menu (zoomIn, zoomOut, zoom1, zoom2, zoom4, zoom8)
- added support for all FITS data types (silrd) in js9.js and tpos.c
- png file now contains FITS header in json format
- NB: the format of the PNG representation file has changed substantially!
- raw arrays now implemented as a typed array, using DataView to unpack it
- updated Kinetic.js to v4.5.4 (multiple changes required to code)
Beta Release 5 (May 20, 2013)
- added support for dynamic creation of js9 instances (new or light window)
- added support for pre-loading images into a js9 on page load
- added support for running analysis web page buttons, forms, etc.
- added support for printing the image
- added new demo pages
- changed js9msg script name to js9
- loading javascript files is "generic" (no version numbers in filenames)
- updated Kinetic.js to v4.5.1
Beta Release 4 (April 26, 2013)
- added support for polygon regions
- added support for fixing (i.e. freezing) regions in place
- added support for container regions (constrain position of other regions)
- added support for shift key accelerator
- fixed multiple bugs in region listOnChange support
- updated Kinetic.js to v4.4.3
Beta Release 3 (April 2, 2013)
- updated Kinetic.js to v4.4.0 to fix new chrome v26.0.1410.43 (whoah!)
Beta Release 2 (April 1, 2013)
- added support for executing analysis from console window
- added support for messaging to js9 via Node-based js9Msg.js
- added ability to specify params to region creation
- added server mode and input from stdin to js9Msg.js
Beta Release 1 (February 27, 2013)
- initial beta release with support for displaying FITS images, scaling,
colormaps, external analysis, regions, wcs
Last updated: June 8, 2016