Change Log
threeBrain 1.2.0
- Fixed shiny callback when electrode contacts are double-clicked
- Fixed contact-switching and highlight box
- Added
PMT
electrodes
- Fixed non-integer search radius issue
- Adjust electrode position can be done under volume-mode to improve
user experience
- Electrodes with prototype geometries will use the prototype to infer
the locations rather than spacial calculation
- Added keyboard shortcut for registering from cross-hair
- Added
get_atlas_values
for continuous atlases such as
binary or probabilistic ROI
- The radius refers to maximum
RAS
distance instead of
voxel
indexing distance, hence more accurate when the atlas
volume has imbalanced slice count
- Renamed
active-voxel
to column-row-slice
but still keep the naming for backward compatibility
Voxel
filter is linear now when displayed at side
slices only and when the slice mode is not
active-voxel
- Fixed drifting issue when visualizing via active
voxel
mode
- Added direction arrow helper to
DBS
(or electrodes with
non-zero model up vectors)
- Support
WebAssembly
- Avoid using
pandoc
to save the whole page
self-contained
- Fixed the depth issue in electrode material shader
- Set maximum render length cut-off for electrode prototypes
- Added model tangent (usually the direction) to electrode shader so
outlines are correctly visualized
- Fixed electrode prototype rendering issue (color) on Windows
- Fixed the color map for discrete values
- Setting electrode prototype render order to be
-500
so
it does not hide behind the transparent surfaces
- Plotting electrodes on slices now takes numerical
adjust_brightness
interpreted as quantile
- Changed default color palette for discrete values, removed colors
that are too dark or gray
- Change
CT
threshold back to positive (3000) when
switching from DBS
leads back to sEEG
leads.
- Support drag and drop annotation files
- Changed electrode material to display front-side only instead of
double side to avoid overlapping contacts visually when spacing is
small
- Added
Abbott
segmented electrodes
6170-6173
, with segmented electrodes clockwise viewing from
proximal
end
- Fixed a bug that may change electrode coordinate hand
- All the
DBS
electrode prototype maker uses natural
cos
for x
and sin
for
y
. However, this will cause electrodes to rely on rendering
on back side (material)
- Added missing prototype
- Fixed
BSC
and Medtronic
electrode
orientation (now is counter-clockwise when viewing from
proximal
end)
- Added more spacing for
DBS
segmented contacts
- added prototypes for
Medtronic
segmented
electrodes
- Added
BSC-DB
electrodes for 2202
2201
- Added internal test code for depth mapping
- Surface mapping has been implemented for depth electrodes, with
dynamic offset threshold
surface_offset
has been added to electrode field
cvs_avg35_inMNI152
has the correct talXFM
(scanner to MNI305
) now
- Added
load_mesh
to surface object so users can load
surface mesh for computation in R
- Added internal
calculate_distances
to compute the
distances from a point to its projection to a list of mesh
DistanceShifted
in electrode table is taken into
account and will be passed to electrode instances
- Inflated surfaces have offset by default
- Fixed a singular matrix bug when the electrode prototype
up
vector is zero or is parallel with the model
direction
- Allowed the surface mapped electrodes to be snapped to the surface
if the surface world matrix is not identity
- Force the inflated brain to have offset positions
- Added
DBS
electrode prototype
BSC-DB-2202
- Prototype
set_transform_from_points
now tries to set
rotation from transform Euler
angle when the prototype
guided marker is 1-ranked (electrode strip, DBS
electrodes)
- Allowed electrode prototype to display markers; added viewer options
for localization
- Changed electrode direction helper to be displayed inside of
cross-hair group
- Allowed side panel to be displayed with atlas column-row-slice
- Added controller to display symmetric continuous color map for
volumes
- Fixed the
GLTF
not showing inner-most contact
issue
- Removed
devel
version of ravetools
from
check
- Update
Github
action check script
- Added
rhub
check
- Plotting slices have correct margins with partial plot
- Allow users to drag and drop value tables
- Allow users to hide cross-hairs
- Allow
shiny
app to change current color map via
proxy
- Allows drag-drop electrode color files
- Added
set_electrode_data
to brain proxy class, allowing
shiny
applications to change the electrode data, set color
palettes, and set value ranges in the same call
- Allow masks to be added to
T1
- Added
D99v2
for monkey brain
- Export
GLTF
for datacube2
- Fixed
fix_electrode_color
bug
- Supported
ISO
surface generation from volume
- Added white-matter segmentation as default atlas if user has this
file
- Exporting
GLTF
is wrapped with try-catch
fix_electrode_color
is exclusive by default
- fixed color fixing issue for naive sphere electrodes
- Changed logo message
- Using better
RAVE
logo and fixed style issues
- Changed shortcut
p
to toggling the visibility and
shift+p
to switching surface types
- Added logo to control panel to advertise the project
- Added export
GLTF
binary format
- Separate
3D
and 2D
canvas;
- Converts
*h.pial.gii
to FreeSurfer
format
when the files are missing
- Allow electrode depth test to be disabled (always-depth) on contact
and/or outlines
- Fixing the vertex shader output not read by fragment shader
issue
- Drop-in feature support color-map for volume and surfaces
- Added contact order to display when electrode is clicked
- Added
DIXI
(AM
, BM
,
CM
) electrode specifications
threeBrain 1.1.0
Major Changes
threejs
engine is upgraded to v160
; added
support for NIfTI
and GIfTI
images
- Allowed data to be embedded with viewer as
dataURI
.
This results in a truly standalone viewer: no extra engine required,
only web-browser is needed.
- Added electrode geometry prototype, allowing users to see the
electrode rather than using spheres, useful for electrodes with super
micro contacts or electrodes with segmented contact like
DBS
- Added support for showing (cortical or sub-cortical)
ROI
surfaces
- Implemented drag-and-drop feature to drop arbitrary volume
(
nii,mgz
) or surface (fs,gii
) files to the
viewer. The surface coordinate system is inferred from file name
following BIDS
convention. The surface color can be set via
a color-map (csv
) or in the file name
- Implemented slice (in side viewer) overlay
- Users can control side camera
frustums
(near and far)
separately
- Implemented worker system so the viewer can run truly parallel code
in the background
- Added
snap-to-electrode
and line-of-sight
mode in addition to canonical anatomical slices.
- Under
line-of-sight
mode, the underlay image will be
sliced dynamically with a plane orthogonal to the line of sight; two
other (orthogonal) planes parallel to the line of sight
- Under
snap-to-electrode
, the volume slices will be
snapped to electrode direction (only available when electrode prototype
is used and electrode direction defined). The other two planes will
dynamically slice the MRI
- Users can localize an electrode probe by clicking on the target
location, then entry location
- Added an option to add
QR
code to the viewer, allowing
people to link to the publication
- Loading progress is more informative now
- Implemented
plot_slices
to allow plotting
MRI
slices for each contact in canonical order
- Users can set default colors to electrodes via
brain$electrodes$fix_electrode_color
- Users can override underlay images by placing
rave_slices.nii[.gz]
under the mri/
in
FreeSurfer
folder
- File/Data loaders use
JavaScript
workers now (can be
disabled with enable_cache=TRUE
)
- Added mesh clipping to see depth electrodes without compromising
color
- Implemented volume clipping
- Added new mode for
ACPC
alignment
- Added
target
flag so objects can be rendered
differently on main canvas versus side canvas
Minor changes
- Electrode prototype names follow
type-company-version.json
format
- Added compass object to side cameras when slice mode is not
canonical
- Remove
UV
mapping on sphere electrodes
- Added model up direction to electrodes to assist calculating Euler
axis and angles
- Volume, atlas threshold is asynchronous now
- Changed default values of some controller
- Added
broadcast()
to more controllers;
- Atlas key number is displayed so users no longer need to search for
look-up table
- Added debug flag with keyboard shortcuts
- Viewer finally compiles with
quarto/rmarkdown
- Implemented functions to create
sEEG
electrodes
- Slices does not write to depth buffer when rendered in side canvas,
so electrode contacts are not blocked
- Allowed anchor to be fixed when localizing with electrode
prototype
- Using
instancedMesh
to render actual electrode spheres
when prototype is used and users choose to see the actual contact
locations
- Implemented
mapToTemplate
for electrode prototypes
Pial
surface does not write to depth buffer when it’s
super transparent
- Added drivers to set object transform matrix
- Adjust the implementation of background color and
arcball
radius
- Removed composer effects, using
shaders
to render
electrode outline
- Trackball uses longer side of the canvas instead of shorter side as
radius
- Added electrode visibility mode: use
threshold-only
to
show contacts that pass threshold even no display value is given
- Overlay brightness can be adjusted via controller
- Adjusted title position
- Updated
CITATION
- New color map is used for electrodes to be consistent with
RAVE
color
- Allow adding additional geometries in
brain$plot
- Improved spacing for interpolation and extrapolation (electrode
localization); removed old interpolation logic; added
distanceRatio
to prevent large shift (auto adjust)
- Electrodes are opaque on main but transparent on side canvas
- Using
pial
surface center as trackball center
- Dithering the
datacube2
to make rendering more natural
on main canvas
- By default set
MRI
slices visible when surfaces are
missing
- Drag & drop file names is sanitized to avoid displaying
issues
- Electrode contacts (
instancedMesh
) are now
click-able
dispose
is cleaner now, it also fires events
- Added
makeClickable
and removeClickable
to
replace previous add_clickable
function
- Renamed
register_object
to
registerToMap
- Better ways to sanitize
datacube
- Improved
datacube
overlay texture, including using
clamp-to-border
instead clamp-to-edge
- Ray-casting electrode prototypes with
instancedMesh
now
works under contact-only
mode
- Show electrode prototype with contacts by default
- Added color modes for uploaded images
- removed
normalize
method (replaced by
getNormalizedImage
) from NiftiImage
and
MGHImage
- Using script to generate change log automatically from Git
commits
- Scrolling on side canvas is faster now
- Allowed prototype contact colors to be fixed
- Prototype control points displays channel information (provided
control points are channels) Added color (
randomColor
,
testColorString
) and file-name utility functions
- Soft removed
addColorCoat
and using
ElectrodeMaterial
, this results in massive code improvement
in electrode instance
- Allow to set default electrode colors if a contact is not rendered
with values nor fixed color
- Scrolling on side canvas is faster now
- Color look-up table can be set with arbitrary single color (in
HexString
, indicating that all values should be rendered
with such color; Drag & Drop volumes can change to single
colors
- Remembers the state when switching volumes
(
datacube2
)
Bug fixes
- Fixed
NamedLut
color error when a value range is
zero
- Prototype electrode click information displays the channel
number
- Fixed
RShinyDriver
issue when object does not have
construction parameters (using getThreeBrainInstance
instead)
- Avoid rendering volume data to sub-cortical
ROI
- Fixed UV issues in electrode geometry prototypes
- Fixed a bug when slice instance is missing but controller tries to
set overlay
JavaScript
map is hidden when compiled so browsers will
not complain about missing maps
- Significantly reduced the chances of viewer crash under R shiny
applications
- Fixed a
shader
crash issue on Windows
WebGL2
is the hard requirement now; users will be
notified if this requirement is not met
- Mouse position in the canvas is calculated every mouse down instead
of every resizing to fix the control issues when page is scrolled in
shiny app
- Fixed
controller.load
to handle invalid set controller
request
- Fixed
textsprite
depth issues
- Fixed light under new engine
- Fixed visualization of volume cubes when using
NIfTI
files
- Fixed volume transforms when
sform
and
qform
are inconsistent in NIfTI
- Fixed a bug in interpolation with spacing
- fixed incorrect
ROI
label
as_subcortical_label
generates correct white-matter
labels
- Fixed
freesurfer_lut
- Fixed
auto-adjust
feature (electrode localization)
- Fixed
UV
mapping issue in sphere electrode
geometry
- Fixed
shader
issue when transparency is set to negative
(treated as 1)
- Using
NIfTI
headers to get calculated color intensities
before applying heuristic approach
threeBrain 1.0.2
- Removed a
shader
loop that accidentally used dynamic
variable for looping, which may crash on Windows
in certain
situations
- Updated
README.md
- Composer effects are removed
- Added default color to electrodes (JavaScript) to fix the
localization electrode color not set correctly issues
- Added
z-index
base to the side canvas layer
(div
)
- Removed additional unused parameters from material call
- Used new material type to make brain more realistic
- New background color is implemented
Trackball
uses width instead of height of the viewer as
the Arcball
radius; mouse positions is calculated whenever
mouse-down event is triggered (allowing more accurate track-ball
calculation in Shiny
applications)
- Made
col2hexstr
internal function
- Added a new electrode visibility mode, allowing to show contacts
with no values but passing the threshold
- Added
brain$electrodes$fix_electrode_color
to fix the
electrode colors under given data names (to display DBS
electrodes, for example)
- Made
controller.load
more robust against errors
- Fixed the depth issue in
TextSprite
- Some default controller values have changed to make more sense
- Outline render effect is removed; electrode outlines are implemented
directly in the
shader
- Updated
three.js
to v160
with light model
improved
- Added
rave_slices.nii
to allowed MRI
prefix in FreeSurfer
folder with highest priority, such
that this image will be treated as default volume to load in side canvas
(default is still brain.finalsurfs.mgz
)
- Allow
MRI
to change brightness dynamically in
viewer
- Ensure that
voxels
index from zeros
- Added
brain$get_atlas_labels
to guess the atlas labels
from given masks or atlas files
- Allowed to spatially transform electrodes to desired coordinate
system
- Updated citation
- The standalone viewer does not require static server anymore:
everything is self-contained (require
pandoc
, which comes
with RStudio
)
- Changed mechanism on animation color map generator (so the color is
more accurate for discrete variables)
- Added
png
to dependence
- Added support for
AC-PC
alignment, available in
RAVE
- YAEL
module
- Allow
brain
to plot with additional customized
geometries
- Added
plot_slides
to plot MRI
centered at
each electrode contact for slide-to-slide visualization
- Added Line-of-Sight view mode for side canvas; can be enabled using
shortcut
m
(previous shortcut to change the material type
is changed to shift+M
)
- Fixed
CT
in JavaScript
when the
sform
and qform
are different (have different
code)
- Allowed to specify the spacing for interpolation and extrapolation
for unequally spaced electrodes
- Added electrode outlines
YAEL
paper is finally out
- Fixed incorrect sub-cortical labels
- Deprecated old format (no cache is needed anymore)
- Made electrodes opaque on main but transparent in side canvas
- Let controllers check if the variable is valid before set to avoid
invalid viewer state during initialization
- Added
get_ijk2ras
to get Norig
and
Torig
matrix
threeBrain 1.0.1
- Updated controller library to have reasonable input focus
- Allow
MRI
slices to be NIfTI
format
- Set slices to be visible by default when the surface is not
available
- Fixed transform for
datacube2
- Fixed
qform
when reading NIfTI
files
- Fixed
auto-refine
functions in electrode
localization
- Removed clipboard auto-copy and auto-paste functions since they
conflict with other viewers; instead users can use controllers to copy
and paste state
threeBrain 1.0.0 - Egypt
This version is a major update.
- Created
threeBrain::threeBrain
as the formal way to
create brain objects
- Updated
JavaScript
engine to v150
- Allow getting
HTML
tags from saved widget so the widget
can be used from Jupyter
notebook
- Added
$render
method to remember viewer states
- Allowing set title via proxy driver
- Added citation information
- Fixed hemisphere issue in localization when electrodes are closer to
opposite hemispheres
- Added electrode registration from anatomical slice cross-hair
threeBrain 0.2.9
This version plans for a major update. Here are some highlights:
- Electrode localization can be done from original
CT
instead of re-sampled ones
- Completely isolate
JavaScript
engine from
R
code. The JavaScript
code is available as
npm
package and is used via sub-module
- Implemented file readers directly from
JavaScript
, this
allows reading files directly in viewer, and no cache is needed
- No home-brew version of
threejs
is required: standard
npm
distribution is used
- New controller
GUI
is implemented
- The viewer can be driven via
JavaScript
directly via
event dispatchers
- Anatomical segmentation map is visible from the side panels; the
voxel
values are displayed when setting
crosshair
Detailed Changes
- Added step size in
datacube2
material uniforms
- Upgraded
threejs
to r148
, and use
npm
distribution “three”
- Massive code re-factory (variable names, trackball controls, legacy
classes…)
- Removed
data-GUI
and use lil-GUI
- Fixed compass (finally…)
- Added title to the viewer
- Reworked the whole message signal system, added
ThrottledEventDispatcher.js
- Added
MouseKeyboard
class to track mouse and keyboard
events, greatly reduced canvas burden
- Added
animParameter
object to canvas to keep track of
the animation parameters
- reworked shiny drivers
- fixed one-voxel shift issues
- Added format support for
nii
, mgh/mgz
,
FreeSurfer
surface, FreeSurfer
node value
binary formats
- Added function
threeBrain
to allow 3D viewer to run
without cache (with fs only)
- Fixed memory leak issues in
JavaScript
code
- Geometry groups can now change its storage path
- JS is completely independent now (available on
npm
now)
- Peel event dispatcher from the canvas class so the events can be
managed separately
- Hide time-stamps when there is no data/animation available
- Added experimental support to show labels on regular electrodes;
currently no depth-test is turned on
- Added
GUI
support to change electrode label visibility
and size
- Electrode label size adjusts along with electrode radius
handle_resize
now put off resizing function when
detecting widget size is too small
Bug fixes
- Fixing
xfm
not parsed correctly when the line starts
with blank spaces
- Stopped rendering canvas when canvas is too small (less than 10
pixels)
threeBrain 0.2.7
Changes
- Rewired events, allowing to drive the viewer via
JavaScript
events
- Allowed to set animation playback status
- Remove modal by default if
raveio
or
ravedash
is loaded
- Edited launch script to always use
Python3
Bug fixes
- Fixed installation issues (template brain) on
Windows
,
avoid backslashes
threeBrain 0.2.6
Changes
- Allowed users to pan the camera when localizing electrodes
- Added line segment geometry type that can either display static line
segments (such as
DTI
), or connect two electrodes
dynamically
- Printing brain now uses more accurate terms
- Allowed
CT
to be either path or the actual data when
calling localizing function
Bug fixes
- Fixed
NifTi
orientation issues and use
sform
- Fixed localization issue when
NifTi
transform matrix
has determinant not equally to 1
- Fixed volume shader, resolved shift issues when panning the
camera
threeBrain 0.2.5
Changes
- Surface
sync from voxels
now clamp the surface
nodes
- Added
Voxel Display
controller to toggle volume display
modes
- Changed shortcut
l
from Voxel Type
to
Voxel Display
- Volume
fragmentShader
uses non-linear function to
calculate fragment colors combined with face normal; this will create
smoother results
DataCube2
geometry uses ConvexHull
instead
of box/sphere to improve the performance
DataCube2
are no longer hidden when
sync from voxels
is on: users can use shortcuts
l
and k
to easily control the visibility.
download_template_subject
can download other templates
such as fsaverage
, cvs_avg35
,
bert
.
Bug fixes
- Fixed a volume rendering issue where ray-marching directions are not
calculated correctly
- Fixed color not set correctly when changing
Voxel Labels
while surface colors are
sync from voxels
threeBrain 0.2.4
This version mainly works on the electrode localization. Most changes
occur in the JavaScript
engine.
Changes
- Allows electrodes to be reset
- Displays electrode labels along with the electrodes
- Allows resizing electrode size on the fly
- Allows resizing the electrode labels
- Localization module has been integrated into
RAVE
- Added line mesh to mark the distance of the electrode deviating from
its original position. The line color changes with the distance
value.
Improvements
- Improved localization precision
- Auto-adjusting electrodes now respects the topology
- Electrodes in the localization mode now have
LocElectrode
class
- Volume rendering and ray-casters now respects the transform
matrices
threeBrain 0.2.3
Changes
- Electrode localization now has a
shiny
application
Improvements
threeBrain 0.2.2
Changes
- Supported video content to display auditory visual stimuli along the
response
- Default to closing the
default
and volume
side folders
Improvements
- Fixed electrode localization interpolation issue
- Proper dispose the localized electrodes
- Fixed screenshot and video recording functions
- Renamed recording button to
Chrome
-specific
threeBrain 0.2.1
Changes
- Finally, electrode localization is added!
- Added
TextTexture
in the internal code to display text
Sprite
easily
- Can download electrodes as
csv
threeBrain 0.2.0
Changes
- More efficient volume rendering with transparency
- Added shader functions to surface instances, allowing color
rendering from volume, electrodes, or vertices (major change)
- Added color-map generator for surface and volume data
- Added method to generate data cube (volume) from
MNI305
coordinates
- Optimized loading procedure
- Removed
crayon
, base64enc
,
htmltools
, pryr
from dependence
Improvements
- Bumped
threejs
version to v131dev
- Fixed surface transparency losing fragments issue
- Added loaders to shiny applications to avoid performance issues on
old computers
- Fixed electrodes not selected on mouse click-down (on
Firefox
)
threeBrain 0.1.9
Changes
- Added backend engine for volume rendering to show atlas files
- Standalone viewers now use native system tools for
Mac
and Linux
(On Windows
, it still needs
R
to be installed)
Improvements
- Allows super slow play speed to show animations in millisecond
level
- Bumped
threejs
to a newer version and fixed
compatibility issues
- Animation time range is more reasonable
threeBrain 0.1.8
Changes
- Screenshot now downloads
pdf
format
Improvements
- Fixed
freesurferformats
face index starting from 1
instead of 0
threeBrain 0.1.7
Changes
- Now displays
MNI305
coordinates instead of
tkRAS
coordinates
- Removed
reticulate
and related functions to support
native R functions
Improvements
- Fixed
MNI305
calculation issues
- Internally calculates anterior commissure
threeBrain 0.1.6
Changes
- Implemented
view_ct_t1
to view CT
aligned
to T1
images
- Updated document on how to generate
FreeSurfer
brain
- Removed dependency to
nibabel
and use native R
packages
- Re-designed legends, added options to show, hide display
information
- Added screenshot to download as image
Improvements
- Added hints for keyboard shortcuts
threeBrain 0.1.5
Changes
- Import
FreeSurfer
and SUMA
files
sulc
- Control element update
- Added
brain_proxy
to control in shiny element
- Separated display and threshold data
FreeMesh
material can be switched between
MeshPhongMaterial
and MeshLambertMaterial
Improvements
- UI will blur focus when clicking on canvas
- Allow customizing widgets
background
, cex
(font magnification), timestamp
(display time)
- Allow
controllers
(list) to override control UI
- Added preset
syncviewers
(threejs_brain(control_presets = ...)
) to synchronize
multiple viewers in shiny environment
threeBrain 0.1.4
Changes
- Implemented a new mesh type - volume rendering using ray
marching
- Added alternative methods to read
.nii
files,
nibabel
is now optional
- Customized color palettes and value range for better visualizations
with outliers
- Only requires
T1.mgz
or brainmask
of
brain.finalsurf
is not found. This allows users only run
FreeSurfer
to the first stage, which only takes around 8 to
10 minutes instead of 6 hours.
- Fully compatible with
htmlwidgets
in shiny
mode. When calling threejsBrainOutput
under
shiny::renderUI
, the DOM
element might get
reset by shiny
, causing a new 3D viewer created. This might
consume more resource, causing memory leaks and even conflict context
renderings. Also event listeners couldn’t reset correctly. A cache is
created and now is reusing the canvas.
Improvements
- More flexible directory requirement
- Added dispose function to canvas so that memory gets cleared
correctly
- Renderer optimization and memory optimization
Bug Fixes
- Fixed keyboard listeners locking the keys
- Fixed huge memory leaks due to
threejs
not garbage
collecting geometries and textures
threeBrain 0.1.3
Changes
- File structure change: now directly read in from
FreeSurfer
folder
- Added readers for
.mgz
, .m3z
files
- Added coordinate system to align volume with surface data
- Implemented side-viewers, added three side cameras at XYZ axis
- Can now read, export electrodes as csv file
- Re-write brain generating function
- Can display/switch multiple value types
- Added transparency to surfaces
- Implemented experimental electrode localization
- Automatically determine color type (continuous or discrete) and
value range
Improvements
- Shortcuts available at here
- Optimized electrode value settings
threeBrain 0.1.2
Changes
- Re-draw canvas on a 2D context to make customized overlay directly
on canvas.
- Implemented continuous and discrete legends to replace D3.
- Added support to set main camera position and initial zoom
level.
- Added 3D scatter plot and examples.
- Use hybrid render mode when animation not required to save battery
usage.
- Improved color palette calculation.
- Support customized title.
Improvements
- Support customized datapath when saving widgets.
- Added instructions on how to embed widgets into websites without
R.
threeBrain 0.1.1
- Implemented three types of geometries: plane, sphere and free. A
free geometry takes arbitrary geometry vertices and faces to form a 3D
mesh object.
- Added animation to sphere object.
- Replaced old JavaScript with npx driven modules.
- Implemented D3 side-widget
threeBrain 0.1.0
- Initial private beta release!