Releases: NASA-AMMOS/MMGIS
MMGIS v4.2.34
4.2.34
April 2, 2026
Summary
This release introduces beta CesiumJS integration as an alternative 3D globe renderer, a new Plugin Components system for extensible UI behaviors, and a Playwright-based end-to-end testing framework. The DrawTool gains DynamicExtent for viewport-based feature loading and a new Point template type. AnimationTool receives multiple improvements and STAC URL fixes. TimeControl is promoted to core infrastructure under Basics. New API callbacks and events expand extensibility (newActiveFeature, layersToolHeaderStateChange, madeLegendTool, viewer_open). Mobile mode sees significant improvements including configurable initial zoom, layout fixes, and a responsive login page. Security hardening includes adjacent servers placed behind authentication, npm audit fixes, and multiple vulnerability patches. The codebase is cleaned up with D3 largely removed, legacy scripts and files pruned, and an improved Dockerfile. Two new open-source components are released: AnalysisTool and OperationsClock.
Added
- Beta CesiumJS integration as an alternative 3D globe renderer (#810)
- Plugin Components system for lightweight, extensible UI behaviors (#849)
- AnalysisTool and OperationsClock released as open-source components (#904)
- Playwright end-to-end testing framework (#216)
- DrawTool DynamicExtent for viewport-based feature loading (#852)
- DrawTool Template for Point type (#843)
- DrawTool endpoint support via long-term tokens (#841)
- TiTiler layer support in Cesium Globe (#898)
- External MMGIS STAC catalog linking (#863)
- viewer_open as a new layer Kind (#855)
- Configurable initial zoom for mobile mode (#866)
- Latitude/Longitude option in coordinates display (#905)
- Callback for layersToolHeaderStateChange (#846)
- Callback for madeLegendTool (#858)
- Additional newActiveFeature events (#845)
- Font types as webpack assets (#874)
- AGENTS.md and spec-kit for AI development (#828)
- .gitattributes file (#901)
Changed
- Moved TimeControl from Ancillary/ to Basics/TimeControl_/ to reflect its role as core infrastructure (#835)
- Breaking change for external plugins: Import path changed from 'Ancillary/TimeControl' to 'Basics/TimeControl_/TimeControl'
- Removed D3 dependency (mostly) (#826)
- Improved Dockerfile with multi-stage build and reduced image size (#868)
- Upgraded all adjacent servers and sample ENVs (#897)
- Updated time and timetype metaconfigurations (#891)
- Removed redundant urlencoded middleware (#888)
- AnimationTool improvements including playback and UI enhancements (#856)
- Updated GitHub workflow: docker-build.yml (#917)
- Updated README.md (#913)
Fixed
- LegendTool overflow (#848)
- Viewer and globe splitter icons (#850)
- Time and Refresh Interval enabled layers incorrectly set to layernotfound (#853)
- AnimationTool STAC URLs (#860, #861, #867)
- Return value for layersToolHeaderStateChange event (#862)
- Bug in viewer_open kind (#865, #882)
- titiler-pgstac performance issue (#870)
- DynamicExtent + Threshold layers not properly updating (#871)
- Multiple mobile mode layout and interaction issues (#875, #878)
- Login page layout on smaller screens (#883)
- Initial Start and End Time configuration parameters (#886)
- Time Type = Local and Refresh Interval not working together (#889)
- queryTilesetTimes not updating on layer toggles (#892)
- DrawTool bugs: template field naming, not-null advanced filters (#895)
- DrawTool Templated Point origin point getting stuck (#909)
- updateClampedRasterForLayer is not a function error (#907)
- Image loading in OpenSeadragon (#899)
- Missions middleware (#914)
- Hover Feature Label and Layer Tags wrongly assigned (#915)
- Critical security vulnerabilities (#880, #884)
Removed
- Legacy jQuery/Materialize configure page and /configure-legacy route (#830)
- database/ directory containing old Docker Postgres migration scripts (#830)
- src/essence/Tools/_OLD/ directory (#830)
- Dockerfile.legacy (#830)
Security
What's Changed
- #810 Beta Cesium Integration by @tariqksoliman in #827
- Agents.md and spec-kit for AI development by @tariqksoliman in #828
- Update CHANGELOG.md for 4.1.0 by @tariqksoliman in #829
- #830 Remove outdated scripts and files by @tariqksoliman in #831
- #826 Remove D3 (mostly) by @tariqksoliman in #833
- #832 npm audit fix (unforced) by @tariqksoliman in #834
- #835 Move TimeControl to Basics by @tariqksoliman in #836
- #216 Playwright Testing Framework by @tariqksoliman in #837
- #841 Support Draw Endpoints via Longtermtokens by @tariqksoliman in #842
- #843 DrawTool - Template for Point Type by @tariqksoliman in #844
- Fix LegendTool overflow by @ac-61 in #848
- Fix viewer and globe splitter icons by @ac-61 in #850
- Add more events for newActiveFeature by @ac-61 in #845
- Add new callback for layersToolHeaderStateChange by @ac-61 in #846
- #853 If Time and Refresh Interval Enabled, do not set to layernotfound by @tariqksoliman in #854
- #849 Plugin Components by @tariqksoliman in #851
- Add viewer_open as new Kind by @ac-61 in #855
- #856 AnimationTool Improvements by @tariqksoliman in #857
- Add new callback for madeLegendTool by @ac-61 in #858
- #852 DrawTool DynamicExtent by @tariqksoliman in #859
- Fix AnimationTool Stac urls by @tariqksoliman in #860
- Fix AnimationTool Stac urls 2 by @tariqksoliman in #861
- Fix return value for layersToolHeaderStateChange event by @ac-61 in #862
- Fix bug in viewer_open kind by @ac-61 in #865
- Add config option to set initial zoom in mobile mode by @ac-61 in #866
- AnimationTool fixes by @tariqksoliman in #867
- #868 Improve Dockerfile by @tariqksoliman in #869
- titiler-pgstac perf fix by @tariqksoliman in #870
- #871 Bug: DyanmicExtent+Threshold Layers do not properly update by @tariqksoliman in #872
- Add font types as asset to webpack by @ac-61 in #874
- Fix issues in mobile version by @ac-61 in #875
- More fixes for mobile mode by @ac-61 in #878
- #863 Allow linking to external MMGIS stac catalogs by @tariqksoliman in #864
- Security fixes by @tariqksoliman in #880
- Fix security issues by @tariqksoliman in #884
- Improve login page for smaller screens by @ac-61 in #883
- Fix bug in viewer_open kind by @ac-61 in #882
- #886 Fix Initial Start and End Time configurations parameters by @tariqksoliman in #887
- Remove redundant urlencoded by @tariqksoliman in #888
- #889 Fix Time Type = Local and Refresh Interval don't work together by @tariqksoliman in #890
- Update time and timetype metaconfigs by @tariqksoliman in #891
- #892 Fix queryTilesetTimes does not update on layer toggles by @tariqksoliman in #893
- #895 Fix DrawTool bugs, template field naming, not null adv filters by @tariqksoliman in #896
- Upgrade Adjacent Servers and sample ENVs by @tariqksoliman in #897
- #898 Support TiTiler layers in Cesium Globe by @tariqksoliman in #900
- Add .gitattributes by @tariqksoliman in #901
- Fix image loading in OpenSeadragon by @ac-61 in #899
- #904 Release AnalysisTool and OperationsClock by @tariqksoliman in #906
- #907 Fix updateClampedRasterForLayer is not a function by @tariqksoliman in #908
- Add option to display Latitude/Longitude in coordinates display by @ac-61 in #905
- #909 Fix DrawTool Templated Point Origin point sometimes get stuck by @tariqksoliman in #910
- #911 Put Adjacent Servers behind Auth by @tariqksoliman in #912
- Fix missions middleware by @tariqksoliman in #914
- Update README.md by @tariqksoliman in #913
- #915 Fix Hover Feature Label and Layer Tags can wrongly get assigned … by @tariqksoliman in #916
- Update github...
MMGIS v4.1.0
4.1.0
December 22, 2025
Summary
This release introduces comprehensive STAC (SpatioTemporal Asset Catalog) support, the Animation Tool, and user account management with per-mission permissions. Major enhancements include an expanded timeline UI, live follow mode, feature style animations, an improved mobile experience, and preliminary video support. The DrawTool gains templating from intersected GeoDatasets and advanced filtering capabilities. Legend and LayersTool receive significant improvements including custom marker icons, horizontal layouts, and enhanced filtering. TiTiler integration expands with planetcantile support and expression capabilities.
Added
- Comprehensive STAC support including catalogs, collections, and items
- STAC item management: show, delete, search (including regex), and bulk operations
- STAC UI import/export and collection metadata updates
- Mobile mode with TimeUI integration
- Animation Tool
- User Account Management with per-mission permissions
- Live Follow Mode with default configuration support
- Expanded Timeline view
- Feature Style Animations
- Preliminary Video Support
- DrawTool templating from intersected GeoDatasets
- DrawTool Advanced Filter Improvements
- Minimal GeoDataset Spatial Queries
- SSL database connections support
- Multiple Private Backends/Tools support
- Configurable wrapping for 2D Map
- Legend-based property styling for vector layers
- Custom marker icons in legend (ShapeImage and ShapeIcon fields)
- Prerendered images for layer legends
- Horizontal legend layouts
- Legend display options and max-on-top positioning
- Layer header expanded state configuration
- InfoTool hotkeys
- Default/preset filters for vector layers
- LayersTool enhanced filtering capabilities and time-related improvements
- Great circle lines in Measure Tool
- TimeUI improvements: fit timewindow to current range, hours display, quick select day/month/year times
- Configure page: required field indicators, projection tab autocomplete, case insensitive mission sorting
- Mission planet radii configuration
- Branding and Dataset Attribution
- Webhook endpoint authorization
- TiTiler planetcantile integration
- TiTiler expressions support
- CITATION.cff file
- URL prefix sourceType dropdowns
- Multi-platform Docker build (arm64 architecture support)
- Callback for newActiveFeature
- Workflow to bump minor version
Changed
- Upgraded all adjacent servers
- TimeUI is now DST-aware
- Configure preview iframe now respects subpaths
- Separated tool interface improvements
- Scale bar position in mobile mode
- Blank CSV entries are now filtered out
- AMD64 Docker image suffix and build order
Fixed
- DrawTool incrementer value multi-user race conditions
- DrawTool export and reimport template issues
- DrawTool recompute template now only recomputes time and intersected fields
- LayersTool filtering on non-dynamicExtent props-on-click geodatasets
- Vector layer updates causing features to flash
- Globe controls clashing with separated tool buttons
- GeoDataset LOCAL issues
- API tokens visibility to all admin types
- Mission name and msv.mission conflicts
- TimeUI location and mobile mode integration
- Expanded timeline local versus UTC time display
- NoDataValue for single banded COGs
- Critical security vulnerabilities identified in SonarQube analysis
What's Changed
- #637 Add CITATION.cff by @tariqksoliman in #677
- #678 Support url prefix sourceType dropdowns by @tariqksoliman in #680
- initial add of STAC support by @flynnplatt in #669
- Patch #669 and #680 Merge For STAC Prefix by @flynnplatt in #682
- #681 DrawTool Templating from intersected GeoDatasets by @tariqksoliman in #683
- Adds ShapeImage and ShapeIcon fields to display custom marker icons in the legend by @jtroberts in #679
- #684 Minimal GeoDataset Spatial Queries by @tariqksoliman in #685
- #686 Fit Timewindow to Current Range and other TimeUI Changes by @tariqksoliman in #687
- #689 DST-aware TimeUI by @tariqksoliman in #690
- #688 Support SSL DB Connections by @tariqksoliman in #692
- #694 Increase Querying Capabilities of LayersTool filters by @tariqksoliman in #695
- #696 Info Tool Hotkeys by @tariqksoliman in #697
- #693 Support default/preset filters for vector layers by @tariqksoliman in #698
- Fix bug with noDataValue for single banded COGs by @ac-61 in #700
- Fix critical security vulnerabilities identified in SonarQube analysis by @jl-0 in #701
- #702 Fix LayersTool filtering on non-dynamicExtent props-on-click geo… by @tariqksoliman in #703
- #704 Upgrade All Adjacent Servers by @tariqksoliman in #705
- Draw great circle lines with Measure Tool by @jtroberts in #710
- #708 User Account Management by @tariqksoliman in #711
- #714 Configurable Wrapping for 2D Map by @tariqksoliman in #715
- #716 Per Mission Permissions by @tariqksoliman in #717
- #718 Globe Controls clash with Separated Tool buttons in the UI by @tariqksoliman in #719
- #721 Show, Delete, and Search for individual STAC items by @tariqksoliman in #723
- Use a prerendered image for the layer legend by @jtroberts in #722
- Added multi-platform build to support arm64 architecture by @jtroberts in #720
- #724 Legends Max on top by @tariqksoliman in #725
- Add feature to set Layer header expanded state individually by @ac-61 in #726
- #727 STAC item regex search and bulk delete by @tariqksoliman in #728
- #729 Default configuration for live mode by @tariqksoliman in #730
- #731 Projection Tab Autocomplete, Case Insensitive Mission Sorting, S… by @tariqksoliman in #732
- Filter out blank csv entries in csvToJSON function by @ac-61 in #734
- Include amd64 Docker image suffix and build it last by @jtroberts in #733
- Add Legend tool display options by @ac-61 in #735
- #736 Configure Required Field Indicators by @tariqksoliman in #737
- #738 Fix GeoDataset LOCAL by @tariqksoliman in #739
- #740 Add mission planet radii by @tariqksoliman in #741
- #742 Configure Preview iframe to respect subpaths by @tariqksoliman in #744
- Add legend-based property styling for vector layers by @jtroberts in #743
- #745 Live Follow Mode by @tariqksoliman in #746
- #699 Incorporate planetcantile into TiTiler by @tariqksoliman in #748
- #749 Support Multiple Private Backends/Tools by @tariqksoliman in #750
- #751 Fix API Tokens are Visible to all Admins Types by @tariqksoliman in #752
- #757 Preliminary Video Support by @tariqksoliman in #758
- Show color scale even if TiTiler PNG images are not available by @ac-61 in #759
- #761 Feature Style Animations by @tariqksoliman in #762
- #763 Vector Layer Updates Cause Features to Flash by @tariqksoliman in #764
- Enable horizontal legends by @jtroberts in #760
- #765 Add Webhook Endpoint Authorization by @tariqksoliman in #766
- #768 Branding and Dataset Attribution by @tariqksoliman in #770
- #771 Bug - Mission name and msv.mission sometimes conflict by @tariqksoliman in #772
- Including Updated Security Scan Config by @jl-0 in #774
- #775 Quick select day/month/year times by @tariqksoliman in #776
- #775 Quick select day/month/year times (Part 2) by @tariqksoliman in #777
- #778 Support TiTiler expressions by @tariqksoliman in #779
- #780 Workflow to bump minor version by @tariqksoliman in #781
- #780 Workflow to bump minor version 2 by @tariqksoliman in #784
- Fix separated tool interface by @tariqksoliman in #786
- Fix bump version (testing) by @tariqksoliman in #787
- #788 Fix Recompute Template should only recompute time and intersecte… by @tariqksoliman in https://github.com/NASA-AMM...
MMGIS v4.0.0
4.0.0
April 17, 2025
Summary
This major release adds support for TiTiler (a tiling server), STAC (a geo-spatial metadata standard), Veloserver (a wind server) and COGs. If not using Docker, a complete installation now requires a micromamba python environment. Two new Layer types have been added: Velocity and Image. GeoDatasets support more performance-based options and can behave similarly to Datasets.
Migration Guide
Added
- TiTiler - A backend tile service
- Support for COGs (Cloud Optimized GeoTiffs)
- STAC Catalogs
- Support for mosaicked-on-the-fly COGs via titiler-pgstac
- New Layer Type: Velocity (to visualize wind and motion and uses Veloserver)
- New Layer Type: Image (to support standalone COGs)
- Internal HTTPS support (no longer need to wrap MMGIS in a proxy to enable that)
- Loading indicator
- LINK_PREVIEW envs for custom description of page when shared through other apps
- Open-api documentation at
/api/docs - Support marker bearings with configurable icons
- Support Right-clicking to copy IdentifierTool values
- InfoTool with one-to-many Datasets
- Add Dataset behavior to Geodatasets
- Chunked uploads of GeoDatasets
- Configurable Tile Layer Brightness, Contrast and Saturation
- MeasureTool - Speed/Arrival
Changed
- MMGIS now requires a micromamba python environment to run
/configure-betais now/configureand the old configure page is now at/configure-legacy- Better 404 handling
- Better Screenshot Filenames
Fixed
- Addressed Sequelize replacements and sanitizations
- Improved FireFox support
- Improved the sample docker-compose file
/configure- Defaults and cleaned layer objects/configure- Avoid aggressively trimming white space in text boxes
What's Changed
- Address Sequelize replacements and sanitizations by @tariqksoliman in #593
- #581 TiTiler and STAC and mamba environment - Bump to v4.0.0 by @tariqksoliman in #601
- #602 Support HTTPS by @tariqksoliman in #604
- #605 Transform 32bit COGs by @tariqksoliman in #606
- COG ingest filename time by @pgbrodrick in #608
- #609 Tile and Data loading indicator by @tariqksoliman in #610
- #611 Working stac-collection timeline sparkline by @tariqksoliman in #612
- #613 Legends for Transformed Titiler COGs by @tariqksoliman in #614
- #615 Update Firefox support by @tariqksoliman in #617
- #616 LINK_PREVIEW envs by @tariqksoliman in #618
- #619 Improve 404 handling by @tariqksoliman in #620
- Visualize velocity data (e.g. wind) as streamlines and particles by @jtroberts in #607
- #622 Fix docker-compose depends_on by @tariqksoliman in #623
- #624 Get IdentifierTool working for COG: and add bidx and resampling … by @tariqksoliman in #625
- #626 Better Screenshot Filenames by @tariqksoliman in #627
- #628 configure-beta defaults and cleaned layer objects by @tariqksoliman in #629
- Avoid aggressively trimming white space in text boxes in configure-beta by @ac-61 in #632
- #634 Fix empty Draw over/under history list SQL replacements by @tariqksoliman in #635
- Add image layer type to support GeoTIFF and Cloud Optimized GeoTIFF images by @ac-61 in #636
- Fix symlink bug by @ac-61 in #638
- OpenAPI docs by @tariqksoliman in #633
- #639 Support marker bearings with configurable icons by @tariqksoliman in #640
- #641 Support Right-clicking to copy IdentifierTool values by @tariqksoliman in #642
- #643 InfoTool with one-to-many Datasets by @tariqksoliman in #644
- Fix bug with fill min/max when modifying color scale in image layer by @ac-61 in #647
- #648 Move configure-beta out of beta by @tariqksoliman in #649
- #650 General Options and titiler _limit params by @tariqksoliman in #654
- #655 Configurable Tile Layer Brightness, Contrast and Saturation by @tariqksoliman in #659
- Dynamic legend for velocity layers by @jtroberts in #656
- Fix image layer url path by @ac-61 in #662
- #664 MeasureTool - Speed/Arrival by @tariqksoliman in #665
- Fix bug in image layer by @ac-61 in #667
- #666 Add Dataset behavior to Geodatasets by @tariqksoliman in #670
- #672 transformCog support for COG: by @tariqksoliman in #673
- #671 Upgrade to stac-fastapi-pgstac v4.0.3 by @tariqksoliman in #674
- #675 Inject proxy paths into adjacent server responses by @tariqksoliman in #676
New Contributors
- @pgbrodrick made their first contribution in #608
Full Changelog: 3.0.0...4.0.0
MMGIS v3.0.0
3.0.0
October 14, 2024
Summary
Adds the new Configure Beta page at /configure-beta. The old Configure page still exists at /configure and is meant to be backwards compatible but do note that new configuration options will likely only make their way into /configure-beta.
Added
- /configure-beta
- Made dynamicExtent requery timeEnabled aware.
- Viewshed Tool can configure initial target and initial observer heights.
- Viewshed Tool in-app documentation.
- Allow adding relative seconds to initial times
- Added downloadURL variable to allow users to download raster layers.
- Info queries for dynamicExtent layers.
- mmgisAPI.getActiveTools.
- Can specify any mdi icon to be the shape icon for a vector layer.
- Easily navigate to the next and previous feature of a layer
- COMPOSITE_TILE_DIR_STORE_MAX_AGE_MS ENV (for composited tile layers).
- Add per layer refreshInterval for which to requery vector or raster layer.
Changed
- Updated Identifier tool to be a separated floating tool.
- MeasureTool now uses a linear x-axis.
- Improvements to bulk_tiles and added quantize_colormap.
- Enabled scalefactor and improved text readout for Identifier tool.
Fixed
- Improper WMS layer option forwarding in some cases.
- Bad merging of values for injection into time={starttime} in a WMS URL.
- mmgisAPI.setTime checking min-date restrictions too soon.
- Chronice fix second loss.
- Vector layers with heading/bearings would not toggle on/off.
- dynamicExtent vector layer and filtering issues.
- Fix setTime currentTime timezone.
- Fix Deeplink to selected point or polygon.
- Starting in Point Mode for Time doesn't work.
What's Changed
- Bugfix: Send options to WMS layers by @tariqksoliman in #517
- #519 Fix mmgisAPI.setTime start by @tariqksoliman in #520
- #518 time={starttime} in a WMS URL is filled with endtime by @tariqksoliman in #522
- #523 Chronice fix second loss by @tariqksoliman in #524
- #525 Make dynamicExtent requery timeEnabled aware. by @tariqksoliman in #526
- #527 Bugfix: Vector layers with headings/bearings do not toggle on/of… by @tariqksoliman in #528
- #529 Viewshed set initial target and observer heights, also doc impro… by @tariqksoliman in #530
- #531 Viewshed in-app docs by @tariqksoliman in #532
- #533 Allow adding relative seconds to initial times by @tariqksoliman in #534
- #535 dynamicExtent vector layer and filtering issues by @tariqksoliman in #536
- #452 Updated Identifier tool to be a separated floating tool by @jtroberts in #453
- #544 Fix setTime currentTime timezone, default layer time objects by @tariqksoliman in #548
- #539 MeasureTool - linear x-axis by @tariqksoliman in #554
- Added downloadURL variable to allow users to download raster layers #546 by @jtroberts in #547
- #557 Viewer Panel - PDFs by @tariqksoliman in #558
- Improvements to bulk_tiles and added quantize_colormap #561 by @jtroberts in #562
- Enabled scalefactor and improved text readout for Identifier tool by @jtroberts in #567
- #568 fix Deeplink to selected point or polygon by @tariqksoliman in #569
- #570 Info with dynamicExtent by @tariqksoliman in #571
- #572 mmgisAPI.getActiveTools by @tariqksoliman in #573
- #464 /configure-beta by @tariqksoliman in #574
- #542 Add Unity tf by @tariqksoliman in #543
- #576 Vector Layer shapeIcon by @tariqksoliman in #577
- #578 Next/Previous Feature by @tariqksoliman in #579
- Create OPEN-SOURCE-CONTRIBUTIONS.md by @tariqksoliman in #582
- #584 Doc Link to Slack Channel by @tariqksoliman in #585
- Ts 584 by @tariqksoliman in #586
- #587 COMPOSITE_TILE_DIR_STORE_MAX_AGE_MS and per layer refreshIntervals by @tariqksoliman in #588
- #583 Starting in Point Mode for Time doesn't work by @tariqksoliman in #589
Full Changelog: 2.11.0...3.0.0
MMGIS v2.12.0
2.12.0
July 18, 2024
Summary
A smaller release for before the /configure-beta changes. Improvements to dyanmicExtent vector layers, and the Viewshed, Measure and Identifier Tools. Various bug fixes related to time as well.
Added
- Viewshed set initial target and observer heights
- Viewshed in-app docs
- Allow adding relative seconds to initial times
- Added downloadURL variable to allow users to download raster layers
- Viewer Panel - PDFs
- mmgisAPI.getActiveTools
Changed
- Updated Identifier tool to be a separated floating tool
- MeasureTool - linear x-axis
- Improvements to bulk_tiles and added quantize_colormap
- Enabled scalefactor and improved text readout for Identifier tool
- Info with dynamicExtent
Fixed
- Send options to WMS layers
- Fix mmgisAPI.setTime start
- time={starttime} in a WMS URL is filled with endtime
- Chronice fix second loss (ShadeTool)
- Make dynamicExtent requery timeEnabled aware
- Bugfix: Vector layers with headings/bearings do not toggle on/of
- dynamicExtent vector layer and filtering issues
- Fix setTime currentTime timezone, default layer time objects
- fix Deeplink to selected point or polygon
What's Changed
- Bugfix: Send options to WMS layers by @tariqksoliman in #517
- #519 Fix mmgisAPI.setTime start by @tariqksoliman in #520
- #518 time={starttime} in a WMS URL is filled with endtime by @tariqksoliman in #522
- #523 Chronice fix second loss by @tariqksoliman in #524
- #525 Make dynamicExtent requery timeEnabled aware. by @tariqksoliman in #526
- #527 Bugfix: Vector layers with headings/bearings do not toggle on/of… by @tariqksoliman in #528
- #529 Viewshed set initial target and observer heights, also doc impro… by @tariqksoliman in #530
- #531 Viewshed in-app docs by @tariqksoliman in #532
- #533 Allow adding relative seconds to initial times by @tariqksoliman in #534
- #535 dynamicExtent vector layer and filtering issues by @tariqksoliman in #536
- #452 Updated Identifier tool to be a separated floating tool by @jtroberts in #453
- #544 Fix setTime currentTime timezone, default layer time objects by @tariqksoliman in #548
- #539 MeasureTool - linear x-axis by @tariqksoliman in #554
- Added downloadURL variable to allow users to download raster layers #546 by @jtroberts in #547
- #557 Viewer Panel - PDFs by @tariqksoliman in #558
- Improvements to bulk_tiles and added quantize_colormap #561 by @jtroberts in #562
- Enabled scalefactor and improved text readout for Identifier tool by @jtroberts in #567
- #568 fix Deeplink to selected point or polygon by @tariqksoliman in #569
- #570 Info with dynamicExtent by @tariqksoliman in #571
- #572 mmgisAPI.getActiveTools by @tariqksoliman in #573
Full Changelog: 2.11.0...2.12.0
MMGIS v2.11.0
2.11.0
Mar 15, 2024
Summary
The release adds a new tool called the ShadeTool, capable of showing visibility maps of various celestial object and craft with the aid of SPICE. The ShadeTool can reveal answers to questions like: "At this time and on my current map, what are all the locations I can view the ISS from?"
Also added are dynamic vector layers that query only for the features immediately within the map's viewport and within time ranges and zoom ranges. This enables much larger vector files to be loaded and rendered without sacrificing performance.
Additionally some new features have been added to the DrawTool, along with new layer export options and various bugfixes and improvements.
Added
ShadeTool
SPICE integration and scheduled kernel downloads
Dynamic vector layers (query only vectors in screen)
DrawTool - Folders and tags can contain symbols
DrawTool - turning a file off also deselects it now
DrawTool - template fields can be reordered
DrawTool - Advanced filter in Features tab
DrawTool - Filter state management
DrawTool - Move
Export .shp and .kml LayersTool and DrawTool
MeasureTool and IdentifierTool Layer Vars (configure them in the layer instead of in the tool)
Identifier tool vsicurl support
IdentifierTool - Query Datasets with Time
Tools can be expanded horizontally
Hotkeys
Local vector layer filtering now supports booleans
Add Database docs
Geodatasets now use spatial and temporal db indices
Geodatasets now support dedicated time fields
Add Geodatasets API docs
Add geodatasets/remove endpoints
Add file_description tagging schemes to DB docs
Deep Link shall also deep link to start and end times
urlReplacements layer raw variables to inject parameters
GENERATE_SOURCEMAP ENV
Changed
Image Overlay improvements
Description topbar improvements
Minor updates for API calls
Improve KML Export Styles
Remove 'Layer Group' and 'Layer' titles from LayerInfoModal
Disable Globe more thoroughly when off
Additional Body Metadata for Draw Webhooks
Remove restriction on Layer names
Check for empty time configs in TimeControl
Dropdown in the topbar for a selected feature’s properties links
Fixed
LayersTool - fix nested header expansion
Viewer panorama map view angles works for polar projections
DrawTool - fix deleting tag also closing modal
Fix IdentifierTool tile queries
Fix: Header Layer Descriptions Don't Save
Fix Time Vector Layer first turn on
Fix click on vectortile
Fix missing Missions/mission path on tile layers
Fix Tool Drag Handle Remains on Screen
MeasureTool Fix nodata issue
What's Changed
- #279 Time Improvements by @tariqksoliman in #280
- Fix environment variable in sample.env for enabling websockets by @ac-61 in #281
- #282 Composite Time Tiles, Time Tiles with range by @tariqksoliman in #283
- #285 Build Database and Create POSTGIS if not exists by @tariqksoliman in #286
- #290 Upgrade config page jquery by @tariqksoliman in #291
- #292 Controlled Time Layers only make initial query by @tariqksoliman in #293
- #296 Fix WMS URL params being dropped by @tariqksoliman in #297
- #298 TimeUI Pan and Zoom and Improvements by @tariqksoliman in #299
- #294 SameSite None env and login improvements by @tariqksoliman in #302
- Add feature to reconnect WebSocket from client to server by @ac-61 in #295
- Layer UUIDs by @tariqksoliman in #308
- #309 Controlled Raster for initial query only by @tariqksoliman in #311
- Fix function call order bug in addNewLayer function by @ac-61 in #310
- Fix toggleLayer bug in MMGIS API by @ac-61 in #260
- #307 Fix Node 18+ build by @tariqksoliman in #312
- #317 Fix time vectors not applying correctly by @tariqksoliman in #319
- Add function to overwrite elements displayed in LegendTool by @ac-61 in #320
- #322 Add ROOT_PATH, Deprecate PUBLIC_URL by @tariqksoliman in #323
- #324 Configurable Context Menu Actions by @tariqksoliman in #325
- Make sure user input UUIDs through REST API are unique by @ac-61 in #326
- #327 Assorted UI Improvements by @tariqksoliman in #328
- #313 Expose as much as possible to the mmgisAPI by @tariqksoliman in #330
- #331 Websocket aware configure page by @tariqksoliman in #332
- Update addLayer and removeLayer endpoints in REST API by @ac-61 in #337
- #303 Photosphere Targets and Target Pairing by @tariqksoliman in #340
- #341 Export working config, disable override by @tariqksoliman in #342
- Add xml2js and proj4 packages. by @tariqksoliman in #343
- #335 Feature Request: GetMissions by @tariqksoliman in #345
- Fix clearOnMapClick function for layers with no fill by @ac-61 in #348
- Optional Info button for projects that need a link to project info #350 by @jtroberts in #351
- #352 [New Feature]: DrawTool - Feature Property Templates by @tariqksoliman in #353
- #354 Add MAIN_MISSION ENV by @tariqksoliman in #355
- #356 DrawTool Templating - Incrementer field by @tariqksoliman in #357
- #358 - DrawTool - Grouping editing should only update changed templat… by @tariqksoliman in #359
- #360 Expose all endpoints to longtermtokens by @tariqksoliman in #362
- #363 Support file_owner in webhook body. Include body for onFileDelete by @tariqksoliman in #364
- #366 Don't copy uuid on layer clone by @tariqksoliman in #367
- #369 Refresh Vector Layers by @tariqksoliman in #370
- #368 Fix Websocket usage with ROOT_PATH by @tariqksoliman in #373
- chore(config): Inline import from same namespace by @evenstensberg in #375
- #378 LegendTool as Popup by @tariqksoliman in #379
- #380 DrawTool - Fix error saving templateless features by @tariqksoliman in #381
- fix(imports): destructure modules by @evenstensberg in #384
- chore(naming): use standardized name by @evenstensberg in #385
- Add event listener for toggleSeparatedTool in MMGIS API by @ac-61 in #388
- #372 calls to updateVectorLayer and appendLineString cause selected feature to be deselected when using info tool by @tariqksoliman in #389
- #390 InfoTool - Clicks Intersect Polygons by @tariqksoliman in #391
- #387 DrawTool - Group Editing by @tariqksoliman in #392
- Added an option to the LegendTool to automatically display on start by @jtroberts in #393
- Added a .nvmrc file with node version by @jtroberts in #395
- Added max-width to legend to prevent long text from filling screen by @jtroberts in #394
- #386 Local Login Issue by @tariqksoliman in #396
- #383 Support raster option on gdal2tiles_3.5.2/gdal2customtiles by @tariqksoliman in #397
- #399 Crashes if Layers are valid JSON but not valid GeoJSON by @tariqksoliman in #400
- #401 Extend CSSO timeout check to main client by @tariqksoliman in #402
- #403 rightClickMenuActions - Polygons and WKT by @tariqksoliman in #404
- #405 DrawTool - Template - Incrementer - Move to backend by @tariqksoliman in #406
- #407 Click intersects on Query and Draw layers by @tariqksoliman in #408
- Allow the legend tool to be right justified on the screen by @jtroberts in #409
- #410 Draw Tool - Time Integration by @tariqksoliman in #411
- #412 Add Configuration Option to set TimeUI Extent by @tariqksoliman in #413
- #414 IdentifierTool works again with human layer names by @tariqksoliman in #415
- #422 Removed event blocking popup functions by @tariqksoliman in #423
- #425 Description Item fixes by @tariqksoliman in #426
- #427 Expandable Tools by @tariqksoliman in https://github.com...
MMGIS v2.9.0
2.9.0
Sept 5, 2023
Summary
This release makes Layer IDs based on UUIDs instead of their layer names, greatly improves support for the dimension of time, adds property templates and group editing to DrawTool files, adds the ability to link features together, upgrades our tiling scripts, and streamlines installations among other things.
Added
- Examples of wrapping MMGIS in an IFrame under
/examples - A full featured TimeUI/Timeline Scrubber
- The InfoTool scans for and makes clickable url links
- Support for Composite Time Tiles that merge tiles across a time range on-the-fly on the backend
- Configurable Context Menu actions
- Polygons can have right-click context menu actions and form links with their WKT strings
- A GitHub workflow now builds MMGIS docker images
- The ability to pair features from one layer to another and render those paired targets in the Photosphere view.
- Optional Websocket verification to the configure page to notify of concurrent users.
- Ability to export the "working" configuration JSON from the configure page
- GET
/api/configure/missionsnow supports thefullparameter to return all configuration objects as well - DrawTool users can enforce property template on their files
- Adds a
MAIN_MISSIONENV that skips the landing page even if there are many missions - Grouping editing for DrawTool files
- All endpoints can use longtermtokens
- The LegendTool can optionally be exposed as a togglable popup as well as other improvements
- Various additions to the
mmgisAPI - Upgraded gdal2customtiles to use gdal 3.5.2 and to support tiling in any projection
- GeoJSON validation on layers.
- GeoJSON data can be an empty []
- Clicking intersects all features making impossible-to-reach features accessible through the InfoTool
- The DrawTool is integrated with time.
Changed
- Layers use UUIDs and identifiers instead of their layer names (backwards-compatibility still maintained)
- The ENV
PUBLIC_URLis deprecated in favor of the newROOT_PATH. UnlikePUBLIC_URL,ROOT_PATHcan fully be changed at runtime - Database and POSTGIS extension are automatically created if they don't exist
- Upgraded the configure page's jquery from
1.11.1to3.6.1
Fixed
ENABLE_MMGIS_WEBSOCKETSname in sample.env- Websockets try to reconnect and with exponential backoff
- Various issues regarding time layers
- Various issues regarding WMS layers
- MMGIS can now work with NodeJS 18+
- Bug where initially on annotations features have no click events
- Bug where having the cursor over an annotation on the Map prevented pans and zooms
- Fixed the
angleUnitproperty for image layer attachments - Cloning a layer in the configure page
- Issue where logging in with AUTH=local would infinitely reload
MMGIS v2.8.0
2.8.0
Nov 14, 2022
Added
- The Viewer Panel supports gltf models
- The configuration raw variable
markerAttachment.modelnow has amtlPropparameter for relative obj material files and can support multiple models per layer - The DrawTool now supports drawing Circles and Rectangles
- The entire Configuration object has an API and can be updated via curl commands. See ConfigureAPI
- The MeasureTool now supports multiple DEMs
- Many additions to the
mmgisAPI. See JavaScriptAPI - Adds an extended GeoJSON format to support per coordinate properties. See Enhanced GeoJSON
- Deep Links now stores the layer order (if users rearranged them)
- The ability to define a primary coordinate system through a reworked Coordinates Tab
- DrawTool Layers can be added as regular layers by using a url of the form
api:drawn:<draw_file_id> - The ViewshedTool supports target heights
- The MeasureTool include line-of-sight
- Users can individually hide features through the InfoTool
- Layers can now be tagged and assigned a markdown description. Users can filter layers based on these fields as well.
- Added websockets that can notify users in real-time that a configuration has updated. Enabled with the env:
ENABLE_MMGIS_SOCKETS=true - Automatic labels can be rendered on features by configuring a raw variables
layerAttachments.labels - Added a
gdal2tiles_3.5.2.pyscript to tile dem tiles with multi-processing support and tiling on top of an existing tileset - The colorize Data Shader can now exclude up to three no data values
- Tilesets served from the MMGIS Missions directory now accept an optional
{t}path directory to search and served tiles based on time - The TimeUI and the bottom of the screen has been significantly reworked
Changed
- Increase GeoJSON math and export precision from
6to10decimal places - The DrawTool's tagging system has been expanded and it UI resembles folder structures
- Photosphere has better damping and rotates with "panning" directions.
Fixed
- Dragging a header in the LayersTool now drags the entire group
- Various fixes to how Time works (through the mmgisAPI, in parameterizing WMS layers, ...)
- Error if Data Layers had a space in their name
- Various mmgisAPI function fixes
MMGIS v2.7.0
Summary
This release adds geologic mapping to the DrawTool, layer reordering to the LayersTool and 3D annotations to the Globe.
Added
- FGDC Geologic patterns, linework and symbols in the DrawTool
- Annotations in the Globe View for both standard layers and drawn layers
- Ability for users to reorder layers in the LayersTool
- The Globe has 3d controls once again
- Visibility ranges can be added per feature with
minZoomandmaxZoomattributes under a feature'sproperties.style - A true documentation site at https://nasa-ammos.github.io/MMGIS/
Changed
- The vector layer
Visibility Cutoffconfiguration has been deprecated (though it still works) in favor ofMinimum ZoomandMaximum Zoom - Improved the screenshot function
- Layer color indicators are more muted
- Default color scheme is a lighter black
- Lithosphere 1.3.0 => 1.5.1 - See LithoSphere Releases
Fixed
- Issue where
onLoadedwould fire multiple times - Default MMGIS login fields are now removed from the DOM when not in use (merely hiding caused some annoyances with password extensions)
- Issue where deep link didn't position the camera in the Globe correctly
- Issue where some vector points the use DivIcons were not clickable
MMGIS v2.6.0
New Requirements
- Node.js >= v14.9.0
Summary
This release adds a webhook manager to the configure page and improves documentation, the mmgisAPI, projection support, as well as synchronicity between the Map and Globe.
Added
- Configurable webhook manager.
- Access to a settings modal in the bottom left toolbar to toggle various UI elements' visibilities as well as the radius of tiles to query for the 3D Globe
- Raster effects (brightness, contrast, saturation, blend-mode) now apply in 3D as well
- Controlled layers can now utilized sublayers/marker-attachments
- Marker attachments, such as uncertainty ellipses, properly work for any projection
- 3D uncertainty ellipses
- Documentation for using remote virtual layers via GDAL
- PUBLIC_URL can be specified at build now in the Dockerfile
- mmgisAPI functions apply to the 3D Globe too now
- mmgisAPI can trim LineString features at the coordinates level
Changed
- LithoSphere 1.1.0 => 1.3.0 - See LithoSphere Releases
- Users can now pan the map while in the DrawTool's draw mode without placing a point
- Time controlled layers can now default to the current time for initial queries
Fixed
- Some media paths in the /configure path not working when MMGIS is served under a subdomain with PUBLIC_URL