OpenC3 COSMOS Core 7.0.0 Release Candidate 2 - Welcome to the future of COSMOS!
Welcome to OpenC3 COSMOS Core 7.0.0 Release Candidate 2!
We're super excited to announce the second release candidate of COSMOS 7.
Important
If updating from RC1 you should first do a "openc3.sh cleanup" as all the TSDB table names changed to now include the SCOPE. Note: Cleanup drops all logged data.
Key Changes since RC1:
- TSDB Table Names now contain the SCOPE
- New TEMPLATE_BASE64 Keyword
- New Themes in Admin Settings!
- Several bug fixes involving the TSDB, STRUCTURE keyword, python microservices, and XTCE
This release is months in the making and builds upon all the changes we made to COSMOS 6. Note that this is a Release Candidate and thus should not be used for Production deployments at the moment. We want to allow time for testing and exploration before we announce a final release.
The headline feature of COSMOS 7 is our new time series database (TSDB) powered by QuestDB! This database allows us to speed up our data retrieval times by an order of magnitude and enables optimizations like the removal of the reducer microservices and associated data. This is going to enable a host of new integrations and use-cases. I invite you to enable the QuestDB console and experiment with SQL access to your data!
We've also changed our License from the AGPL to the new COSMOS Builder's License. This gives you the same rights but is more compatible with our new App Store. It explicitly does not allow providing COSMOS as a hosted or managed service.
Breaking Changes
- Migration from MINIO to versitygw as a S3 backend. See upgrading.md for more information.
- Removed plaintext password support for API. See upgrading.md for more information.
New Behavior
- Remove
WITH_UNITSas type. Note that existingwith_unitsAPIs (tlm_with_units,check_with_units, etc) are deprecated and will simply return theformattedvalue. get_target_filenow returns None/nil when file is not found- Return
nil/Nonefor items outside buffer bounds in undersized packets. Previously this would return 0. This allows for sparsely populated packets.
Known Issues
The migration script is currently hard coded to use the logs and config bucket names. If you have renamed these using the .env file OPENC3_LOGS_BUCKET or OPENC3_CONFIG_BUCKET this will not take effect. This will be fixed in the final release.
Enhancements
- UI theming support - check the Admin Settings to change COSMOS colors
- New TEMPLATE_BASE64 keyword for binary templates in the config files
- Queue interface packets by default with update at 0.1s
- Add hover tooltip, context menu, and stale overlay to LIMITSCOLOR widget
- App store API updates
- Optimize command and telemetry decom performance in Ruby and Python
- Add hint to admin console about setting k8s secrets
- New API for scripts and screens to open a browser tab
- Make Command Parameter list scrollable for Command Editor
- Validate SCREEN params and make options dialogs consistent throughout
- Bucket Explorer delete directory
- Telemetry Grapher select graph button
- Migrate Python package from Poetry to UV
- Workflow to restart microservices for a plugin
- Warn when packets are defined without ID_ITEMs
- Add UUID to Script Runner temp files to prevent name collision
- Update to Vite 7
- Update to Rails 8
- Switch from Redis to Valkey
- Switch from Vuex to Pinia
- Switch password hashing algorithm to argon2
Bug Fixes
- Fix xtce_converter CLI crash
- Fixes for STRUCTURE use
- Fix TSDB with Python conversions
- Fix Python custom microservices
- Fix Python script syntax check and CheckError display
- Fix screen overlay in Command Sender and clear transient screen errors in Telemetry Viewer
- Fix secret unpacking in Python
- Fix time picker to remove milliseconds
- Fix Python JSON telemetry performance (10x increase in speed)
- Fix Packet Viewer initial refresh
- Fix Python http client to close the socket on disconnect
- Fix recurring activities on Calendar (Enterprise)
- Fix variable_bit_size command corruption. If a command has more than one VARIABLE_BIT_SIZE declaration it would not be created correctly.
- Fix Script Runner mnemonic checker crashes and false positives
- Fix Telemetry Viewer Textfield input bug in float mode
- Fix Script Runner bug with no scrollbar in message dialogs
- Fix Telemetry Grapher performance with large historical data
- Fix zoom in Data Flow Diagrams
- Fix wait_check blocking on user input when sleep_time is 0
What's Changed RC2
- Fix xtce_converter CLI crash with gem_name nil and PythonProxy .class by @jmthomas in #2841
- TEMPLATE_BASE64 and Fixes for STRUCTURE use by @ryanmelt in #2846
- Prepend scope name to QuestDB table names by @jmthomas in #2848
- Upgrade updates by @jmthomas in #2838
- Add Linux video to documentation by @clayandgen in #2843
- Add new architecture page by @jmthomas in #2845
- Fix QuestDB ingress errors for Python conversions without converted_type by @jmthomas in #2849
- When looking for python binary to replace, need to handle single string and one word per parameter modes by @mcosgriff in #2851
- UI Theming support by @clayandgen in #2852
- Fix TlmViewer Playback missing scope argument by @ryanmelt in #2853
What's Changed RC1
- Queue interface packets by default with update at 0.1s by @jmthomas in #2371
- Remove WITH_UNITS as type by @jmthomas in #2380
- Update to vite 7 by @ryan-pratt in #2518
- 2472 | get_target_file now returns None/nil when file is not found by @EmilyRagan in #2519
- Remove plaintext password support for api by @ryan-pratt in #2588
- Quest setup by @jmthomas in #2578
- Switch password hashing algorithm to argon2 by @ryan-pratt in #2608
- Rails 8 by @jmthomas in #2678
- Reinstall all plugins to support QuestDB by @jmthomas in #2636
- Disable dependabot PRs by @jmthomas in #2725
- Convert streaming api to the TSDB by @jmthomas in #2647
- Switch from Redis to Valkey by @ryanmelt in #2687
- Questdb migration by @jmthomas in #2683
- Switch from Minio to Versitygw by @jmthomas in #2656
- Fix Python script syntax check and CheckError display by @jmthomas in #2737
- Add hover tooltip, context menu, and stale overlay to LIMITSCOLOR widget by @jmthomas in #2734
- Clear transient screen errors and fix screen overlay in Command Sender by @jmthomas in #2733
- [Documentation] Embed feature highlight videos to docs by @clayandgen in #2735
- App store API updates by @ryan-pratt in #2497
- Optimize command and telemetry decom performance in Ruby and Python by @jmthomas in #2726
- Return nil for items outside buffer bounds in undersized packets by @jmthomas in #2685
- Fix secret unpacking by @ryan-pratt in #2736
- Clarify offline installation and project version by @jmthomas in #2745
- Sonarqube cleanup by @jmthomas in #2738
- Bump aquasecurity/setup-trivy from 0.2.4 to 0.2.5 by @dependabot[bot] in #2747
- Add hint to admin console about setting k8s secrets by @ryan-pratt in #2750
- Open tab api for scripts and screens by @jmthomas in #2744
- Update vulnerabilities and codeql config by @jmthomas in #2748
- Add JsonAccessor buffer type tests and improve code quality by @mcosgriff in #2754
- Validate SCREEN params and fix options dialogs by @jmthomas in #2752
- Move curl from devlopment to guides by @jmthomas in #2758
- Add TlmViewer playback test and fix time picker by @jmthomas in #2759
- Document keycloak tokens and update curl examples by @jmthomas in #2762
- Remove "verified" from plugins by @ryan-pratt in #2746
- TSDB decoding consistency by @jmthomas in #2757
- Add throughput testing infrastructure and fix Python telemetry performance by @jmthomas in #2742
- [Enhancement] Packet viewer refresh by @clayandgen in #2761
- Update documentation to include Windows 11 installation video by @clayandgen in #2765
- [Bug] Python Http Client Close by @clayandgen in #2767
- Update dependencies by @jmthomas in #2770
- [Bug] Recurring activities on Calendar by @clayandgen in #2756
- Add CMD/TLM to the TSDB table names by @jmthomas in #2766
- Fix VARIABLE_DESCRIPTION and VARIABLE_STATE docs by @jmthomas in #2778
- Update docs to mention TEMPLATE for tlm accessors by @jmthomas in #2781
- Remove unused packet_log_writer_pair from interface_thread.py by @jmthomas in #2789
- [Bug] Make Command Parameter list scrollable for Command Editor by @clayandgen in #2779
- Bump actions/checkout from 4 to 6 by @dependabot[bot] in #2791
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #2790
- Rename bucket volume & fix received_time in TSDB by @jmthomas in #2784
- Fix variable_bit_size command corruption and add UI support by @jmthomas in #2777
- Fix mnemonic checker crashes and false positives by @jmthomas in #2788
- Better errors for missing required bucket param by @ryan-pratt in #2792
- Bucket Explorer delete directory by @jmthomas in #2794
- Update docs by @ryan-pratt in #2797
- Fix textfield input bug in float mode and improve drag UX by @mcosgriff in #2796
- [Enhancement] Telemetry Grapher select graph by @clayandgen in #2782
- [Bug] Scroll on MessageDialog by @clayandgen in #2793
- Update subscription docs by @jmthomas in #2801
- Add documentation for LATEST packet by @jmthomas in #2802
- Migrates the Python package from Poetry to UV for faster, more reliable dependency management. by @mcosgriff in #2755
- Bump the npm_and_yarn group across 2 directories with 2 updates by @dependabot[bot] in #2775
- Switch from Vuex to Pinia and Additional Notebook Support by @ryanmelt in #2783
- Fix Telemetry Grapher performance with large historical data by @jmthomas in #2800
- Remove REDUCER microservice and data by @jmthomas in #2785
- Workflow to restart microservices for a plugin by @markjmiller in #2667
- Remove the DECOM loggers and add new CMD/TLM_DECOM_RETAIN_TIME by @jmthomas in #2786
- New License for COSMOS 7 by @ryanmelt in #2716
- Maintain State in Data Flow Diagrams by @ryanmelt in #2817
- Update default plugins and cleanup AppNav by @jmthomas in #2812
- Add stored packet documentation to packet-types, interfaces, and protocols by @jmthomas in #2819
- Roadmap updates by @jmthomas in #2824
- Document CRC protocol ordering relative to delineation protocols by @jmthomas in #2820
- Remove deprecated items, update upgrade docs by @jmthomas in #2818
- Bump astral-sh/setup-uv from 7.0.0 to 7.3.0 by @dependabot[bot] in #2808
- Update documentation examples and URLs by @jmthomas in #2815
- Warn when packets are defined without ID_ITEMs by @jmthomas in #2816
- Optimize dockerfile for uv by @mcosgriff in #2811
- Add COSMOS_EXTRA to streaming data by @jmthomas in #2825
- Fix playwright tests and race condition in Bucket Explorer by @jmthomas in #2830
- Fix TSDB Streaming Api by @ryanmelt in #2833
- Add UUID to temp files, parallelize tests by @jmthomas in #2835
- Change uv sync from --locked to --frozen in Dockerfile by @jmthomas in #2836
- Fix wait_check blocking on user input when sleep_time is 0 by @jmthomas in #2832
Full Changelog: v6.10.4...v7.0.0-rc2