Releases: OpenC3/cosmos
v6.3.0
OpenC3 COSMOS 6.3.0 - Lots of Improvements!
Welcome to OpenC3 COSMOS 6.3.0!
Potentially Breaking Changes
- Alpine upgraded to version 3.21
- Ruby upgraded to version 3.3
- Python upgraded to version 3.12
Ruby Script Instrumentation Now Uses Prism
Ruby 3.3 dropped support for the Ripper library so we rebuilt our Ruby script instrumentation using the modern and supported Prism library. Look for a talk at the Space Software Summit from our own Jason Thomas on this update!
UBI based images are now published
We now will be publishing our standard Alpine based images, as well as a set of images based on the IronBank UBI base image. This is the first release with these published. We will improve their ease of use and add security scans in an upcoming release. Note UBI is not fully functional. Expect a fully functional version in the next release.
Graph LATEST packet
You can now graph the LATEST packet in TlmGrapher (and in Grafana in our Enterprise Editon). This allows for graphing items with the same name across multiple different packets.
Python Dynamic Packet Support
Python now has support for dynamically defining packets at runtime. New docs are available for this feature here: Dynamic Packets
Greatly Improved File Open Performance
The Vuetify Tree Widget was causing performance issues for several of our customers so we replaced it with a much more performant implementation. Let us know if this greatly improves selecting files in ScriptRunner!
Limits Monitor Updates
Limits Monitor has been rewritten to use a Vuetify Data Table. This provides sorting, searching, and a much nicer presentation.
ScriptRunner Vim Mode
All you Vim lovers out there can now put ScriptRunner into vim mode to edit your scripts!
Playwright test performance improvements
Our Playwright tests have been refactored to support running several of the tests in parallel. This improves our total time to run our end to end test suite saving us CI/CD time every commit.
Python Table Code
Python now has the code necessary to create, build, and edit tables.
Offline Access Token Generation
For our enterprise customers, we have added api methods to generate offline access tokens without having to access the GUI. This allows for much easier CI/CD test support on enterprise. Just run initialize_offline_access() before calling script_run().
Other Improvements
- Lots of dependency updates
- Details dialog added to LedWidget
- Renamed hash variables in Python to avoid overloading keyword
Bug Fixes
- DISABLE_DISCONNECT keyword now works
- Packet Receive Counts now works for packets that can be received across multiple interfaces
- Graph without overview graph fixes
- Fixed a websocket issue with multiple subscriptions on the same cable
All Pull Requests
- Change BOX styling by @jmthomas in #1948
- Switch to Ruby Prism parser by @jmthomas in #1936
- Alpine 3.21, Ruby 3.3, Python 3.12 by @jmthomas in #1959
- Update roadmap by @jmthomas in #1961
- Document CLI by @jmthomas in #1962
- Remove hash as variable by @jmthomas in #1954
- Build UBI images as part of the release by @jmthomas in #1965
- Dynamic packets in Python by @jmthomas in #1953
- Improve FileOpen performance by @jmthomas in #1956
- Update dependencies by @jmthomas in #1969
- Update theme-color by @ryan-pratt in #1975
- Limits Monitor Data Table, Sorting, Search, and Menu by @ryanmelt in #1966
- Fix DISABLE_DISCONNECT in the frontend by @jmthomas in #1972
- Initial Base Changes to Support Notebooks by @ryanmelt in #1964
- Vim mode for Ace editors by @ryan-pratt in #1976
- Parallel Playwright by @ryan-pratt in #1945
- Implement Global Packet Received Counts by @ryanmelt in #1963
- Fix Graph without overview by @jmthomas in #1979
- Bump the npm_and_yarn group across 11 directories with 1 update by @dependabot in #1981
- Fix bug in confirm dialog with validation text by @ryan-pratt in #1983
- Bump the npm_and_yarn group across 8 directories with 1 update by @dependabot in #1982
- Fix multiple subscriptions on the same connection by @ryanmelt in #1980
- Add LATEST packet to TargetPacketItemChooser by @ryan-pratt in #1957
- Increase test timeouts by @ryan-pratt in #1984
- Fix script runner size by @ryan-pratt in #1989
- Increase timeout for enterprise gh runners by @ryan-pratt in #1991
- Fix streaming api from uuid change by @ryanmelt in #1994
- Add details dialog to LedWidget by @jmthomas in #1993
- Changes required for scope banner in enterprise by @ryan-pratt in #1997
- Implement offline access in python by @jmthomas in #1851
- Bump traefik to 3.3.5 by @jmthomas in #1996
- Implement table manipulation code in Python by @jmthomas in #1985
- Bump the npm_and_yarn group across 19 directories with 1 update by @dependabot in #1999
- Bump minio by @jmthomas in #2003
- Remove mkrf_conf and include ruby-termios by @jmthomas in #2004
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.2.1...v6.3.0
v6.2.1
OpenC3 COSMOS 6.2.1 - Bug fixes
Welcome to OpenC3 COSMOS 6.2.1!
This release is primarily bug fixes and an enhancement to Packet Viewer to allow search on packets that have never been received.
Bug Fixes
- Add yarn built dist folder to release
- Force anycable to use 127.0.0.1
- Fix python try except instrumentation
All Pull Requests
- Add yarn build to release by @ryanmelt in #1935
- Update fluentd docs by @jmthomas in #1938
- PV allow search on null packet by @jmthomas in #1941
- Force anycable to use 127.0.0.1 rather than localhost to avoid ipv6 issues by @ryanmelt in #1946
- Fix python try except instrumentation by @jmthomas in #1940
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.2.0...v6.2.1
v6.2.0
OpenC3 COSMOS 6.2.0 - Microservice Control, CONNECT_CMD
Welcome to OpenC3 COSMOS 6.2.0!
Microservice Control
In the Admin Microservices tab you can now restart, stop, and start microservices. This can be useful for debugging and simulating failures. (Note: stopping microservices will break things!)
CONNECT_CMD OPTION for Interfaces
This new option allows for sending commands on initial connection of an interface.
Read more here
Other Improvements
- Limits responses now run in a thread to prevent blocking decom while they are running
- Improve TableManager file lookup
- Scopes now have configurable retain times for script logs and other logs
Bug Fixes
- Fixed 64-bit integer support on the frontend in CmdSender / PacketViewer / TlmViewer
- Handle news not being available in offline environments
- Fix title widget centering
- Fix time case sensitivity in frontend
- Fix multiline generic conversions in Python
- Fix exception in Python TcpipServerInterface due to DNS lookup failure
- Fix ScriptRunner leaving zombie processes
- Fix python ScriptRunner output thread
- Correct numerous Sonarqube findings
- Improve some playwright test flakiness (more to be done)
- Fix LIMITSCOLUMN and LIMITSCOLOR examples
- Now using consistent colors for limits everywhere
- Fixed missing dist folders in javascript libraries
- Fix parsing hex and binary ID items
- Fix displaying hazardous description in popup dialog
- Fix python identify_packet
All Pull Requests
- fix(packets): correct dict iteration syntax in Telemetry.identify_packet by @badrobit in #1877
- Add command description to hazardous dialog by @ryan-pratt in #1879
- Fix import-map-overrides dialog style by @ryan-pratt in #1880
- Add .npmignore files by @ryan-pratt in #1893
- Rework scope cleanup microservice by @jmthomas in #1891
- Properly parse hex and binary ID items by @jmthomas in #1896
- Match limits colors and support no item name by @jmthomas in #1885
- Upgrade python packages using poetry by @jmthomas in #1881
- Add CONNECT_CMD option for interfaces by @jmthomas in #1886
- Fix LIMITSCOLUMN and LIMITSCOLOR examples by @jmthomas in #1898
- First pass audit of the playwright tests by @ryan-pratt in #1871
- Address SonarQube issues by @jmthomas in #1899
- Improve TableManager definition lookup by @jmthomas in #1900
- Eliminate script zombies. Fix python output thread. Default CI to empty string by @ryanmelt in #1903
- Add keycloak setup and run-aws by @jmthomas in #1906
- Run Limits Responses in Thread to Prevent Blocking Decom by @ryanmelt in #1901
- Kill Microservice on any Thread Crash by @ryanmelt in #1902
- Add exception catch on python hostname lookup by @ryanmelt in #1915
- Update dependencies by @jmthomas in #1910
- Dev doc updates by @NuclearFizzler in #1917
- Microservice control by @jmthomas in #1091
- Fix multi line generic conversions in Python by @ryanmelt in #1918
- Fix case sensitivity for timestamp formatting by @ryan-pratt in #1926
- Fix title widget centering by @ryan-pratt in #1927
- Handle news connection failure by @jmthomas in #1920
- Support 64 bit ints in CommandSender by @jmthomas in #1930
New Contributors
- @badrobit made their first contribution in #1877
- @NuclearFizzler made their first contribution in #1917
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.1.0...v6.2.0
v6.1.0
OpenC3 COSMOS 6.1.0 - AnyCable and News
Welcome to OpenC3 COSMOS 6.1.0!
Potentially Breaking Changes
The change from ActionCable to AnyCable requires you to update your Docker compose.yaml file to add ANYCABLE_REDIS_URL
, the openc3-redis/users.acl to add &__anycable__
and the openc3-traefik/traefik.yaml to add 2 new services: service-api-cable
and service-script-cable
. Please update your compose.yaml, users.acl, and traefik.yaml config files with the latest changes from cosmos-project.
Improvements
- Switched from Rails ActiveCable to AnyCable. AnyCable has much better performance and reliability than ActionCable and should help improve performance for all our websockets including the Streaming API.
- New News Feed in the User Menu which will primarily include information about releases
- Blur LED widget when telemetry goes stale
- Python instrumentation now supports try/except, can import future, and supports globals() and locals() in
check_expression
- Created new Table APIs for creating binaries and reports
- Fully documented the Script APIs
- Created new ARRAYPLOT widget for graphing large static blocks of data (o-scope values) rather than individual telemetry points
Bug Fixes
- Fix graph layout grid in TlmGrapher
- FIx pip uninstall in the Admin packages
- Fix python UDP interface
- You can now create a WRITE_CONVERSION which converts a STRING to a UNIT. Read more at WRITE_CONVERSION.
Security
- Disallow parent dir path in sanitize_params
- Check file path prefixes
- Updated MINIO to close several CVEs
All Pull Requests
- Parameterize the traefik version and bump to 3.3.2 by @jmthomas in #1822
- Add docs/assets to codeql ignore by @ryan-pratt in #1827
- Post news feed to user menu by @jmthomas in #1807
- Disallow parent dir path in sanitize_params by @ryan-pratt in #1828
- Fix code scanning alert no. 234: Prototype-polluting function by @ryan-pratt in #1823
- Fix graph layout by @jmthomas in #1846
- Clarify timezone setting by @jmthomas in #1831
- Fix pip uninstall, improve package status by @jmthomas in #1830
- Update MINIO by @jmthomas in #1847
- Blur LedWidgets when stale by @jmthomas in #1849
- Check file path prefixes by @ryan-pratt in #1844
- Fix python UDP, add usage note by @jmthomas in #1848
- Ensure target_file returns utf-8 files by @jmthomas in #1853
- Anycable by @ryanmelt in #1859
- Better handle disconnected message, log_level error by @jmthomas in #1861
- Update UBI minio, add script-runner-api log_error by @jmthomas in #1862
- Improve python instrumentation by @jmthomas in #1855
- Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 by @dependabot in #1863
- Fix write_conversion of default string to int and don't range check strings by @jmthomas in #1845
- Create table APIs by @jmthomas in #1850
- Document using globals() in python expressions by @jmthomas in #1860
- Script apis by @jmthomas in #1803
- Check for invalid inject_tlm states, rescue bad values by @jmthomas in #1866
- Bump all dependencies by @jmthomas in #1867
- Update import-map-overrides and vuetify-labs by @jmthomas in #1869
- Arrayplot widget by @jmthomas in #1868
- Update python lxml by @ryanmelt in #1872
- Update import-map-overrides by @jmthomas in #1874
- Docker build cloud by @ryanmelt in #1875
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.0.2...v6.1.0
v6.0.2
OpenC3 COSMOS 6.0.2 - Bug fixes and enhancements
Welcome to OpenC3 COSMOS 6.0.2!
At OpenC3, we work with independent security consultants to elevate our security posture across our products. As part of this ongoing campaign, this release includes multiple security improvements.
Potentially Breaking Changes
See the release notes for COSMOS 6.0.0!
Improvements
- Added an alert for unsupported browsers
- Improved documentation
- Better handling of Python package installation
- Updated Traefik and Alpine versions
Bug Fixes
- Fixed
open_file_dialog()
in Script Runner not letting you select a file (regression in 6.0.0) - Packet Viewer now remembers your last viewed packet
Security
- Patched XSS attack vectors in the Iframe widget and Documentation tool
- Patched potential credential leak via Script Runner
- Prevent the login page from accepting the backend service password
All Pull Requests in this Release
- Update frontend readme for openc3-js-common and openc3-vue-common by @ryan-pratt in #1795
- Alert for unsupported browsers by @ryan-pratt in #1802
- Document using route prefix by @ryanmelt in #1797
- PacketViewer config bugs by @ryan-pratt in #1806
- Fix ScriptRunner open_file_dialog by @ryan-pratt in #1814
- PacketViewer back button goes back to last target/packet by @ryan-pratt in #1809
- Allow SkipTestCase in python by @jmthomas in #1817
- Improve package install in openc3cli. Includes fix to python install by @ryanmelt in #1805
- Fix a few issues with iframes, script runner, and login by @ryan-pratt in #1816
- Bump traefik and alpine by @jmthomas in #1819
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.0.1...v6.0.2
v6.0.1
OpenC3 COSMOS 6.0.1 - Bug fixes and enhancements
Welcome to OpenC3 COSMOS 6.0.1!
This release restores the display_screen functionality and has several enhancements
Potentially Breaking Changes
See the release notes for COSMOS 6.0.0!
Improvements
- Updated the MINIO dockerfile
- Show 404 page for non-existent routes
- Improved error messages for LIMITSBAR, LIMITSCOLUMN (and variants)
Bug Fixes
- Fix display_screen API
- Fix layout of ROLLUP, LED, and SIGNAL widgets by adding computedStyle
All Pull Requests in this Release
- Traefik config tools-router by @jmthomas in #1776
- Add computedStyle to ROLLUP, LED, and SIGNAL widgets by @jmthomas in #1781
- Update Minio by @jmthomas in #1783
- Small login bugs by @ryan-pratt in #1788
- Show 404 page for non-existent routes by @ryan-pratt in #1789
- Upgrade vite to 6.0.5 by @jmthomas in #1791
- Fix menu button height when zoomed out by @ryan-pratt in #1785
- Fix display screen by @jmthomas in #1787
- Fix eslint config by @ryan-pratt in #1792
- Improve trivy checks by @jmthomas in #1790
- Nice error message for widget items without limits by @jmthomas in #1786
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v6.0.0...v6.0.1
v6.0.0
OpenC3 COSMOS 6.0.0 - Frontend Apps Updated to Vue 3
Welcome to OpenC3 COSMOS 6.0.0!
This release focuses on bringing all our dependencies up to the latest versions primary for the COSMOS user interface. The big changes are:
- Vue 2 upgraded to Vue 3
- Vuetify 2 upgraded to Vuetify 3
- Traefik 2 upgraded to Traefik 3
- Grafana 10 upgraded to Grafana 11 (Enterprise)
- Webpack replaced with Vite
- Many other minor depenencies updated
Potentially Breaking Changes
The change from Traefik 2 to Traefik 3 changed the traefik configuration file format. Please update your traefik config files with the latest from cosmos-project.
Any custom Vue based tools will need to be upgraded to Vue 3 / Vuetify 3 / Vite. We've put together a detailed writeup to help with this process here: https://docs.openc3.com/docs/getting-started/upgrading#migrating-from-cosmos-5-to-cosmos-6
Our @openc3/tool-common npm package was broken up into @openc3/js-common and @openc3/vue-common packages. This would affect tools written in any frontend framework.
Commands with states now enforce using defined states. If you need to send an arbitrary value for a command with states you will need to use cmd_no_range_check().
Greatly Improved Container Build Times
Building our containers from source is now about 4 times faster. This is mainly due to the change from Webpack to Vite.
Greatly Improved Documentation
Accessors are now fully documented at docs.openc3.com! Also, more Interfaces and Protocols are documented. The Enterprise Command History Tool is now documented. Every TlmViewer widget now has screen shots.
More Python Parity
Almost every Interface and Protocol available in Ruby is now available in Python (Only current exception is SerialInterface).
BucketExplorer View Files
You can now view files in BucketExplorer, rather than having to download and open them in a separate application.
Sharded Operator (Generally Enterprise)
The operator container can now be run multiple times, each with a unique OPENC3_SHARD environment variable. This is intended as an alternate to using the Kubernetes Operator, if you don't have access to the Kubernetes API.
Other Improvements
- CrcProtocol now supports Crc8
- Installing Plugins and Packages now uses a button, rather than the old paperclip style text area
Other Bug Fixes
- ScriptRunner Suite level setup and teardown now work in Python suites
- Some ScriptRunner output wasn't colored when intended
- Importing from openc3.script now works in Python suites
- Fixed an issue with selecting modified scripts in Calendar and Autonomic (Enterprise)
All Pull Requests in this Release
- Configurable Default Repository URLs for Ruby Gems and Python Packages by @stephen-ritter in #1690
- Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 by @dependabot in #1687
- Python TemplateAccessor and CmdResponseProtocol by @ryanmelt in #1684
- Traefik v3 (COSMOS 6) by @jmthomas in #1688
- Cmd history docs by @jmthomas in #1685
- Command State Range Checking for COSMOS 6 by @ryanmelt in #1670
- Vue 3 / Vuetify 3 migration for COSMOS 6 by @ryan-pratt in #1539
- Remove some deprecated items for COSMOS 6 by @jmthomas in #1659
- Fix Python Suite Setup and Teardown by @ryanmelt in #1695
- -Fix typo in docs by @lorenzo-gomez-windhover in #1702
- -Fix typo in docs by @lorenzo-gomez-windhover in #1703
- Widget images by @sydjaythomas in #1700
- BucketExplorer view files and breadcrumb paths by @jmthomas in #1696
- Support period in parameter names for COSMOS 6 by @jmthomas in #1677
- Typo by @lorenzo-gomez-windhover in #1712
- Fix tests for enterprise by @ryan-pratt in #1719
- Fix RawDialog behavior by @ryan-pratt in #1718
- Fix migrations by @ryanmelt in #1716
- Remove inpect override in array and hash by @jmthomas in #1723
- CrcProtocol Support Crc8 by @lorenzo-gomez-windhover in #1724
- Bump codecov/codecov-action from 4 to 5 by @dependabot in #1714
- Bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 by @dependabot in #1699
- Sharded Operator Support by @ryanmelt in #1709
- Handle exceptions in ModelController by @jmthomas in #1704
- Change plugin / package install to a button by @jmthomas in #1713
- Replace Webpack with Vite by @ryanmelt in #1728
- Python Mqtt and exception cleanup by @jmthomas in #1701
- Py suite by @jmthomas in #1730
- Filter Controllers stack trace by @jmthomas in #1731
- Dependency major version updates by @ryan-pratt in #1722
- Add python form & http accessors and http_client_interface by @jmthomas in #1717
- Add File Interface by @ryanmelt in #1708
- Migrate ace-diff from Webpack to Vite by @ryan-pratt in #1736
- Break up tool-common by @ryan-pratt in #1737
- Document interfaces, protocols, accessors by @jmthomas in #1733
- Fix redirect from root path by @ryan-pratt in #1746
- Add COSMOS 6 upgrade guide by @ryan-pratt in #1754
- Better handle script output coloring by @jmthomas in #1751
- Popups and horizontal scroll by @jmthomas in #1755
- Better log message in note and metadata controller, fix ColorSelectForm by @jmthomas in #1756
- CHECKBUTTON checked by default and update example by @jmthomas in #1761
- Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 by @dependabot in #1749
- Add execute to TimelineModel and api in controller to set it by @jmthomas in #1760
- Polish a couple things by @ryan-pratt in #1757
- Fix import script in python suite by @ryanmelt in #1763
- Remove star from chosen script by @ryanmelt in #1769
- Update tool templates for COSMOS 6 by @jmthomas in #1747
- Fix sharding by @ryanmelt in #1771
- Small bug fixes and enhancements by @ryan-pratt in #1772
- Update package_audit for vue.global and vuetify-labs by @ryan-pratt in #1770
- Dependencies by @jmthomas in #1773
New Contributors
- @lorenzo-gomez-windhover made their first contribution in #1702
- @sydjaythomas made their first contribution in #1700
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v5.20.0...v6.0.0
v5.20.0
OpenC3 COSMOS 5.20.0 - Critical Commanding (Enterprise)
Welcome to OpenC3 COSMOS 5.20.0!
Critical Commanding (Enterprise)
This release adds a new feature for our Enterprise users called Critical Commanding. Critical commanding in NORMAL mode requires commands marked HAZARDOUS or RESTRICTED to be approved by two operators before being sent. In ALL mode it also requires all manual commands from CmdSender to be approved by two operators. Accounts that approve must have the 'approve_hazardous', 'approve_restricted', or 'approve_normal' permission depending on the type of command. There is also a new default "approver" account in Keycloak.
Packet Viewer Item Pinning
By right clicking on item names, you can now pin items in PacketViewer. This allows you to keep items at the top and watch their values on all pages, and when searching.
ScriptRunner show wait time, colorized output, view logs
The ScriptRunner state field now shows how long you have been waiting on waits and wait_checks. Additionally ScriptRunner output text is now colored green for successful checks, and red for failed checks. Finally you can now view script logs in a dialog, rather than having to download them.
New DATE and TIME widgets
TlmViewer has new DATE and TIME widgets that can be used to have users select a specific date and time that is then used in BUTTON code.
Potentially Breaking Changes
- Updated to Alpine 19
- Delete apis now return 200 instead of 204 on success. 204 was preventing data from being returned by these methods.
Other Improvements
- ScriptRunner now removes the leading script_ or test_ from method names in Suite mode
- The Login prompt now lets you know if you enter a bad password (less than 8 characters)
- Allow horizontal scrolling in TlmViewer and other apps if the content is too wide to fit
- Python now stores packages in a venv
- Hovering over limits bars now shows the limits range
- Limits violation log messages now include the value of the limits that was violated
Other Bug Fixes
- Fixed a bug in PacketViewer where the wrong value would be shown on later pages
- Made TlmGrapher graphs not grow in size when mouseover values
- Fixed enabling and disabling limits on items with colored states
- Calendar updated to better handles events at the same start time (Enterprise)
- LINEGRAPH widget now respects the time zone setting
- Fix ScriptRunner Execute text when file modified
- Fixed authorization for the web_socket_api files
All Pull Requests in this Release
- Add key to PacketViewer table by @jmthomas in #1611
- Bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3 by @dependabot in #1622
- Critical Commanding Support For Enterprise by @ryanmelt in #1627
- Fix text offset in Tlm Grapher by @jmthomas in #1607
- Document SR right click by @jmthomas in #1615
- CvtModel get_tlm_values return consistent results by @jmthomas in #1608
- Improve TargetPacketItemChooser behavior by @jmthomas in #1613
- Disabling limits sets enabled to false by @jmthomas in #1609
- Strip script_ and test_ from suite names by @jmthomas in #1614
- Pv pin by @jmthomas in #1621
- Add wait / pause time to state by @jmthomas in #1616
- Trivy workaround for TOOMANYREQUESTS by @jmthomas in #1633
- Fix timeline to handle events at same time by @jmthomas in #1657
- Add time zone to LinegraphWidget by @jmthomas in #1656
- Colorize SR output on CHECK success/failure by @jmthomas in #1654
- Change get_target_names permission to 'system' by @jmthomas in #1651
- Catch initial password set errors by @jmthomas in #1635
- Add LedWidget hover by @jmthomas in #1649
- Hide start button when Suite Runner active by @jmthomas in #1650
- Fix ScriptRunner Execute text when file modified by @jmthomas in #1637
- Format binary output as hex by @jmthomas in #1653
- Default screen cursor, pointer only on linked screens by @jmthomas in #1647
- Allow horizontal scrolling in apps by @jmthomas in #1639
- Alpine19 and Python venvs by @jmthomas in #1604
- beginning to address the SonarCloud Highs by @JL-Brothers in #1546
- Cleanup controllers and change delete 204 to 200 by @jmthomas in #1666
- Add from_config to PacketConfig by @ryanmelt in #1663
- cmd and cmd_raw raise on bad item states by @jmthomas in #1661
- Revert "cmd and cmd_raw raise on bad item states" by @ryanmelt in #1669
- Display range on limits bar hover by @jmthomas in #1648
- Add DATE and TIME widgets by @jmthomas in #1636
- Add limits value to message by @jmthomas in #1640
- add args to conversion to be returnable as json by @JL-Brothers in #1512
- View Script Logs / Report by @jmthomas in #1655
- Handle BLOCK and STRING params in autocomplete by @jmthomas in #1674
- Make Bearer optional in token to fix web_socket_api by @ryanmelt in #1675
- Dependencies by @jmthomas in #1676
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v5.19.0...v5.20.0
v5.19.0
OpenC3 COSMOS 5.19.0 - Command History and Validators (Enterprise)
Welcome to OpenC3 COSMOS 5.19.0!
This is an exciting release as we have a completely new tool for Enterprise Users - Command History! It provides a quick way to see what commands have been sent, by who, and if the commands were successful.
Associated is a new feature called Command Validators that is available for both Open Source and Enterprise Users. This feature allows us to know if the command was successful after its full lifecycle. Read more below.
Additionally we have grown to the point where security researchers are looking into COSMOS and creating CVEs. This release patches three CVEs that have been written against COSMOS. As always, we recommend updating to our latest version.
Affects Both Open Source and Enterprise Edition:
- CVE-2024-46977 - Path traversal via screen controller (
[GHSL-2024-127]
) - Moderate
Only Affects Open Source Edition:
- CVE-2024-43795 - Cross-site scripting in Login functionality (
GHSL-2024-128
) - High - CVE-2024-47529 - Clear text storage of password/token (
GHSL-2024-129
) - Moderate
Command History Tool (Enterprise)
A new tool for our Enterprise users provides a quick way to see what commands have been sent, by who, and if the commands were successful.
Command Validators
Commands validators are a new class that can be associated with individual commands. Inside the class are a pre_check and post_check method which can be used to reject commands before they are sent (pre_check), or verify if the command worked successfully (post_check).
Python Redis Cluster Support (Enterprise)
Python now supports infinite scaling with Redis Cluster in COSMOS Enterprise Edition.
New Runner Role (Enterprise)
We have a new default role called "runner" that allows a user to run scripts but not edit them. Great for production environments where users are only authorized to run prebuilt scripts.
New DataViewer Item Component
This provides an easy way to scale viewing an item (or multiple items) over time in DataViewer (rather than an entire packet).
Time Zone Setting
Our settings page now includes a time zone setting where you can choose whether you want every tool to use UTC time or the local time zone.
Potentially Breaking Changes
- Our command line generators no longer default to ruby and now require --ruby or --python for each (or set the OPENC3_LANGUAGE environment variable)
- Updated to use docker compose run instead of docker run for cli actions in openc3.sh/openc3.bat
- The docker network is no longer hard coded in compose.yaml and is now auto set by Docker Compose
- RECEIVED_COUNT now returns 0 instead of nil/None for packets that have never been received
- Many more log messages are now JSON formatted
- extra is now a required parameter for the Interface#write_interface and Protocol#write_data methods
Other Improvements
- Added a ScriptRunner Line Delay Menu Option
- More Consistent use of 401 and 403 errors
- Python Stack Traces are now cleaner in ScriptRunner
- Greatly improved File Open Performance with a large number of files
- CmdTlmApi and ScriptRunner Rails logs are now JSON formatted
- Added the ability to clear graph data in TlmGrapher
- Bucket Explorer auto refreshes every minute
Other Bug Fixes
- Fixed a python wait_check bug causing it to block forever
- Improved escaping logic in TemplateAccessor
- Lots of spelling errors fixed - our pipeline now checks for spelling errors! (Typically in comments)
- Fixed a bug with the script open_file_dialog sometimes not working
- Command Sender error messages could reference the wrong command
- Fixed TlmViewer Spacer widget
- Fixed a bug with mixing old variable sized items with new variable sized items
- Fixed an issue with CmdTlmServer LogMessages not bringing up any history
- Fixed python tcpip_server_interface
All Pull Requests in this Release
- Coverage by @JL-Brothers in #1415
- Generator requires language by @JL-Brothers in #1490
- Better escaping in TemplateAccessor by @jmthomas in #1495
- Rework settings and add time zone by @jmthomas in #1446
- Correct spelling errors by @jmthomas in #1496
- Fix fileDialogCallback promise logic by @jmthomas in #1497
- Bump webpack from 5.93.0 to 5.94.0 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-packetviewer by @dependabot in #1502
- Cmd validation by @jmthomas in #1506
- Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0 by @dependabot in #1508
- Bump webpack from 5.93.0 to 5.94.0 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-dataviewer by @dependabot in #1507
- Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 by @dependabot in #1524
- Bump webpack from 5.93.0 to 5.94.0 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-dataextractor by @dependabot in #1520
- Fix get_limits docs by @jmthomas in #1538
- Bump webpack from 5.93.0 to 5.94.0 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-cmdtlmserver by @dependabot in #1533
- Fix Command Sender error message by @jmthomas in #1516
- Bump webpack from 5.93.0 to 5.94.0 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-cmdsender by @dependabot in #1541
- Bump the npm_and_yarn group across 13 directories with 1 update by @dependabot in #1542
- Http interface tests by @JL-Brothers in #1513
- SR line delay menu option and log line delay changes by @jmthomas in #1540
- Python Redis Cluster Updates (Enterprise) by @ryanmelt in #1523
- Add runner role to SR by @jmthomas in #1519
- Applied OPENC3_OPERATOR_HOSTNAME to json_api.rb by @stephen-ritter in #1511
- Cli script wait by @JL-Brothers in #1501
- Allow upload and delete to /tmp by @jmthomas in #1544
- Properly return 403 for Forbidden by @ryanmelt in #1555
- Fix spacer widget by @jmthomas in #1553
- Fix python stack traces by @jmthomas in #1554
- Update SR file open / save dialog by @jmthomas in #1556
- Bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2 by @dependabot in #1565
- Command validator returns true, false, nil by @jmthomas in #1561
- Improve target file performance by @jmthomas in #1560
- Setup rails for JSON logging by @ryanmelt in #1568
- Add ability to clear graph data by @jmthomas in #1570
- Add uuid to activities by @jmthomas in #1522
- RECEIVED_COUNT returns 0 if packet not received by @jmthomas in #1569
- Fix spec return code by @jmthomas in #1518
- Change cmd keyword from validator to validate by @jmthomas in #1574
- Fix python sleep and screen formatValue by @jmthomas in #1576
- Deterministic recalculate bit offsets by @ryanmelt in #1577
- Fix LogMessages history by @jmthomas in #1587
- Fix python tcpip_server_interface by @jmthomas in #1578
- Dependencies by @jmthomas in #1582
- Rework Graph edit dialog, change timezone in Astro clock by @jmthomas in #1583
- Add auto-refresh to Bucket Explorer by @ryan-pratt in #1585
- Address security issues by @ryanmelt in #1589
- cli updates by @ryanmelt in #1588
- Dv items by @jmthomas in #1593
- Fix tlm grapher button layout by @jmthomas in #1594
- Roadmap by @jmthomas in #1599
- Bump uplot from 1.6.30 to 1.6.31 in /openc3-cosmos-init/plugins/packages/openc3-tool-common in the npm_and_yarn group across 1 directory by @dependabot in #1602
- Fix Bucket Explorer auto-refresh playwright test for enterprise by @ryan-pratt in #1601
- Command authority documentation by @jmthomas in #1600
New Contributors
- @JL-Brothers made their first contribution in #1415
- @ryan-pratt made their first contribution in #1585
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Re...
v5.18.0
OpenC3 COSMOS 5.18.0 - Multiple variable bit size items in the same packet!
Welcome to OpenC3 COSMOS 5.18.0!
Multiple Variable Bit Size Items
Since the beginning, COSMOS has been able to handle a single variable sized item within packets. Now we can handle multiple! As long as each item has its own associated length field, you can have multiple variable sized items in the same packet.
See the new VARIABLE_BIT_SIZE keyword for packet definitions.
Command Authority (Enterprise)
In COSMOS Enterprise, you can now enable a new mode called Command Authority. In this mode, only one user at a time can command a given target. This can be helpful on multi-operator ops floors to prevent two operators from accidentally sending commands at the same time.
Chromeless mode
Sometimes you would like to open COSMOS up in an IFRAME or a browser tab, and not waste any space with the topbar, navbar, or footer. Well now you can! Just add ?chromeless=true
to your urls and check it out.
New Subtitle Setting
There is a new setting in Admin -> Settings, called Subtitle, that allows you to place text under the OpenC3 logo in the Navbar. This can be really useful to differentiate between multiple installations of COSMOS.
Other Improvements
- Added a new OPENC3_OPERATOR_HOSTNAME environment variable to support pointing to a regular operator while running in Kubernetes (vs the Kubernetes Operator)
- Updated BucketExplorer to show newest files first by default
- Changed Calendar (Enterprise) to allow overlapping activities
- Added a new Signal Strength Widget for TlmViewer
- Moved some log messages to debug within the operator to quiet down microservice start/stop
- Added support for Array indexing in TlmViewer LINEGRAPH
- Added the ability to disable Calendar execution (Enterprise)
- Blank screen widgets no longer say "Value"
- Added vim and ps to UBI images
- Added new playwright.sh to run playwright tests
Other Bug Fixes
- Fixed a timing issue with the build_cmd api that was causing ack timeouts
- Fixed TEMPLATE and Accessors for Python
- Fixed connect() being called twice in Python interfaces
- Fixed screen SUBSETTING application
- Fixed Python Websocket API authentication in Enterprise
- Fixed open_file_dialog in Python scripts
- Fixed an error that occurred if you backspaced away the full name of a telemetry item in an item chooser
- Fixed Image Viewer Widget
- Updated Progress bar to always end at 100% on plugin and package uploads
All Pull Requests in this Release
- Add environment variable for dynamic operator hostname by @ryanmelt in #1378
- Bump certifi from 2023.7.22 to 2024.7.4 in /openc3/python by @dependabot in #1382
- Update topic offsets before wait for ack by @ryanmelt in #1381
- Bucket Explorer list latest first by @jmthomas in #1387
- Bump certifi from 2023.7.22 to 2024.7.4 in /openc3/python by @dependabot in #1384
- Allow overlapping activities by @jmthomas in #1383
- Signal widget by @jmthomas in #1386
- Adjust logging output by @jmthomas in #1385
- Fix python accessors and packet restore_defaults by @jmthomas in #1399
- Remove extra connect in python_microservice by @jmthomas in #1400
- Fix applying subsettings, fix LimitscolumnWidget by @jmthomas in #1401
- Allow array index on graph widget by @jmthomas in #1402
- Add chromeless query parameter support by @ryanmelt in #1403
- Fix python web socket in Enterprise by @jmthomas in #1424
- Fix python open_file_dialog by @jmthomas in #1425
- Calendar settings by @jmthomas in #1404
- Cmd authorization support by @jmthomas in #1423
- Bump dependencies by @jmthomas in #1427
- Fix scope_model and add comments by @jmthomas in #1433
- Remove placeholder from widgets by @jmthomas in #1431
- Fix chooser when deleting values by @jmthomas in #1434
- Add subtitle setting by @jmthomas in #1435
- Fix Dockerfile. Add vim and ps to UBI images by @ryanmelt in #1441
- Multi variable bit size by @ryanmelt in #1436
- Fix markdown issue in documentation issue reporting note by @bismurphy in #1451
- Bump axios from 1.7.2 to 1.7.4 in /openc3/templates/tool_vue by @dependabot in #1472
- Bump axios from 1.7.2 to 1.7.4 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-handbooks by @dependabot in #1474
- Bump axios from 1.7.2 to 1.7.4 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-cmdtlmserver by @dependabot in #1475
- Fix offset when appending items by @jmthomas in #1454
- Image viewer widget update with tlm by @jmthomas in #1469
- Progress by @jmthomas in #1445
- Bump axios from 1.7.2 to 1.7.4 in /openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-dataviewer by @dependabot in #1476
- Add multiple variable bit length items to python by @jmthomas in #1473
- Ability to Run Playwright Tests Locally by @stephen-ritter in #1357
- Bump deps by @jmthomas in #1480
- Update docs with Python info by @jmthomas in #1483
New Contributors
- @bismurphy made their first contribution in #1451
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to support@openc3.com.
Thanks!
Full Changelog: v5.17.1...v5.18.0