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.
- [Breaking] Renamed some color schemes ('inferno' -> 'inferno-no-black', 'magma' -> 'magma-no-black', 'turbo' -> 'turbo-no-black', 'rainbow' -> 'simple-rainbow')
- [Breaking]
Box3D.nearestIntersectionWithRay->Ray3D.intersectBox3D - [Breaking]
Plane3D.distanceToSpher3D->distanceToSphere3D(fix spelling) - [Breaking] fix typo
MarchinCubes->MarchingCubes - [Breaking]
PluginContext.initViewer/initContainer/mountare now async and have been renamed to includeAsyncpostfix - [Breaking] Add
Volume.instancessupport and aVolumeInstancestransform to dynamically assign it- This change is breaking because all volume objects require the
instancesfield now.
- This change is breaking because all volume objects require the
- [Breaking]
Canvas3D.identifynow expectsVec2orRay3D - [Breaking]
TrackballControlsParams.animate.spin.speednow means "Number of rotations per second" instead of "radians per second" - [Breaking]
PluginStateSnapshotManager.playnow accepts an options object instead of a single boolean value - Update production build to use
esbuild - Emit explicit paths in
imports inlib/ - Fix outlines on opaque elements using illumination mode
- Change
Representation.Emptyto a lazy property to avoid issue with some bundlers - MolViewSpec extension:
- Generic color schemes (
paletteparameter for color_from_* nodes) - Annotation field remapping (
field_remappingparameter for color_from_* nodes) representationnode: support custom propertymolstar_representation_params- Add
backboneandlinerepresentation types primitivesnode: support custom propertymolstar_mesh/label/line_paramscanvasnode: support custom propertymolstar_postprocessingwith the ability to customize outline, depth of field, bloom, shadow, occlusion (SSAO), fog, and backgroundclipnode support for structure and volume representationsgrid_slicerepresentation support for volumes- Support tethers and background for primitive labels
- Support
snapshot_keyparameter on primitives that enables transition between states via clicking on 3D objects - Inline selectors and MVS annotations support
instance_id - Support
matrixon transform params - Support
surface_type(molecular/gaussian) on forsurfacerepresentation nodes - Add
instancenode type - Add
transform.rotation_centerproperty that enables rotating an object around its centroid or a specific point - Support transforming and instancing of structures, components, and volumes
- Use params hash for node version for more performant tree diffs
- Add
Snapshot.animationsupport that enables animating almost every property in a given tree - Add
createMVSXhelper function - Support Mol* trackball animation via
animation.custom.molstar_trackball - MVSX - use Murmur hash instead of FNV in archive URI
- Support additional file formats (pdbqt, gro, xyz, mol, sdf, mol2, xtc, lammpstrj)
- Support loading trajectory coordinates from separate nodes
- Trigger markdown commands from primitives using
molstar_markdown_commandscustom extensions - Support
molstar_on_load_markdown_commandscustom state on therootnode - Print tree validation errors to plugin log
- Generic color schemes (
- Added new color schemes, synchronized with D3.js ('inferno', 'magma', 'turbo', 'rainbow', 'sinebow', 'warm', 'cool', 'cubehelix-default', 'category-10', 'observable-10', 'tableau-10')
- Snapshot Markdown improvements
- Add
MarkdownExtensionManager(PluginContext.managers.markdownExtensions) - Support custom markdown commands to control the plugin via the
[link](!command)pattern - Support rendering custom elements via the
pattern - Support tables
- Support loading images and audio from MVSX files
- Indicate external links with ⤴
- Audio support
- Add
PluginState.Snapshot.onLoadMarkdownCommands
- Add
- Avoid calculating rings for coarse-grained structures
- Fix isosurface compute shader normals when transformation matrix is applied to volume
- Symmetry operator naming for spacegroup symmetry - parenthesize multi-character indices (1_111-1 -> 1_(11)1(-1))
- Add
SymmetryOperator.instanceIdthat corresponds to a canonical operator name (e.g. ASM-1, ASM-X0-1 for assemblies, 1_555, 1_(11)1(-1) for crystals) - Mol2 Reader
- Fix column count parsing
- Add support for substructure
- Fix shader error when clipping flags are set without clip objects present
- Fix wrong group count calculation on geometry update (#1562)
- Fix wrong instance index in
calcMeshColorSmoothing - Add
Ray3Dobject and helpers - Volume slice representation: add
relativeX/Y/Zoptions for dimension - Add
StructureInstancestransform mvs-storiesapp- Add
story-idURL arg support - Add
story-session-urlURL arg support - Add "Download MVS State" link
- Add "Open in Mol*" link
- Add "Edit in MolViewStories" link for story states
- Add
- Add ray-based picking
- Render narrow view of scene scene from ray origin & direction to a few pixel sized viewport
- Cast ray on every input as opposed to the standard "whole screen" picking
- Can be enabled with new
Canvas3dInteractionHelperParams.convertCoordsToRayparam - Allows to have input methods that are 3D pointers in the scene
- Add
ray: Ray3Dproperty toDragInput,ClickInput, andMoveInput
- Add async, non-blocking picking (only WebGL2)
- Refactor
Canvas3dInteractionHelperinternals to use async picking for move events
- Refactor
- Add
enableparam for post-processing effects. If false, no effects are applied. - Dot volume representation improvements
- Add positional perturbation to avoid camera artifacts
- Fix handling of negative isoValues by considering only volume cells with values lower than isoValue (#1559)
- Fix volume-value size theme
- Change the parsing of residue names in PDB files from 3-letter to 4-letter.
- Support versioning transform using a hash function in
mol-state - Support for "state snapshot transitions"
- Add
PluginState.Snapshot.transitionthat enables associating a state snapshot with a list states that can be animated - Add
AnimateStateSnapshotTransitionanimation - Update the snapshots UI to support this feature
- Add
- Use "proper time" in the animation loop to prevent animation skips during blocking operations (e.g., shader complication)
- Add
Hsland (normalized)Rgbcolor spaces - Add
Color.interpolateHsl - Add
rotationCenterproperty toTransformParam - Add Monolayer transparency (exploiting dpoit).
- Add plugin config item ShowReset (shows/hides "Reset Zoom" button)
- Fix transform params not being normalized when used together with param hash version
- Replace
immerwithmutative - Fix renderer transparency check
- VolumeServer & "VolumeCIF": default to P 1 spacegroup
- Fix
ColorScalefor continuous case without offsets (broke in v4.13.0) - Experimental: support for custom color themes in Sequence Panel
- MolViewSpec extension:
- Support for label_comp_id and auth_comp_id in annotations
- Geometric primitives - do not render if position refers to empty substructure
- Primitive arrow - nicer default cap size (relative to tube_radius)
- Primitive angle_measurement - added vector_radius param
- Fix MVSX file assets being disposed in multi-snapshot states
- Add
mol-utils/camera.tswithfovAdjustedPositionandfovNormalizedCameraPosition - Show FOV normalized position in
CameraInfoUI and use it in "Copy MVS State" - Support static resources in
AssetManager - General:
- Use
isolatedModulestsconfig flag - Fix TurboPack build when using ES6 modules
- Use
- Support
pickingAlphaThresholdwhenxrayShadedis enabled - Support sampling from arbitrary planes for structure plane and volume slice representations
- Refactor SCSS to not use
@import(fixes deprecation warnings)
- Remove
xhr2dependency for NodeJS, usefetch - Add
mvs-storiesapp included in themolstarNPM package- Use the app in the corresponding example
- Interactions extension: remove
salt-bridgeinteraction kind (sinceionicis supported too)
- Load potentially big text files as
StringLiketo bypass string size limit - MolViewSpec extension:
- Load single-state MVS as if it were multi-state with one state
- Merged
loadMVSoptionskeepCameraandkeepSnapshotCamera->keepCamera - Removed
loadMVSoptionreplaceExisting(is now default) - Added
loadMVSoptionappendSnapshots
- Fix camera not being interpolated in MP4 export due to updates in WebGL ContextLost handling
- IHM improvements:
- Disable volume streaming
- Disable validation report visualization
- Enable assembly symmetry for integrative models
- Fix transparency rendering with occlusion in NodeJS
- mmCIF Support
- Add custom
molstar_bond_sitecategory that enables serializing explicit bonds by referencingatom_site.id - Add
includeCategoryNames,keepAtomSiteId,exportExplicitBonds,encoderproperties toto_mmCIFexporter
- Add custom
- Add support for attachment points property (
M APO) to the MOL V2000 parser - Add
json-cifextension that should pave way towards structure editing capabilities in Mol*- JSON-based encoding of the CIF data format
JSONCifLigandGraphthat enables editing of small molecules via modifyingatom_siteandmolstar_bond_sitecategories
- Add
ligand-editorexample that showcases possible use-cases of thejson-cifextension - Breaking (minor): Changed
atom_site.idindexing to 1-based inmol-model-formats/structure/mol.ts::getMolModels. - WebGL ContextLost handling
- Fix missing framebuffer & drawbuffer re-attachments
- Fix missing cube texture re-initialization
- Fix missing extensions reset
- Fix timer clearing edge case
- Add reset support for geometry generated on the GPU
- Do not raise error when creating duplicate state transformers and print console warning instead
- Fix
Viewer.loadTrajectorywhen loading a topology file - Fix
StructConn.residueCantorPairsto not include identity pairs - Add format selection option to image export UI (PNG, WebP, JPEG)
- Add
StateBuilder.To.updateState - MVS:
- Support updating transform states
- Add support for
is_hiddencustom state as an extension - Add
queryMVSRefandcreateMVSRefMaputility functions
- Adjust max resolution of surfaces for auto quality (#1501)
- Fix switching representation type in Volume UI
- VolumeServer: Avoid grid expansion when requiring unit cell (avoids including an extra layer of cells outside the unit cell query box)
- Support
--hostoption for build-dev.mjs script - Add
Viewer.loadFilesto open supported files - Support installing the viewer as a Progressive Web App (PWA)
ihm-restraintsexample: show entity labels- Fix
element-pointvisual not using child unit - Ignore
renderableswith empty draw count - Add experimental support for
esbuildfor development- Use
npm run devfor faster development builds
- Use
- Use
StructureElement.Bundleinstead of expressions to serialize measurement elements- Fixes measurements not being supported for coarse models
- Implementation of
ColorScale.createDiscrete(#1458) - Add
ColorScale.createDiscreteto theuncertaintycolor theme - Fix color palette shown in the UI (for non-gradient palettes)
- Fix colors description in the UI (when using custom thresholds)
- Fix an edge case in the UI when the user deletes all colors from the color list
- Add
interactionsextension and a corresponding example that utilizes it - Add element source index to default atomic granularity hover labels
- Add
StructureElement.Schemabased on corresponding MolViewSpec implementation that allows data-driven selection of structural elements - Add
StructureElement.Loci/Bundle.fromExpression/Query/Schemahelper functions - Add
addLinkCylinderMesh(fromcreateLinkCylinderMesh) - Add
Unit.transientCacheandUnit.getCopy - Fix
ElementBondIteratorindices mapping logic for inter-unit bonds - Fix
pickPaddingandpickScalenot updatingPickHelper - MolViewSpec extension: support loading extensions when loading multistate files
- Do not add bonds for pairs of residues that have a
struct_connentry - Improved
ma_qa_metricsupport- Parse all local metrics
- Ability to select alternate metrics in the pLDDT/qmean themes
- Do not assume PAE plot is symmetric
- Added
PluginConfig.Viewport.ShowScreenshotControlsto control visibility of screenshot controls - Fix MolViewSpec builder for volumes.
- Generalize
mvs-kinase-storyexample tomvs-stories- Add TATA-binding protein story
- Improve the Kinase story
- Fix alpha orbitals example
- Fix PDBj structure data URL
- Improve logic when to cull in renderer
- Add
atom.ihm.has-seq-idandatom.ihm.overlaps-seq-id-rangesymbol to the query language - MolViewSpec extension:
- Add box, arrow, ellipse, ellipsoid, angle primitives
- Add basic support for volumetric data (map, Volume Server)
- Add support for
molstar_color_theme_namecustom extension - Better IH/M support:
- Support
coarsecomponents - Support
spacefillrepresentation - Support
carbohydraterepresentation - Support for
custom.molstar_use_default_coloringproperty on Color node. - Use
atom.ihm.has-seq-idandatom.ihm.overlaps-seq-id-rangefor matchinglabel_seq_idlocations to support querying coarse elements. - Add ihm-restraints example
- Support
- Add
mvs-kinase-storyexample - Remove static uses of
ColorThemeandSizeThemefields. Should resolvent "undefined" errors in certain builds - Add
transformproperty to clip objects - Add support for trimming
imagegeometry to a box - Improve/fix iso-level support of
slicerepresentation - Add support for rotating
slicerepresentation around an axis - Add default color support for palette based themes
- Add
planestructure representation- Can be colored with any structure theme
- Can be colored with the
external-volumetheme - Can show atoms as a cutout
- Supports principal axes and bounding box as a reference frame
- Add
Camerasection to "Screenshot / State" controls - Add
CoarseIndexfor fast lookup of coarse elements
- Fix for tubular helices issue (Fixes #1422)
- Volume UI improvements
- Render all volume entries instead of selecting them one-by-one
- Toggle visibility of all volumes
- More accessible iso value control
- Support wheel event on sliders
- MolViewSpec extension:
- Add validation for discriminated union params
- Primitives: remove triangle_colors, line_colors, have implicit grouping instead; rename many parameters
- UI configuration options
- Support removal of independent selection controls in the viewport
- Support custom selection controls
- Support for custom granularity dropdown options
- Support for custom Sequence Viewer mode options
- Add
external-structuretheme that colors any geometry by structure properties - Support float and half-float data type for direct-volume rendering and GPU isosurface extraction
- Minor documentation updates
- Add support for position-location to
volume-valuecolor theme - Add support for color themes to
slicerepresentation - Improve/fix palette support in volume color themes
- Fix
Plane3D.projectPoint - Fix marking related
imagerendering issues- Handle pixels without a group
- Take fog into account
- MolViewSpec extension: Initial support for customizable representation parameters
- Quick Styles section reorganized
- UI color improvements (scrollbar contrast, toggle button hover color)
- Add
overrideWaterparam for entity-id color theme - Renames PDB-Dev to PDB-IHM and adjusts data source
- Fix vertex based themes for spheres shader
- Add volume dot representation
- Add volume-value size theme
- Sequence panel: Mark focused loci (bold+underline)
- Change modifier key behavior in Normal Mode (default = select only, Ctrl/Cmd = add to selection, Shift = extend last selected range)
- Handle Firefox's limit on vertex ids per draw (#1116)
- Fix behavior of
Vec3.makeRotation(out, a, b)whena ≈ -b
- Add
ModelWithCoordinatesdecorator transform. - Fix outlines on transparent background using illumination mode (#1364)
- Fix transparent depth texture artifacts using illumination mode
- Fix marking of consecutive gap elements (#876)
- Allow React 19 in dependencies
- Fix missing deflate header if
CompressionStreamis available - Fix is_iOS check for NodeJS
- Added PluginCommands.Camera.FocusObject
- Plugin state snapshot can have instructions to focus objects (PluginState.Snapshot.camera.focus)
- MolViewSpec extension: Support for multi-state files (animations)
- Fix units transform data not fully updated when structure child changes
- Fix
addIndexPairBondsquadratic runtime case - Use adjoint matrix to transform normals in shaders
- Fix resize handling in
tests/browser
- Fix iOS check when running on Node
- Fix artifacts when using xray shading with high xrayEdgeFalloff values
- Enable double rounded capping on tubular helices
- Fix single residue tubular helices not showing up
- Fix outlines on volume and surface reps that do not disappear (#1326)
- Add example
glb-export - Membrane orientation: Improve
isApplicablecheck and error handling (#1316) - Fix set fenceSync to null after deleteSync.
- Fix operator key-based
IndexPairBondsassignment- Don't add bonds twice
- Add
IndexPairs.bySameOperatorto avoid looping over all bonds for each unit
- Add
Structure.intraUnitBondMapping - Add more structure-based visuals to avoid too many (small) render-objects
structure-intra-bond,structure-ellipsoid-mesh,structure-element-point,structure-element-cross
- Upgrade to express v5 (#1311)
- Fix occupancy check using wrong index for inter-unit bond computation (@rxht, #1321)
- Fix transparent SSAO for image rendering, e.g., volumne slices (#1332)
- Fix bonds not shown with
ignoreHydrogenson (#1315)- Better handle mmCIF files with no entities defined by using
label_asym_id - Show bonds in water chains when
ignoreHydorgensVariantisnon-polar
- Better handle mmCIF files with no entities defined by using
- Add MembraneServer API, generating data to be consumed in the context of MolViewSpec
- Fix
StructConn.isExhaustivefor partial models (e.g., returned by the model server) - Refactor value swapping in molstar-math to fix SWC (Next.js) build (#1345)
- Fix transform data not updated when structure child changes
- Fix
PluginStateSnapshotManager.syncCurrentto work as expected on re-loaded states. - Fix do not compute implicit hydrogens when unit is explicitly protonated (#1257)
- ModelServer and VolumeServer: support for input files from Google Cloud Storage (gs://)
- Fix color of missing partial charges for SB partial charges extension
- Add SSAO support for transparent geometry
- Fix SSAO color not updating
- Improve blending of overlapping outlines from transparent & opaque geometries
- Default to
blendedtransparency on iOS due towboitnot being supported. - Fix direct-volume with fog off (and on with
dpoit) and transparent background on (#1286) - Fix missing pre-multiplied alpha for
blended&wboitwith no fog (#1284) - Fix backfaces visible using blended transparency on impostors (#1285)
- Fix StructureElement.Loci.isSubset() only considers common units (#1292)
- Fix
Scene.opacityAveragecalculation never 1 - Fix bloom in illumination mode
- Fix
findPredecessorIndexbug when repeating values - MolViewSpec: Support for transparency and custom properties
- MolViewSpec: MVP Support for geometrical primitives (mesh, lines, line, label, distance measurement)
- Mesoscale Explorer: Add support for 4-character PDB IDs (e.g., 8ZZC) in PDB-IHM/PDB-Dev loader
- Fix Sequence View in Safari 18
- Improve performance of
IndexPairBondsassignment when operator keys are available - ModelArchive QualityAssessment extension:
- Add support for ma_qa_metric_local_pairwise mmCIF category
- Add PAE plot component
- Add new AlphaFoldDB-PAE example app
- Add support for LAMMPS data and dump formats
- Remove extra anti-aliasing from text shader (fixes #1208 & #1306)
- Improve
resolutionMode(#1279)- Add
autothat picksscaledfor mobile devices andnativeelsewhere - Add
resolution-modeViewer GET param - Add
PluginConfig.General.ResolutionModeconfig item
- Add
- Add illumination mode
- Path-traced SSGI
- Automatic thickness (estimate)
- Base thickness as max(backface depth) - min(frontface depth)
- Per object density factor to adjust thickness
- Progressively trace samples to keep viewport interactive
- Toggle on/off by pressing "G"
illuminationViewer GET param
- Enables dXrayShaded define when rendering depth
- Fix handling of PDB files that have chains with same id separated by TER record (#1245)
- Sequence Panel: Improve visuals of unmodeled sequence positions (#1248)
- Fix no-compression xtc parser (#1258)
- Mol2 Reader: Fix mol2 status_bit read error (#1251)
- Fix shadows with multiple lights
- Fix impostor sphere interior normal when using orthographic projection
- Add
resolutionModeparameter toCanvas3DContextscaled, divides bydevicePixelRationative, no changes
- Add
CustomProperty.Context.errorContextto support reporting errors during loading of custom properties (#1254)- Use in MolViewSpec extension
- Mesoscale Explorer: fix color & style issues
- Remove use of deprecated SASS explicit color functions
- Allow "Components" section to display nested components created by "Apply Action > Selection".
- Add round-caps option on tubular alpha helices
- Fix missing Sequence UI update on state object removal (#1219)
- Improved prmtop format support (CTITLE, %COMMENT)
- Avoid calculating bonds for water units when
ignoreHydrogensis on - Add
Watertrait toUnit - Improve entity-id coloring for structures with multiple models from the same source (#1221)
- Wrap screenshot & image generation in a
Task - AlphaFold DB: Add BinaryCIF support when fetching data
- PDB-IHM/PDB-Dev: Add support for 4-character PDB IDs (e.g., 8ZZC)
- Fix polymer-gap visual coloring with cartoon theme
- Add formal-charge color theme (#328)
- Add more coloring options to cartoon theme
- Use
CompressionStreamBrowser API when available - Add
pdbx_structure_determination_methodologymmcif field andModelhelpers - Fix cartoon representation not updated when secondary structure changes
- Add Zhang-Skolnick secondary-structure assignment method which handles coarse-grained models (#49)
- Calculate bonds for coarse-grained models
- VolumeServer: Add
health-checkendpoint +healthCheckPathconfig prop to report service health - ModelServer: Add
health-checkendpoint +healthCheckPathconfig prop to report service health
- Separated postprocessing passes
- Take into account explicit hydrogens when computing hydrogen bonds
- Fix DoF with pixel ratios =! 1
- Fix DoF missing transparent depth
- Fix trackball pinch zoom and add pan
- Fix aromatic link rendering when
adjustCylinderLengthis true - Change trackball animate spin speed unit to radians per second
- Fix
mol-plugin-ui/skin/base/components/misc.scsssyntax to be in line with latest Sass syntax - Handle missing theme updates
- Fix trajectory-index color-theme not always updated (#896)
- Fix bond cylinders not updated on size-theme change with
adjustCylinderLengthenabled (#1215)
- Use
OES_texture_float_linearfor SSAO when available
- Clean
solidInteriortransparent cylinders - Create a transformer to deflate compressed data
- Adjust Quick Styles panel button labels
- Improve camera interpolation code (interpolate camera rotation instead of just position)
- Mesoscale Explorer
- Add
illustrativecoloring option - Press 'C' to toggle between center and zoom & center on click
- Add entities selection description
- Clicking a leaf node in the right panel tree will center each instance in turn
- Add measurement controls to right panel
- Mouse left click on label with snapshot key will load snapshot
- Mouse hover over label with protein name highlight entities with the same name
- Custom ViewportSnapshotDescription with custom MarkdowAnchor
- # other snapshots with a given key [...](#key)
- i highlight a protein with a given NAME [...](iNAME)
- g highlight a group with a given group type and group name [...](ggrouptype.groupname)
- h URLs with a given link [...](http...)
- Snapshot description panel window size and text can be resized and hidden with new icons
- Add styles controls to right panel
- Add viewport settings to left panel
- Add app info component to left panel with interactive tour and doc link
- Add
- Fixes SSAO edge artifacts (#1122)
- Add
reuseOcclusionparameter to multi-sample pass - Add
blurDepthBiasparameter to occlusion pass - Handle near clip in SSAO blur
- Add
- Support reading score from B-factor in pLDDT color theme
- Add Cel-shading support
celShadedgeometry parametercelStepsrenderer parameter
- Add the ability to customize the Snapshot Description component via
PluginUISpec.components.viewport.snapshotDescription - Add
doNotDisposeCanvas3DContextoption toPluginContext.dispose - Remove support for density data from edmaps.rcsb.org
- Fix State Snapshots export animation (#1140)
- Add depth of field (dof) postprocessing effect
- Add
SbNcbrTunnelsextension for for visualizing tunnels in molecular structures from ChannelsDB (more info in tunnels.md) - Fix edge case in minimizing RMSD transform computation
- Add emissive material support
- Add bloom post-processing
- MolViewSpec extension:
loadMVSsupportskeepCameraparameter - Return StateTransform selectors from measurements API (addDistance, addAngle, etc.)
- Refactor transparency rendering
- More uniform behavior for blended, wboit, dpoit
- Fix issues with text & image geometry
- Fix render-spheres example (#1100)
- Wrong step size in sphere geometry boundingSphere & groupmapping
- Handle empty
instanceGridin renderer & renderable
- Fix bond assignment from
IndexPairBonds- Can not always be cached in
ElementSetIntraBondCache - Wrong operator checks in
findPairBonds
- Can not always be cached in
- Fix SSAO artifacts (@corredD, #1082)
- Fix bumpiness artifacts (#1107, #1084)
- Add
VolumeTransformto translate/rotate a volume like in a structure superposition - Fix BinaryCIF encoder edge cases caused by re-encoding an existing BinaryCIF file
- Fix edge-case where width/height in InputObserver are not correct
- Fix transparency rendering fallback (#1058)
- Fix SSAO broken when
OES_texture_float_linearis unavailable - Add
normalOffsettoexternal-volumecolor theme- This can give results similar to pymol's surface_ramp_above_mode=1
- Add
rotationparameter to skybox background
- Fix BinaryCIF decoder edge cases. Fixes mmCIF model export from data provided by ModelServer.
- MolViewSpec extension: support for MVSX file format
- Revert "require WEBGL_depth_texture extension" & "remove renderbuffer use"
- Add Mesoscale Explorer app for investigating large systems
- [Breaking] Remove
cellpackextension (superseded by Mesoscale Explorer app) - [Breaking] Set minimal node.js version to 18
- [Breaking] Generalize rcsb/assembly-symmetry/ extension
- Move to assembly-symmetry/
- Remove RCSB specific dependencies and prefixes
- [Breaking] Require
WEBGL_depth_texturewebgl extension- Remove
renderbufferuse
- Remove
- [Breaking] Change build target to ES2018
- Custom builds only require ES6 for dependencies like immer.js
- [Breaking] Changed
createPluginUI- The function now takes a single
optionsargument - The caller must specify a
rendermethod that mounts the Mol* react component to DOM- A default
renderReact18method is provided, but needs to be imported separately - To support React 16 and 17,
ReactDOM.rendercan be passed
- A default
- The function now takes a single
- Improve
SetUtilsperformance using ES6 features - [Breaking] Reduce memory usage of
SymmetryOperator.ArrayMapping- Requires calling methods from instance
- [Breaking] Fix
mol-model/structure/model/properties/seconday-structure.tsfile name (#938) - [Breaking] Add
Canvas3DContextruntime props- Props: pixelScale, pickScale, transparency (blended, wboit, dpoit)
- Replaces instantiation-time attribs
- [Breaking] Change default compile target to ES2018
- [Breaking] Add culling & LOD support
- Cull per-object and per-instance
- Cull based on frustum and camera distance
- LOD visibility based on camera distance
- Special LOD mode for spheres with automatic levels
- Occlusion culling (only WebGL2)
- Hi-Z pass
- Cull based on previous frame's Hi-Z buffer
- Add stochastic/dithered transparency to fade overlapping LODs in and out
- Add "Automatic Detail" preset that shows surface/cartoon/ball & stick based on camera distance
- Add color interpolation to impostor cylinders
- MolViewSpec components are applicable only when the model has been loaded from MolViewSpec
- Add
snapshotKeyandtooltipparams to lociLabelRepresentation - Update
FocusLocibehavior to supportsnapshotKeyparam- Clicking a visual with
snapshotKeywill trigger that snapshot
- Clicking a visual with
- Render multiline loci label tooltips as Markdown
ParamDefinition.Textupdates:- Support
multilineinputs - Support
placeholderparameter - Support
disableInteractiveUpdatesto only trigger updates once the control loses focus
- Support
- Move dependencies related to the headless context from optional deps to optional peer deps
- Add new
cartoonvisuals to support atomic nucleotide base with sugar - Add
thicknessFactortocartoonrepresentation for scaling nucleotide block/ring/atomic-fill visuals - Use bonds from
_struct_connin mmCIF files that uselabel_seq_id - Fix measurement label
offsetZdefault: not needed whenscaleByRadiusis enbaled - Support for label rendering in HeadlessPluginContext
- MolViewSpec extension
- Support all X11 colors
- Support relative URIs
- CLI tools: mvs-validate, mvs-render, mvs-print-schema
- Labels applied in one node
- ModelServer SDF/MOL2 ligand export: fix atom indices when additional atoms are present
- Avoid showing (and calculating) inter-unit bonds for huge structures
- Fixed
DragOverlayon WebKit/Safari browsers
- Fix
react-markdowndependency
- Fix
State.tryGetCellData(return type & data check) - Don't change camera.target unless flyMode or pointerLock are enabled
- Handle empty CIF files
- Snapshot improvements:
- Add
keyproperty - Ability to existing snapshot name, key, and description
- Support markdown in descriptions (ignores all HTML tags)
- Ability to link to snapshots by key from descriptions
- Separate UI control showing description of the current snapshot
- Add
- Do not activate drag overlay for non-file content
- Add
structure-element-spherevisual tospacefillrepresentation - Fix missing
awaitinHeadlessPluginContext.saveStateSnapshot - Added support for providing custom sequence viewers to the plugin spec
- MolViewSpec extension (MVS)
- Add URL parameters
mvs-url,mvs-data,mvs-format - Add drag&drop for
.mvsjfiles - Fix
bumpinessscaling withignoreLightenabled - Add
transforms&labelparams toShapeFromPly - Optimize
LociSelectManager.selectOnlyto avoid superfluous loci set operations - Dispose of viewer on
unloadevent to aid GC
- Fix handling of PDB files with insertion codes (#945)
- Fix de-/saturate of colors with no hue
- Improve
distinctColorsfunction- Add
sortandsampleCountFactorparameters - Fix clustering issues
- Add
- Add
clipPrimitiveoption to spheres geometry, clipping whole spheres instead of cutting them - Add
DragAndDropManager - Add
optionssupport for default bond labels
- Add
PluginContext.initializedpromise & support for it in thePluginUI component. - Fix undesired interaction between settings panel and the panel on the right.
- Add ability to customize server parameters for
RCSBAssemblySymmetry.
- Do not call
updateFocusReprif defaultStructureFocusRepresentationisn't present. - Treat "tap" as a click in
InputObserver - ModelServer ligand queries: fix atom count reported by SDF/MOL/MOL2 export
- CCD extension: Make visuals for aromatic bonds configurable
- Add optional
file?: CifFiletoMmcifFormat.data - Add support for webgl extensions
WEBGL_clip_cull_distanceEXT_conservative_depthWEBGL_stencil_texturingEXT_clip_control
- Add
MultiSampleParams.reduceFlicker(to be able to switch it off) - Add
alphaThicknessparameter to adjust alpha of spheres for radius - Ability to hide "right" panel from simplified viewport controls
- Add
blockIndexparameter to TrajectoryFromMmCif - Fix bounding sphere calculation for "element-like" visuals
- Fix RCSB PDB validation report URL
- Add sharpening postprocessing option
- Take pixel-ratio into account for outline scale
- Gracefully handle missing HTMLImageElement
- Fix pixel-ratio changes not applied to all render passes
- Add some elements support for
guessElementSymbolStringfunction - Faster bounding rectangle calculation for imposter spheres
- Allow toggling of hydrogens as part of
LabelTextVisual
- Fix imposter spheres not updating, e.g. in trajectories (broke in v3.38.0)
- Don't rely solely on
chem_comp_atomwhen detecting CCD files (#877) - Actually support non-physical keys in
Bindings.Trigger.code
- Fix pixel-scale not updated in SSAO pass
- Fix display issue with SIFTS mapping
- Support non-physical keys in
Bindings.Trigger.code - Update
getStateSnapshotto only overwrite current snapshot if it was created automatically - Fix distinct palette's
getSamplesinfinite loop - Add 'NH2', 'FOR', 'FMT' to
CommonProteinCaps - Add
openedevent toPluginStateSnapshotManager - Properly switch-off fog
- Add
approximateoption for spheres rendering - Reduce
Spheresmemory usage- Derive mapping from VertexID
- Pull position and group from texture
- Add
Eulermath primitive - Add stride option to element sphere & point visuals
- Add
disabledExtensionsfield to default viewer's options - Add
LRUCache.remove - Add 'Chain Instance' and 'Uniform' options for 'Carbon Color' param (in Color Theme: Element Symbol)
- Fix issues with wboit/dpoit in large scenes
- Fix lines, text, points rendering (broken in v3.37.0)
- Add
invertedoption toxrayShadedparameter - Model-export extension: Add ability to set a file name for structures
- Add
contextHashtoSizeTheme - Add mipmap-based blur for image backgrounds
- Allow parsing of CCD ligand files
- Add dedicated wwPDB CCD extension to align and visualize ideal & model CCD coordinates
- Make operators in
IndexPairBondsa directed property - Remove erroneous bounding-box overlap test in
Structure.eachUnitPair - Fix
EdgeBuilder.addNextEdgefor loop edges - Optimize inter unit bond compute
- Ensure consistent state for volume representation (#210)
- Improve SSAO for thin geometry (e.g. lines)
- Add snapshot support for structure selections
- Add
nucleicProfileparameter to cartoon representation - Add
cartoontheme with separate colorings for for mainchain and sidechain visuals
- Enable odd dash count (1,3,5)
- Add principal axes spec and fix edge cases
- Add a uniform color theme for NtC tube that still paints residue and segment dividers in a different color
- Mesh exporter improvements
- Support points & lines in glTF export
- Set alphaMode and doubleSided in glTF export
- Fix flipped cylinder caps
- Fix bond assignments
struct_connrecords referencing waters - Add StructConn extension providing functions for inspecting struct_conns
- Fix
PluginState.setSnapshottriggering unnecessary state updates - Fix an edge case in the
mol-state'sStatewhen trying to apply a transform to an existing Null object - Add
SbNcbrPartialChargesextension for coloring and labeling atoms and residues by partial atomic charges- uses custom mmcif categories
_sb_ncbr_partial_atomic_charges_metaand_sb_ncbr_partial_atomic_charges(more info in README.md)
- uses custom mmcif categories
- Parse HEADER record when reading PDB file
- Support
ignoreHydrogensin interactions representation - Add hydroxyproline (HYP) commonly present in collagen molecules to the list of amino acids
- Fix assemblies for Archive PDB files (do not generate unique
label_asym_idifREMARK 350is present) - Add additional functions to
core.mathinmol-scriptcantorPairing,sortedCantorPairing,invertCantorPairing,trunc,sign
- Avoid
renderMarkingDepthfor fully transparent renderables - Remove
camera.fardoubling workaround - Add
ModifiersKeys.areNonehelper function - Do not render NtC tube segments unless all required atoms are present in the structure
- Fix rendering issues caused by VAO reuse
- Add "Zoom All", "Orient Axes", "Reset Axes" buttons to the "Reset Camera" button
- Improve trackball move-state handling when key bindings use modifiers
- Fix rendering with very small viewport and SSAO enabled
- Fix
.getAllLocifor structure representations withstructure.child - Fix
readAllLinesAsyncrefering to dom length property - Make mol-util/file-info node compatible
- Add
eachLocationto representation/visual interface
- Handle resizes of viewer element even when window remains the same size
- Throttle canvas resize events
- Selection toggle buttons hidden if selection mode is off
- Camera focus loci bindings allow reset on click-away to be overridden
- Input/controls improvements
- Move or fly around the scene using keys
- Pointer lock to look around scene
- Toggle spin/rock animation using keys
- Apply bumpiness as lightness variation with
ignoreLight - Remove
JSXreference fromloci-labels.ts - Fix overpaint/transparency/substance smoothing not updated when geometry changes
- Fix camera project/unproject when using offset viewport
- Add support for loading all blocks from a mmcif file as a trajectory
- Add
Frustum3DandPlane3Dmath primitives - Include
occupancyandB_iso_or_equivwhen creatingConformationfromModel - Remove LazyImports (introduced in v3.31.1)
- Avoid rendering of fully transparent renderables
- Add occlusion color parameter
- Fix issue with outlines and orthographic camera
- Reduce over-blurring occlusion at larger view distances
- Fix occlusion artefact with non-canvas viewport and pixel-ratio > 1
- Update nodejs-shims conditionals to handle polyfilled document object in NodeJS environment.
- Ensure marking edges are at least one pixel wide
- Add exposure parameter to renderer
- Only trigger marking when mouse is directly over canvas
- Fix blurry occlusion in screenshots
- [Breaking] Add
setFSModuletomol-util/data-sourceinstead of trying to trick WebPack
- Allow link cylinder/line
dashCountset to '0' - Stop animation loop when disposing
PluginContext(thanks @gfrn for identifying the issue)
- Fix impostor bond visuals not correctly updating on
sizeFactorchanges - Fix degenerate case in PCA
- Fix near clipping avoidance in impostor shaders
- Update
fsimport indata-source.ts
- Fix exit code of volume pack executable (pack.ts). Now exits with non-0 status when an error happens
- Remove pca transform from components ui focus (too distracting)
- Fix artefacts with opaque outlines behind transparent objects
- Fix polymer trace visual not updating
- Fix use of
WEBGL_provoking_vertex
- Improve Component camera focus based on the PCA of the structure and the following rules:
- The first residue should be in first quadrant if there is only one chain
- The average position of the residues of the first chain should be in the first quadrant if there is more than one chain
- Add
HeadlessPluginContextandHeadlessScreenshotHelperto be used in Node.js - Add example
image-renderer - Fix wrong offset when rendering text with orthographic projection
- Update camera/handle helper when
devicePixelRatiochanges - Add various options to customize the axes camera-helper
- Fix issue with texture-mesh color smoothing when changing themes
- Add fast boundary helper and corresponding unit trait
- Add Observable for Canvas3D commits
- Improve
Dnatcoextension- Factor out common code in
Dnatcoextension - Add
NtC tubevisual. Applicable for structures with NtC annotation - [Breaking] Rename
DnatcoConfalPyramidstoDnatcoNtCs
- Factor out common code in
- Improve boundary calculation performance
- Add option to create & include images in state snapshots
- Fix SSAO artefacts with high bias values
- Fix SSAO resolution scale parameter handling
- Improve outlines, visually more stable at different view distances
meshesextension: Fixed a bug in mesh visualization (show backfaces when opacity < 1)- Add color quick select control to Volume controls
- Fix
dropFilesbug - Fix some cyclic imports and reduce the use of const enums. This should make it easier to use the library with the
isolatedModules: trueTS config. - Fix
dropFilesbug (#679) - Add
input type='color'picker toCombinedColorControl - Set
ParameterMappingControldisabled when state is updating - Performance tweaks
- Update clip
definesonly when changed - Check for identity in structure/unit areEqual methods
- Avoid cloning of structure representation parameters
- Make SymmetryOperator.createMapping monomorphic
- Improve bonding-sphere calculation
- Defer Scene properties calculation (markerAverage, opacityAverage, hasOpaque)
- Improve checks in in UnitsRepresentation setVisualState
- Update clip
- Add StructureElement.Loci.forEachLocation
- Add RepresentationRegistry.clear and ThemeRegistry.clear
- Add generic Loci support for overpaint, substance, clipping themes
- Add
.getCenterand.centertoCamera - Add support to dim unmarked groups
- Add support for marker edge strength
- Show histogram in direct volume control point settings
- Add
solidInteriorparameter to sphere/cylinder impostors - [Breaking] Tweak
ignoreHydrogensnon-polar handling (introduced in 3.27.0) - Add
meshesandvolumes-and-segmentationsextensions- See https://molstarvolseg.ncbr.muni.cz/ for more info
- Fix missing support for info in
ParamDefinition.Converted - Add support for multi-visual volume representations
- Improve volume isosurface bounding-sphere
- Add basic volume segmentation support to core
- Add
Volume.Segmentmodel - Add
Segmentationcustom volume property - Add
SegmentRepresentationrepresentation - Add
volume-segmentcolor theme
- Add
- Fix GPU marching cubes failing for large meshes with webgl2 (due to use of float16)
- Add an
includeTransparentparameter to hide/show outlines of components that are transparent - Fix 'once' for animations of systems with many frames
- Better guard against issue (black fringes) with bumpiness in impostors
- Improve impostor shaders
- Fix sphere near-clipping with orthographic projection
- Fix cylinder near-clipping
- Add interior cylinder caps
- Add per-pixel object clipping
- Fix
QualityAssessmentassignment bug for structures with different auth vs label sequence numbering - Refresh
ApplyActionControl's param definition when toggling expanded state - Fix
struct_connbond assignment for ions - Ability to show only polar hydrogens
- Support for
powerPreferencewebgl attribute. AddPluginConfig.General.PowerPreferenceandpower-preferenceViewer GET param. - Excluded common protein caps
NMEandACEfrom the ligand selection query - Add screen-space shadow post-processing effect
- Add "Structure Molecular Surface" visual
- Add
external-volumetheme (coloring of arbitrary geometries by user-selected volume)
- Fix edge-case in
Structure.eachUnitPairwith single-element units - Fix 'auto' structure-quality for coarse models
- Fix handling of gzipped assets (reverts #615)
- Make
PluginContext.initContainercheckered canvas background optional - Store URL of downloaded assets to detect zip/gzip based on extension (#615)
- Add optional
operator.key; can be referenced inIndexPairBonds - Add overpaint/transparency/substance theme strength to representations
- Fix viewport color for transparent background
- Add
PluginContext.initContainer/mount/unmountmethods; these should make it easier to reuse a plugin context with both custom and built-in UI - Add
PluginContext.canvas3dInitialized createPluginUInow resolves after the 3d canvas has been initialized- Change EM Volume Streaming default from
Whole StructuretoAuto
- Replace
VolumeIsosurfaceParams.pickingGranularityparam withVolume.PickingGranuality
- Add
VolumeIsosurfaceParams.pickingGranularityparam - Prevent component controls collapsing when option is selected
- [Breaking] Rename the
model-indexcolor theme totrajectory-index - Add a new
model-indexcolor theme that uniquely colors each loaded model - Add the new
model-indexandstructure-indexcolor themes as an option for the carbon color in theelement-symbolandilustrativecolor themes - Add
structure-indexcolor theme that uniquely colors each root structure - Add
nearestmethod toLookup3D - Add mipmap-based blur for skybox backgrounds
- Fix "empty textures" error on empty canvas
- Optimize BinaryCIF integer packing encoder
- Fix dual depth peeling when post-processing is off or when rendering direct-volumes
- Add
cameraClipping.minNearparameter - Fix black artifacts on specular highlights with transparent background
- Integration of Dual depth peeling - OIT method
- Stereo camera improvements
- Fix param updates not applied
- Better param ranges and description
- Add timer.mark for left/right camera
- [Fix] Clone
Canvas3DParamswhen creating aCanvas3Dinstance to prevent shared state between multiple instances - Add
includeResidueTestoption toalignAndSuperposeWithSIFTSMapping - Add
parentDisplayparam for interactions representation. - [Experimental] Add support for PyMOL, VMD, and Jmol atom expressions in selection scripts
- Support for
failIfMajorPerformanceCaveatwebgl attribute. AddPluginConfig.General.AllowMajorPerformanceCaveatandallow-major-performance-caveatViewer GET param. - Fix handling of PDB TER records (#549)
- Add support for getting multiple loci from a representation (
.getAllLoci()) - Add
keyproperty to intra- and inter-bonds for referencing source data - Fix click event triggered after move
- Support
globalColorParamsandglobalSymmetryParamsin common representation params - Support
labelparameter inViewer.loadStructureFromUrl - Fix
ViewportHelpContentMouse Controls section
- Fix wboit in Safari >=15 (add missing depth renderbuffer to wboit pass)
- Add 'Around Camera' option to Volume streaming
- Avoid queuing more than one update in Volume streaming
- Expose inter-bonds compute params in structure
- Improve performance of inter/intra-bonds compute
- Fix defaultAttribs handling in Canvas3DContext.fromCanvas
- Confal pyramids extension improvements
- Add custom labels to Confal pyramids
- Improve naming of some internal types in Confal pyramids extension coordinate
- Add example mmCIF file with categories necessary to display Confal pyramids
- Change the lookup logic of NtC steps from residues
- Add support for download of gzipped files
- Don't filter IndexPairBonds by element-based rules in MOL/SDF and MOL2 (without symmetry) models
- Fix Glycam Saccharide Names used by default
- Fix GPU surfaces rendering in Safari with WebGL2
- Add
fov(Field of View) Canvas3D parameter - Add
sceneRadiusFactorCanvas3D parameter - Add background pass (skybox, image, horizontal/radial gradient)
- Set simple-settings presets via
PluginConfig.Background.Styles - Example presets in new backgrounds extension
- Load skybox/image from URL or File (saved in session)
- Opacity, saturation, lightness controls for skybox/image
- Coverage (viewport or canvas) controls for image/gradient
- Set simple-settings presets via
- [Breaking]
AssetManagerneeds to be passed to various graphics related classes - Fix SSAO renderable initialization
- Reduce number of webgl state changes
- Add
viewportandscissorto state object - Add
hasOpaqueto scene object
- Add
- Handle edge cases where some renderables would not get (correctly) rendered
- Fix text background rendering for opaque text
- Fix helper scenes not shown when rendering directly to draw target
- Fix
CustomElementPropertycoloring not working
- Fix: only update camera state if manualReset is off (#494)
- Improve handling principal axes of points in a plane
- Add 'material' annotation support for textures
- More effort to avoid using
flatqualifier in shaders: adddVaryingGroup - Enable
immediateUpdatefor iso level in isosurface and volume streaming controls - Add support to download CCD from configurable URL
- Fix plugin behavior dispose logic to correctly unsubscribe observables.
- Add
colorMarkeroption to Renderer. This disables the highlight and select marker at a shader level for faster rendering of large scenes in some cases. - Bind shared textures only once per pass, not for each render item
- Fix missing 'material' annotation for some uniforms, causing unnecessary uniform updates
- Remove use of
isnanin impostor shaders, not needed and causing slowdown - Avoid using
flatqualifier in shaders, causing slowdown - Improve CellPack's
adjustStyleoption (disablecolorMarker, set component options, enable marking w/o ghost) - Scan all entities when looking for
struct_connentries (fixes issue when the samelabel_asym_idis used in more than one entity)
- Add
instanceGranularityoption for marker, transparency, clipping, overpaint, substance data to save memory - CellPack extension tweaks
- Use instancing to create DNA/RNA curves to save memory
- Enable
instanceGranularityby default - Add
adjustStyleoption to LoadCellPackModel action (stylized, no multi-sample, no far clipping, chain picking)
- Structure Superposition now respects pivot's coordinate system
- Fix superfluous shader varying
- Improve use of gl_VertexID when possible
- Fix groupCount when updating TextureMesh-based visuals
- Add support for Glycam saccharide names
- Add
PluginConfig.Viewport.ShowTrajectoryControlsconfig option
- Fix missing
super.componentWillUnmount()calls (@simeonborko) - Fix missing
uGroupCountupdate for visuals - Fix missing aromatic bond display
- Improve picking by using drawbuffers (when available) to reduce number of drawcalls
- GPU timing support
- Add
timing-modeViewer GET param - Add support for webgl timer queries
- Add timer marks around GPU render & compute operations
- Add
- Volume Server CIF: Add check that a data block contains volume data before parsing
- Fix
Scene.clearnot clearing primitives & volumes arrays (@JonStargaryen) - Fix rendering volumes when wboit is switched off and postprocessing is enabled
- Fix
Scene.opacityAveragenot taking xray shaded into account
- Fix issues with marking camera/handle helper (#433)
- Fix issues with array uniforms when running with headless-gl
- Fix Polymer Chain Instance coloring
- Improve performance of scene marker/opacity average calculation
- Add support for outlines around transparent objects
- Improve per-group transparency when wboit is switched off
- Improve
ColorThemetyping withColorTypegeneric.- Defaults to
ColorTypeLocation - Set when using
ColorTypeDirectorColorTypeGrid
- Defaults to
- Fix case handling of
struct_confmmCIF enumeration field (#425) - Fix
allowTransparentBackfacesfor per-group transparency - Fix
FormatRegistry.isApplicablereturning true for unregistered formats - Fix: handle building of
GridLookup3Dwith zero cell size - Fix
ignoreLightfor direct-volume rendering with webgl1 - Fix (non-black) outlines when using transparent background
- Fix
xrayShadedfor texture-mesh geometries - [Breaking] Change
allowTransparentBackfacestotransparentBackfaceswith optionsoff,on,opaque. This was only added in 3.6.0, so allowing a breaking change here.off: don't show (default)on: show with transparencyopaque: show fully opaque
- Add option to disable file drop overlay.
- ModelServer ligand queries: fixes for alternate locations, additional atoms & UNL ligand
- React 18 friendly
useBehaviorhook.
- Fix React18 related UI regressions.
- Check that model and coordinates have same element count when creating a trajectory
- Fix aromatic rings assignment: do not mix flags and planarity test
- Improve bonds assignment of coarse grained models: check for IndexPairBonds and exhaustive StructConn
- Fix unit mapping in bondedAtomicPairs MolScript query
- Improve pdb parsing: handle non unique atom and chain names (fixes #156)
- Fix volume streaming for entries with multiple contour lists
- Add
allowTransparentBackfacesparameter to support double-sided rendering of transparent geometries - Fix handling of case insensitive mmCIF enumeration fields (including entity.type)
- Fix
disable-wboitViewer GET param - Add support for React 18.
- Used by importing
createPluginUIfrommol-plugin-ui/react18; - In Mol* 4.0, React 18 will become the default option.
- Used by importing
- Fix issues with bounding-sphere & color-smoothing (mostly for small geometries)
- Support BCIF => CIF conversion in
cif2bcifCLI tool
- Fix handling of mmcif with empty
label_*fields - Improve saccharide detection (compare against list from CCD)
- Fix legend label of hydrophobicity color theme
- Add
LoadTrajectoryaction - Add
CustomImportControlsto left panel - Add Zenodo import extension (load structures, trajectories, volumes, and zip files)
- Fix loading of some compressed files within sessions
- Fix wrong element assignment for atoms with Charmm ion names
- Fix handling of empty symmetry cell data
- Add support for
trrandnctrajcoordinates files - Add support for
prmtopandtoptopology files
- Fix issue with unit boundary reuse (do at visual level instead)
- Add option to ignore ions for inter-unit bond computation
- Fix parsing contour-level from emdb v3 header files
- Fix invalid CSS (#376)
- Fix "texture not renderable" & "texture not bound" warnings (#319)
- Fix visual for bonds between two aromatic rings
- Fix visual for delocalized bonds (parsed from mmcif and mol2)
- Fix ring computation algorithm
- Add
UnitResonanceproperty with info about delocalized triplets - Resolve marking in main renderer loop to improve overall performance
- Use
throttleTimeinstead ofdebounceTimein sequence viewer for better responsiveness - Change line geometry default
scaleFactorto 2 (3 is too big after fixing line rendering) - Trajectory animation performance improvements
- Reuse
Model.CoarseGrainedfor coordinate trajectories - Avoid calculating
InterUnitBondswhenStructure.parentones are empty - Reuse unit boundary if sphere has not changed too much
- Don't show 'inter-bond' and 'element-cross' visuals in line representations of polymerAndLigand preset
- Reuse
- Fix additional mononucleotides detected as polymer components
- Fix and improve
canRemaphandling inIntraUnitBonds - Reuse occlusion for secondary passes during multi-sampling
- Check if marking passes are needed before doing them
- Add
resolutionScaleparameter to allow trading quality of occlusion for performance
- Rename "best database mapping" to "SIFTS Mapping"
- Add schema and export support for
atom_site.pdbx_sifts_xref_*fields - Add schema export support for
atom_site.pdbx_label_indexfield - Add
traceOnlyparameter to chain/UniProt-based structure alignment - Store
IndexPairBondsas a dynamic property.
- Fix
xrayShaded&ignoreLightparams not working at the same time - Add
ignoreLightto component params - Tweaks for cleaner default representation style
- Cartoon: use
nucleotide-ringinstead ofnucleotide-block - Focus: use
xrayShadedinstead of opacity; adjust target size; don't show non-covalent interactions twice
- Cartoon: use
- Fix representation preset side effects (changing post-processing parameters, see #363)
- Add Quick Styles panel (default, illustrative, stylized)
- Fix exported structure missing secondary-structure categories (#364)
- Fix volume streaming error message: distinguish between missing data and server error (#364)
- Fix color smoothing of elongated structures (by fixing
Sphere.expandfor spheres with highly directional extrema) - Fix entity label not displayed when multiple instances of the same entity are highlighted
- Fix empty elements created in
StructureElement.Loci.extendToAllInstances - Measurement options tweaks (allow larger
textSize; makecustomTextessential) - Fix visual visibility sync edge case when changing state snapshots
- Fix marking pass not working with
transparentBackground - Fix pdbe xray maps url not https
- Fix entity-id color theme broken for non-IHM models
- Improve/fix marking of
InteractionsInterUnitVisual(mark when all contact-feature members are given) - Add missing "entity-id" and "enity-source" options for carbon coloring to "element-symbol" color theme
- Fix VolumeServer/query CLI
- Support automatic iso-value adjustment for VolumeServer data in
Viewer.loadVolumeFromUrl - Emit drag event whenever started within viewport (not only for non-empty loci)
- Assembly handling tweaks:
- Do not include suffix for "identity assembly operators"
- Do not include assembly-related categories to export if the structure was composed from an assembly
- Special case for
structAsymMapif Mol* asym id operator mapping is present
- Support for opening ZIP files with multiple entries
- Add Model Export extension
- Bugfix: Automatically treat empty string as "non-present" value in BinaryCIF writer.
- Fix coarse model support in entity-id color theme
- Fix marking of carbohydrate visuals (whole chain could get marked instead of single residue)
- Add custom colors to "element-symbol", "molecule-type", "residue-name", and "secondary-structure" themes
- Support/bugfixes for
atom_site.pdbx_sifts_xrefcategories - Improve/fix marking of
InteractionsIntraUnitVisual(mark when all contact-feature members are given)
- Fix
getOperatorsForIndex - Pass animation info (current frame & count) to state animations
- Fix camera stutter for "camera spin" animation
- Add formal charge parsing support for MOL/SDF files (thanks @ptourlas)
- [Breaking] Cleaner looking
MembraneOrientationVisualsdefaults - [Breaking] Add rock animation to trackball controls
- Add
animatetoTrackballControlsParams, removespinandspinSpeed - Add
animatetoSimpleSettingsParams, removespin
- Add
- Add "camera rock" state animation
- Add support for custom colors to "molecule-type" theme
- [Breaking] Add style parameter to "illustrative" color theme
- Defaults to "entity-id" style instead of "chain-id"
- Add "illustrative" representation preset
- Add PDBj as a
pdb-provideroption - 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
keyfield 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
PluginFeatureDetectionand disable WBOIT in Safari 15. - Add
disable-wboitViewer GET param - Add
prefer-webgl1Viewer 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
directcolor 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
physicalinternally 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/objectsandRendererParams.clipwere removed
- Enable temporal multi-sampling by default
- Fix flickering during marking with camera at rest
- Enable
aromaticBondsin 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-archiveGET parameter for Viewer appViewer.loadModelArchivemethod
- Improve support for loading AlphaFold structures
- Automatic coloring by pLDDT
- AlphaFold DB option in DownloadStructure action
afdbGET parameter for Viewer appViewer.loadAlphaFoldDbmethod
- 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
createPluginUItomol-plugin-ui- Support
onBeforeUIRenderto make sure initial UI works with custom presets and similar features.
- Support
- [Breaking] Removed
createPluginandcreatePluginAsyncfrommol-plugin-ui- Please use
createPluginUIinstead
- 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
labelrepresentation 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
reactandreact-domtopeerDependencies. 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.renderStyleandRendererParams.stylewere removed
- Add substance theme with per-group material rendering properties
StructureComponentManager.Optionsstate saving supportParamDefinition.Group.presetssupport
- 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.loadTrajectoryto support loading "composed" trajectories (e.g. from gro + xtc) - Fix: handle parent in Structure.remapModel
- Add
roundedandsquarehelix 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,aromaticDashCountparams) - [Breaking] Change
adjustCylinderLengthdefault 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
preferAtomsoption to SelectLoci/HighlightLoci behaviors - Make the implicit atoms of bond visuals pickable
- Add
preferAtomPixelPaddingto Canvas3dInteractionHelper
- Add
- Add points & crosses visuals to Line representation
- Add
pickPaddingconfig option (look around in case target pixel is empty) - Add
multipleBondsparam to bond visuals with options: off, symmetric, offset - Fix
argparseconfig 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&pointEdgeBleachparams bypointStyle(square, circle, fuzzy) - Set
pointSizeAttenuationto false by default - Set
sizeThemetouniformby default
- Was unusable with
- Add
markerPriorityoption to Renderer (useful in combination with edges of marking pass) - Add support support for
chem_comp_bondandstruct_conncategories (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
Intervalis 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
invertCantorPairinghelper function - Add
Meshprocessing helper.smoothEdges - Smooth border of molecular-surface with
includeParentenabled - Hide
includeParentoption from gaussian-surface visuals (not particularly useful) - Improved
StructureElement.Loci.sizeperformance (for marking large cellpack models) - Fix new
TransformDataissues (camera/bounding helper not showing up) - Improve marking performance (avoid superfluous calls to
StructureElement.Loci.isWholeStructure)
- Fix
TransformDataissues #133 - Fix
mol-scriptquery 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
dynamicBondstoStructureprops (force re-calc on model change)- Expose as optional param in root structure transform helper
- Add overpaint support to geometry exporters
InputObserverimprovements- normalize wheel speed across browsers/platforms
- support Safari gestures (used by
TrackballControls) PinchInput.fractionDeltaand use it inTrackballControls
- Add
tubularHelicesparameter to Cartoon representation - Add
SdfFormatand 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-exportextension. - Fix
includeParentsupport for multi-instance bond visuals. - Add
operatorLoci granularity, selecting everything with the same operator name. - Prefer
_label_seq_idfields in secondary structure assignment. - Support new EMDB API (https://www.ebi.ac.uk/emdb/api/entry/map/[EMBD-ID]) for EM volume contour levels.
Canvas3Dtweaks:- Update
forceDrawlogic. - Ensure the scene is re-rendered when viewport size changes.
- Support
noDrawmode 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
volumeIndexinViewer.loadVolumeFromUrlto better support Volume Server inputs. - Support in-place reordering for trajectory
Frame.x/y/zarrays 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-exportextension. - 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:
IndexPairBondsfor 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
Canvas3DContexttoPluginContext.fromCanvas. - Relative frame support for
Canvas3Dviewport. - 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
Canvas3Dviewport. - Support for full pausing (no draw) rendering:
Canvas3D.pause(true). - Add
MeshBuilder.addMesh. - Add
Torusprimitive. - Lazy volume loading support.
- [Breaking]
Viewer.loadVolumeFromUrlsignature change.loadVolumeFromUrl(url, format, isBinary, isovalues, entryId)=>loadVolumeFromUrl({ url, format, isBinary }, isovalues, { entryId, isLazy })
- Add
TextureMeshsupport togeo-exportextension.
- [WIP] Mesh export extension
Structure.eachAtomicHierarchyElement(#161)- Fixed reading multi-line values in SDF format
- Fixed Measurements UI labels (#166)
- Add support for
ColorTheme.palettedesigned for providing gradient-like coloring. - [Breaking] The
zipfunction is now asynchronous and expects aRuntimeContext. Also addedZip()returning aTask. - [Breaking] Add
CubeGridFormatinalpha-orbitalsextension.
- 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.