What's Changed
Caution
Breaking Changes
- The
Overlay
API has been updated. The optiondismissable
has been renamed todismissible
. If you are using thedismissable
option in your code, you will need to update it todismissible
to avoid errors.
π₯ Notable Changes
openmct-e2e
subpackage
The Open MCT e2e testing framework has been separated into a standalone package, openmct-e2e
, in
preparation for distribution as a dependency for consumers of Open MCT.
Importing Open MCT
module
, main
, import
and require
fields have been added to the package.json
so that the
openmct
main bundle can be imported using either CommonJS or ESModule syntax.
Note
Open MCT is published in a UMD module format. Although this allows for flexibility in consumption,
the framework is still intended to be used within a browser environment where the window
global
is available. See the openmct-hello
repository for an
example of using or extending the Open MCT framework.
Accessibility
- The default theme "Espresso" is now WCAG 2.0 AA and Section 508 compliant. This is automatically enforced through our visual accessibility testing suite, which runs on every commit.
API
TelemetryAPI
- [EXPERIMENTAL] Add support for telemetry batching when using WebSockets
Misc
index.html
is no longer published as part of the distribution.- The Timelist object no longer automatically scrolls to the current event.
- Tab Displays no longer eager-load by default (tabs are now lazy-loaded by default).
Commits
- refactor: migrate to ESM by @LeoDog896 in #7331
- Table performance paging by @jvigliotta in #7399
- Make Tabs eager loading configurable but default to false by @davetsay in #7199
- Support telemetry batching and move WebSocket handling to worker by @akhenry in #7391
- Remove all logic around auto centering and scrolling the timelist by @shefalijoshi in #7474
- chore: remove
type: module
, createopenmct-e2e
subpackage by @ozyx in #7590 - chore: remove all usage of deprecated Time API methods by @ozyx in #7688
- fix(publishing): no index.html on npm pack by @evenstensberg in #7699
- test(e2e): Major refactor and stabilization of e2e tests by @unlikelyzero in #7581
π Features
Actions
Reload
A new action "Reload" has been added to the context menus for all components that provide a view. Triggering this action will reload the view and all of its children. This is useful for reloading an individual view without needing to refresh the entire page.
JSON Import / Export
- JSON import and export feature now shows a progress bar when using external persistence storage
Plan
- Swimlanes can now be ordered based on the Plan JSON
- Activities within a plan may now have their "state" set in the inspector view.
- Plan activities must contain a unique
id
property in order to enable this feature.
- Plan activities must contain a unique
Timelist
- Activities may now be filtered by any of their metadata values.
CouchDB Plugin
- Support for using multiple CouchDB databases at once
- Support for read-only database configurations
- See the CouchDB plugin documentation for more details
Themes
- Add "Darkmatter" theme
openmct.install(openmct.plugins.DarkmatterTheme());
Commits
- feat(#7367): ProgressBar for
ExportAsJSONAction
by @ozyx in #7374 - feat(#7394): Incorporate Status Indicators into the main Vue app by @ozyx in #7395
- Allow specification of swimlanes via configuration by @shefalijoshi in #7200
- New action to reload an individual view and all of its children by @scottbell in #7362
- Add filtering by metadata by @shefalijoshi in #7388
- Activity state display for plans in Gantt and Time list views by @shefalijoshi in #7370
- Add support for multiple CouchDB databases, multiple namespaces, and
readOnly
configurations by @scottbell in #7413 - Add Expanded view for Time List by @shefalijoshi in #7378
- feat: Mission Status for Situational Awareness by @ozyx in #7418
- [Mobile] Add Global Search to Mobile by @rukmini-bose in #7477
- d3 implementation of progress pie chart by @shefalijoshi in #7485
- [Darkmatter] Create new darkmatter theme by @rukmini-bose in #7682
π Enhancements
- Flexible and Stacked Plot layouts styling behavior is now consistent
- JSON import performance has been significantly improved
- Recent objects panel is now collapsible
Commits
- [Flexible Layouts] Flexible Layout styling fixes by @khalidadil in #7319
- Timelist centering algorithm change and duration formatting change by @shefalijoshi in #7194
- Change Imagery positional freshness label from 'POS' to 'ROV' by @charlesh88 in #7409
- Table CPU Performance Improvements by @jvigliotta in #7392
- Fix constrast for accessibility by @charlesh88 in #7315
- Add Collapse to Recent Objects by @rukmini-bose in #7502
- Improve performance of JSON import and add progress bar by @scottbell in #7654
π§ Maintenance
Commits
- chore(deps-dev): bump eslint from 8.53.0 to 8.54.0 by @dependabot in #7250
- [Build] Update to Node 20 and remove 16 (EOL) by @unlikelyzero in #7260
- chore(package.json): fix warning during npm publish by @ozyx in #7253
- [CLA Received] wrote an e2e test for can create a notebook object by @saram7619 in #7236
- chore: bump version to
3.3.0-next
by @ozyx in #7273 - chore(deps-dev): bump @vue/compiler-sfc from 3.3.8 to 3.3.10 by @dependabot in #7270
- fix: define main entry point in
package.json
by @ozyx in #7298 - chore(deps): bump github/codeql-action from 2 to 3 by @dependabot in #7296
- chore(deps-dev): bump marked from 9.1.5 to 11.1.0 by @dependabot in #7299
- Add CodeQL badge to readme by @akhenry in #6803
- PR Cop 2.0 by @unlikelyzero in #5815
- Automatically check additional views for memory leaks on navigation by @scottbell in #7300
- [CI] Remove unneeded parameterization and increase parallelism by @unlikelyzero in #7310
- Add tests for inspector data pivoting by @scottbell in #7282
- Reduce bundle size by @ozyx in #7246
- [CLA Approved] feat: AMD -> ES6 by @LeoDog896 in #7029
- chore: watch mode improvements by @unlikelyzero in #7326
- fix: cleanup from #7029 by @LeoDog896 in #7328
- chore(deps-dev): bump @babel/eslint-parser from 7.22.5 to 7.23.3 by @dependabot in #7232
- chore(deps-dev): bump typescript from 5.2.2 to 5.3.3 by @dependabot in #7335
- chore(deps-dev): bump @vue/compiler-sfc from 3.3.10 to 3.4.3 by @dependabot in #7332
- chore: update copyright end year to 2024 by @ozyx in #7364
- [e2e] Update remaining tests and add missing comparison coverage by @unlikelyzero in #7363
- Mct7367-tests by @unlikelyzero in #7387
- move performance tests to GHA by @unlikelyzero in #7412
- Skip some tests, fix a mislabeled test, and add default condition for tabs by @unlikelyzero in #7422
- chore(deps-dev): bump moment from 2.29.4 to 2.30.1 by @dependabot in #7425
- chore(deps-dev): bump sass-loader from 13.3.2 to 14.0.0 by @dependabot in #7428
- chore(deps-dev): bump marked from 11.1.0 to 11.2.0 by @dependabot in #7427
- [e2e] Steps to reduce flakiness in test reporting by @unlikelyzero in #7436
- test(visual): add unclipped activity names visual tests + a11y fixes by @ozyx in #7454
- test(e2e): add e2e and visual tests for Mission Status (plus a11y) by @ozyx in #7462
- Upgrade prettier and eslint compatibility libraries to latest by @ozyx in #7478
- Misc memory leak fixes by @ozyx in #7224
- chore: bump version to
4.0.0-next
by @unlikelyzero in #7506 - [CLA Approved] Add openmct type hints by @skrobchik in #7247
- docs: Update release.yml and docs by @unlikelyzero in #7514
- docs(release.yml): make plural by @ozyx in #7517
- chore(deps-dev): bump vue from 3.3.8 to 3.4.19 by @dependabot in #7511
- Allow test data toggle to be clicked by @shefalijoshi in #7479
- chore(deps-dev): bump css-loader from 6.8.1 to 6.10.0 by @dependabot in #7466
- chore(deps-dev): bump marked from 11.2.0 to 12.0.0 by @dependabot in #7467
- chore(deps-dev): bump vue-eslint-parser from 9.3.2 to 9.4.2 by @dependabot in #7471
- chore(deps-dev): bump @axe-core/playwright from 4.8.2 to 4.8.5 by @dependabot in #7496
- chore(deps-dev): bump sanitize-html from 2.11.0 to 2.12.1 by @dependabot in #7539
- chore(deps-dev): bump webpack from 5.89.0 to 5.90.3 by @dependabot in #7546
- chore(deps-dev): bump eslint-plugin-vue from 9.18.1 to 9.22.0 by @dependabot in #7545
- chore(deps-dev): bump webpack-dev-server from 4.15.1 to 5.0.2 by @dependabot in #7544
- chore(deps-dev): bump plotly.js-basic-dist-min from 2.20.0 to 2.29.1 by @dependabot in #7523
- [CI] Temp disable flakefinder as we it's generating too many GHA minutes by @unlikelyzero in #7548
- chore: minor formatting fix for PR template by @ozyx in #7550
- chore(deps-dev): bump sass-loader from 14.0.0 to 14.1.1 by @dependabot in #7512
- [Mobile] Make Time Conductor Usable Again by @rukmini-bose in #7515
- chore(deps-dev): bump npm-run-all2 from 6.1.1 to 6.1.2 by @dependabot in #7579
- chore(deps-dev): bump sass from 1.68.0 to 1.71.1 by @dependabot in #7577
- chore(deps-dev): bump imports-loader from 4.0.1 to 5.0.0 by @dependabot in #7576
- chore(deps-dev): bump karma-webpack from 5.0.0 to 5.0.1 by @dependabot in #7575
- chore(deps-dev): bump copy-webpack-plugin from 11.0.0 to 12.0.2 by @dependabot in #7574
- fix(#7015): Generate source maps for generating code coverage metrics by @ozyx in #7582
- [build] Re-enable package lock by @unlikelyzero in #7584
- remove reference to LGTM by @unlikelyzero in #7591
- chore(deps-dev): bump follow-redirects from 1.15.5 to 1.15.6 by @dependabot in #7603
- [CI] Parallelize visual test runs by @unlikelyzero in #7618
- chore(deps-dev): bump @types/lodash from 4.14.192 to 4.17.0 by @dependabot in #7610
- chore: bump
@playwright/test
to1.42.1
by @ozyx in #7627 - docs: Mission Status and more by @ozyx in #7521
- chore(deps-dev): bump webpack-dev-middleware from 7.0.0 to 7.1.1 by @dependabot in #7634
- chore(gha): run prcop workflow on milestone by @ozyx in #7647
- chore(deps-dev): bump express from 4.18.3 to 4.19.2 by @dependabot in #7646
- fix: move file to correct folder by @ozyx in #7652
- fix(e2e): specify
.nyc_output
path as custom config setting by @ozyx in #7658 - refactor: remove the final
.bounds()
call by @ozyx in #7695 - chore(deps-dev): bump vue from 3.4.19 to 3.4.24 by @dependabot in #7702
- chore(webpack): destruct version from pkgJson by @evenstensberg in #7713
- chore: bump playwright to v1.44.0 by @ozyx in #7716
- chore: re-enable a11y checks in visual suite-- minus planning tests by @rukmini-bose in #7747
- [a11y] re-enable and fix all failing plan tests by @rukmini-bose in #7753
- Fix some flaky percy behavior by @unlikelyzero in #7756
- chore(deps): bump ws, engine.io and socket.io-adapter by @dependabot in #7761
- chore(cspell): grammar fixes by @evenstensberg in #7735
- chore: bump playwright to version
1.45.0
by @ozyx in #7762 - test(visual): skip flaky visual test by @ozyx in #7776
- fix(package.json): consistent props by @evenstensberg in #7768
- chore: disable codeql scanning for
e2e/
folder by @ozyx in #7784 - chore: bump playwright to
1.45.2
by @ozyx in #7785 - test(e2e): stabilize flaky imagery tests by @ozyx in #7765
- docs: better docs and types for the API by @ozyx in #7796
- cherry-pick(#7806): chore: re-enable perf/mem tests on PR + fix broken locator in imagery perf test by @ozyx in #7812
- chore: bump version to
4.0.0
by @ozyx in #7813
β‘ Performance
Commits
- chore: upgrade eventemitter to v5.0.2 by @ozyx in #7709
- Destroy canvas in plots if not visible by @scottbell in #7263
- When searching, build the path objects asynchronously while returning the results by @scottbell in #7265
- Defer intersection monitoring until needed to prevent race conditions by @scottbell in #7278
π Bug Fixes
Commits
- fix(#7234): Fix frame deletion in Flexible Layouts by @ozyx in #7244
- Provide visibility based rendering as part of the view api by @scottbell in #7241
- Prevent rubber-banding in Telemetry Table filter input by @scottbell in #7248
- chore: bump
d3-scale
and use ESModule imports by @ozyx in #7245 - Update API documentation for Visibility-Based Rendering by @scottbell in #7262
- Inconsistent behavior with multiple annotations in imagery by @scottbell in #7261
- Handle aborted get requests and null domain objects when using ObjectAPI by @scottbell in #7276
- Provide own renderWhenVisible function since manually creating an object view by @davetsay in #7281
- Update API Readme to indicate
renderWhenVisible
function is optional by @scottbell in #7285 - Fix Notebook entry hover problem by @charlesh88 in #7106
- fix(#7338): Persisted styles correctly apply to
StackedPlotItem
s on mount by @ozyx in #7341 - Set location hash if query parameters or path have changed by @scottbell in #7306
- Add right click actions on imagery to allow high resolution download by @scottbell in #7371
- fix(#7055): Expand on image with double click by @360macky in #7308
- Clear active role if no longer in available roles by @scottbell in #7345
- Provide
renderWhenVisible
to LadTableSets by @scottbell in #7384 - Fix actions menu on display layout alphanumerics by @scottbell in #7414
- Get actions collection on Preview Container update by @michaelrogers in #7385
- Set disabled items to use disabled property by @charlesh88 in #7342
- Use different root for
renderWhenVisible
by @scottbell in #7415 - Have countdowns in the Timelist use a
-
symbol by @scottbell in #7452 - Filter values as a string not an object by @shefalijoshi in #7448
- Ensure previews work for plots by @scottbell in #7459
- Plot legends expand by default when enabled by @scottbell in #7453
- When plan view is used in a gantt chart, handle the domain object differently. by @shefalijoshi in #7473
- Bypass cache/dirty when canceling transaction by @scottbell in #7503
- Ensure object specific actions load in previews by @scottbell in #7504
- style: ensure legacy indicators align with Vue indicators by @ozyx in #7458
- Check role when receiving status updates in the Operator Status Indicator by @scottbell in #7509
- fix(#7456): allow children of Overlay Plots to be removed by @ozyx in #7516
- Fix visible toolbar overflow by @charlesh88 in #7037
- [Mobile] Center Confirmation Dialog Texts by @rukmini-bose in #7492
- Limit lines handle plot resizing by @shefalijoshi in #7151
- fix(overlay plot): legend updates correctly when removing element via remove action by @ozyx in #7531
- fix[#7215](Fault Management): Fix shelving and acknowledging faults with single and bulk actions by @ozyx in #7559
- fix(#7524): Open in New Tab action from a sub-object in a layout by @ozyx in #7542
- Request batch when idle by @akhenry in #7526
- [Telemetry Table] Address issues found during testing Table Performance by @jvigliotta in #7529
- allow inspector pane content to scroll vertically by @davetsay in #7567
- fix(#7552): Fix notebook snapshot image annotations by @ozyx in #7555
- Prevent Metadata Time System Error for Missing Objects by @jvigliotta in #7565
- [Plot] Fix plot swatch behavior when vertical space is small by @rukmini-bose in #7493
- Resize plans properly by @scottbell in #7597
- [TC Popup] Fix Calendar so it is not cutoff by @rukmini-bose in #7596
- For the setTimeConductorMode, use the close time popup button rather than the submit button to dismiss time popup by @shefalijoshi in #7613
- [Telemetry Table] Telemetry mode bug fixes by @jvigliotta in #7601
- Ensure a request for telemetry happens in Condition Sets by @scottbell in #7592
- Handle empty namespaces in import by @scottbell in #7619
- fix: π€ beep boop beep, you forgot an
await
π€ by @ozyx in #7630 - fix(#7633): add missing
await
by @ozyx in #7643 - For an existing View in a Preview, ensure we pull the same
ActionCollection
by @scottbell in #7632 - Disable reload in preview by @scottbell in #7639
- fix(#7623): Resize ConductorAxis properly by @ozyx in #7624
- Mct7636 by @jvigliotta in #7645
- [Telemetry Tables] Don't mutate configuration if object is not able to be persisted by @jvigliotta in #7626
- Do not add unused created attribute to metadata of couch documents on create by @davetsay in #7656
- Handle the case where the pasted data is not an image by @shefalijoshi in #7628
- Revert "Handle the case where the pasted data is not an image" by @akhenry in #7668
- Handle paste events for images and text properly by @davetsay in #7679
- Fix nested Flexible Layout direction problem by @charlesh88 in #7637
- this is 2024.
*
observers no more. by @davetsay in #7715 - [Telemetry Tables] Make sure tables auto scroll correctly on first load by @jvigliotta in #7720
- fix(#7670): Ensure objects unsubscribe from staleness when destroyed by @jvigliotta in #7736
- If display bounds are out of sync with time conductor, don't purge data out of bounds by @shefalijoshi in #7732
- Ensure time conductor mode is set when synchronizing time range by @shefalijoshi in #7731
- Plots correctly use configuration set on the parent if they can't their own by @shefalijoshi in #7770
- fix(#6812): Align Plot and Plan X-Axes in Time Strips by @shefalijoshi in #7744
- fix(#7791): tc form shouldn't submit bounds changes on dismiss by @ozyx in #7792
New Contributors
- @saram7619 made their first contribution in #7236
- @LeoDog896 made their first contribution in #7029
- @skrobchik made their first contribution in #7247
Full Changelog: v3.2.1...v4.0.0