All notable changes to this project will be documented in this file, following the suggestions of Keep a CHANGELOG. This project adheres to Semantic Versioning for its most widely used - and defacto - public interfaces.
Note that since we don't clearly distinguish between a public and private interfaces there will be changes in non-major versions that are potentially breaking. If we make breaking changes to less used interfaces we will highlight it in here.
- Fix
getOperatorsForIndex
- Pass animation info (current frame & count) to state animations
- Fix camera stutter for "camera spin" animation
- Add partial charge parsing support for MOL/SDF files (thanks @ptourlas)
- [Breaking] Cleaner looking
MembraneOrientationVisuals
defaults - Add support for custom colors to "molecule-type" theme
- [Breaking] Add style parameter to "illustrative" color theme
- Defaults to "entity-id" style instad of "chain-id"
- Add "illustrative" representation preset
- Add PDBj as a
pdb-provider
option - Move Viewer APP to a separate file to allow use without importing light theme & index.html
- Add symmetry support for mol2 files (only spacegroup setting 1)
- Fix mol2 files element symbol assignment
- Improve bond assignment from
IndexPairBonds
- Add
key
field for mapping to source data - Fix assignment of bonds with unphysical length
- Add
- Fix label/stats of single atom selection in multi-chain units
- Add
PluginFeatureDetection
and disable WBOIT in Safari 15. - Add
disable-wboit
Viewer GET param - Add
prefer-webgl1
Viewer GET param - [Breaking] Refactor direct-volume rendering
- Remove isosurface render-mode (use GPU MC instead)
- Move coloring into theme (like for other geometries/renderables)
- Add
direct
color type - Remove color from transfer-function (now only alpha)
- Add direct-volume color theme support
- Add volume-value color theme
- Add
- [Breaking] Use size theme in molecular/gaussian surface & label representations
- This is breaking because it was hardcoded to
physical
internally but the repr size theme default wasuniform
(nowphysical
)
- This is breaking because it was hardcoded to
- Reduce number of created programs/shaders
- Support specifying variants when creating graphics render-items
- Change double-side shader param from define to uniform
- Remove dMarkerType shader define (use uMarker as needed)
- Support to ignore defines depending on the shader variant
- Combine pickObject/pickInstance/pickGroup shader variants into one
- Combine markingDepth/markingMask shader variants into one
- Correctly set shader define flags for overpaint, transparency, substance, clipping
- [Breaking] Add per-object clip rendering properties (variant/objects)
SimpleSettingsParams.clipping.variant/objects
andRendererParams.clip
were removed
- Enable temporal multi-sampling by default
- Fix flickering during marking with camera at rest
- Enable
aromaticBonds
in structure representations by default - Add
PluginConfig.Structure.DefaultRepresentationPreset
- Add ModelArchive support
- schema extensions (e.g., AlphaFold uses it for the pLDDT score)
- ModelArchive option in DownloadStructure action
model-archive
GET parameter for Viewer appViewer.loadModelArchive
method
- Improve support for loading AlphaFold structures
- Automatic coloring by pLDDT
- AlphaFold DB option in DownloadStructure action
afdb
GET parameter for Viewer appViewer.loadAlphaFoldDb
method
- Add QualityAssessment extension (using data from ma_qa_metric_local mmcif category)
- pLDDT & qmean score: coloring, repr presets, molql symbol, loci labels (including avg for mutli-residue selections)
- pLDDT: selection query
- Warn about erroneous symmetry operator matrix (instead of throwing an error)
- Added
createPluginUI
tomol-plugin-ui
- Support
onBeforeUIRender
to make sure initial UI works with custom presets and similar features.
- Support
- [Breaking] Removed
createPlugin
andcreatePluginAsync
frommol-plugin-ui
- Please use
createPluginUI
instead
- Please use
- Improve aromatic bonds handling
- Don't detect aromatic bonds for rings < 5 atoms based on planarity
- Prefer atoms in aromatic rings as bond reference positions
- Fix initial camera reset not triggering for some entries.
- Add
bumpiness
(per-object and per-group),bumpFrequency
&bumpAmplitude
(per-object) render parameters (#299) - Change
label
representation defaults: Use text border instead of rectangle background - Add outline color option to renderer
- Fix false positives in Model.isFromPdbArchive
- Add drag and drop support for loading any file, including multiple at once
- If there are session files (.molx or .molj) among the dropped files, only the first session will be loaded
- Add drag and drop overlay
- Safari 15.1 - 15.3 WebGL 2 support workaround
- [Breaking] Move
react
andreact-dom
topeerDependencies
. This might break some builds.
- Fix OBJ and USDZ export
- Do not include tests and source maps in NPM package
- Add multiple lights support (with color, intensity, and direction parameters)
- [Breaking] Add per-object material rendering properties
SimpleSettingsParams.lighting.renderStyle
andRendererParams.style
were removed
- Add substance theme with per-group material rendering properties
StructureComponentManager.Options
state saving supportParamDefinition.Group.presets
support
- Fix: allow atoms in aromatic rings to do hydrogen bonds
- Fix secondary-structure property handling
- StructureElement.Property was incorrectly resolving type & key
- StructureSelectionQuery helpers 'helix' & 'beta' were not ensuring property availability
- Re-enable VAO with better workaround (bind null elements buffer before deleting)
- Add
Representation.geometryVersion
(increments whenever the geometry of any of its visuals changes) - Add support for grid-based smoothing of Overpaint and Transparency visual state for surfaces
- Workaround: switch off VAO support for now
- Fix double canvas context creation (in plugin context)
- Fix unused vertex attribute handling (track which are used, disable the rest)
- Workaround for VAO issue in Chrome 96 (can cause WebGL to crash on geometry updates)
- Added
ViewerOptions.collapseRightPanel
- Added
Viewer.loadTrajectory
to support loading "composed" trajectories (e.g. from gro + xtc) - Fix: handle parent in Structure.remapModel
- Add
rounded
andsquare
helix profile options to Cartoon representation (in addition to the defaultelliptical
)
- Add additional measurement controls: orientation (box, axes, ellipsoid) & plane (best fit)
- Improve aromatic bond visuals (add
aromaticScale
,aromaticSpacing
,aromaticDashCount
params) - [Breaking] Change
adjustCylinderLength
default tofalse
(set to true for focus representation) - Fix marker highlight color overriding select color
- CellPack extension update
- add binary model support
- add compartment (including membrane) geometry support
- add latest mycoplasma model example
- Prefer WebGL1 in Safari 15.1.
- Fix sequence viewer for PDB files with COMPND record and multichain entities.
- Fix index pair bonds order assignment
- Fix pickScale not taken into account in line/point shader
- Add pixel-scale, pick-scale & pick-padding GET params to Viewer app
- Fix selecting bonds not adding their atoms in selection manager
- Add
preferAtoms
option to SelectLoci/HighlightLoci behaviors - Make the implicit atoms of bond visuals pickable
- Add
preferAtomPixelPadding
to Canvas3dInteractionHelper
- Add
- Add points & crosses visuals to Line representation
- Add
pickPadding
config option (look around in case target pixel is empty) - Add
multipleBonds
param to bond visuals with options: off, symmetric, offset - Fix
argparse
config in servers.
- Fix direct volume shader
- Prefer WebGL1 on iOS devices until WebGL2 support has stabilized.
- Add Charmm saccharide names
- Treat missing occupancy column as occupancy of 1
- Fix line shader not accounting for aspect ratio
- [Breaking] Fix point repr & shader
- Was unusable with
wboit
- Replaced
pointFilledCircle
&pointEdgeBleach
params bypointStyle
(square, circle, fuzzy) - Set
pointSizeAttenuation
to false by default - Set
sizeTheme
touniform
by default
- Was unusable with
- Add
markerPriority
option to Renderer (useful in combination with edges of marking pass) - Add support support for
chem_comp_bond
andstruct_conn
categories (fixes ModelServer behavior where these categories should have been present) - Model and VolumeServer: fix argparse config
- Take include/exclude flags into account when displaying aromatic bonds
- Improve marking performance
- Avoid unnecessary draw calls/ui updates when marking
- Check if loci is superset of visual
- Check if loci overlaps with unit visual
- Ensure
Interval
is used for ranges instead ofSortedArray
- Add uniform marker type
- Special case for reversing previous mark
- Add optional marking pass
- Outlines visible and hidden parts of highlighted/selected groups
- Add highlightStrength/selectStrength renderer params
- Add
invertCantorPairing
helper function - Add
Mesh
processing helper.smoothEdges
- Smooth border of molecular-surface with
includeParent
enabled - Hide
includeParent
option from gaussian-surface visuals (not particularly useful) - Improved
StructureElement.Loci.size
performance (for marking large cellpack models) - Fix new
TransformData
issues (camera/bounding helper not showing up) - Improve marking performance (avoid superfluous calls to
StructureElement.Loci.isWholeStructure
)
- Fix
TransformData
issues #133 - Fix
mol-script
query compiler const expression recognition.
- Add surrounding atoms (5 Angstrom) structure selection query
- [Breaking] Add maxDistance prop to
IndexPairBonds
- Fix coordinateSystem not handled in
Structure.asParent
- Add
dynamicBonds
toStructure
props (force re-calc on model change)- Expose as optional param in root structure transform helper
- Add overpaint support to geometry exporters
InputObserver
improvements- normalize wheel speed across browsers/platforms
- support Safari gestures (used by
TrackballControls
) PinchInput.fractionDelta
and use it inTrackballControls
- Add
tubularHelices
parameter to Cartoon representation - Add
SdfFormat
and update SDF parser to be able to parse data headers according to spec (hopefully :)) #230 - Fix mononucleotides detected as polymer components (#229)
- Set default outline scale back to 1
- Improved DCD reader cell angle handling (interpret near 0 angles as 90 deg)
- Handle more residue/atom names commonly used in force-fields
- Add USDZ support to
geo-export
extension. - Fix
includeParent
support for multi-instance bond visuals. - Add
operator
Loci granularity, selecting everything with the same operator name. - Prefer
_label_seq_id
fields in secondary structure assignment. - Support new EMDB API (https://www.ebi.ac.uk/emdb/api/entry/map/[EMBD-ID]) for EM volume contour levels.
Canvas3D
tweaks:- Update
forceDraw
logic. - Ensure the scene is re-rendered when viewport size changes.
- Support
noDraw
mode inPluginAnimationLoop
.
- Update
- Add parameter for to display aromatic bonds as dashes next to solid cylinder/line.
- Add backbone representation
- Fix outline in orthographic mode and set default scale to 2.
- Add ability to specify
volumeIndex
inViewer.loadVolumeFromUrl
to better support Volume Server inputs. - Support in-place reordering for trajectory
Frame.x/y/z
arrays for better memory efficiency. - Fixed text CIF encoder edge cases (most notably single whitespace not being escaped).
- Add glTF (GLB) and STL support to
geo-export
extension. - Protein crosslink improvements
- Change O-S bond distance to allow for NOS bridges (doi:10.1038/s41586-021-03513-3)
- Added NOS-bridges query & improved disulfide-bridges query
- Fix #178:
IndexPairBonds
for non-single residue structures (bug due to atom reordering). - Add volumetric color smoothing for MolecularSurface and GaussianSurface representations (#173)
- Fix nested 3d grid lookup that caused results being overwritten in non-covalent interactions computation.
- Basic implementation of
BestDatabaseSequenceMapping
(parse from CIF, color theme, superposition). - Add atom id ranges support to Selection UI.
- Ability to pass
Canvas3DContext
toPluginContext.fromCanvas
. - Relative frame support for
Canvas3D
viewport. - Fix bug in screenshot copy UI.
- Add ability to select residues from a list of identifiers to the Selection UI.
- Fix SSAO bugs when used with
Canvas3D
viewport. - Support for full pausing (no draw) rendering:
Canvas3D.pause(true)
. - Add
MeshBuilder.addMesh
. - Add
Torus
primitive. - Lazy volume loading support.
- [Breaking]
Viewer.loadVolumeFromUrl
signature change.loadVolumeFromUrl(url, format, isBinary, isovalues, entryId)
=>loadVolumeFromUrl({ url, format, isBinary }, isovalues, { entryId, isLazy })
- Add
TextureMesh
support togeo-export
extension.
- [WIP] Mesh export extension
Structure.eachAtomicHierarchyElement
(#161)- Fixed reading multi-line values in SDF format
- Fixed Measurements UI labels (#166)
- Add support for
ColorTheme.palette
designed for providing gradient-like coloring. - [Breaking] The
zip
function is now asynchronous and expects aRuntimeContext
. Also addedZip()
returning aTask
. - [Breaking] Add
CubeGridFormat
inalpha-orbitals
extension.
- Add
Canvas3D.getRenderObjects
. - [WIP] Animate state interpolating, including model trajectories
- Recognise MSE, SEP, TPO, PTR and PCA as non-standard amino-acids.
- Fix VolumeFromDensityServerCif transform label
- Exclude tsconfig.commonjs.tsbuildinfo from npm bundle
Too many changes to list as this is the start of the changelog... Notably, default exports are now forbidden.