OpenC3 COSMOS Core 7.3.0 - Per-plugin UV environments and .env / compose enhancements
Welcome to OpenC3 COSMOS Core 7.3.0! We've made a bunch of enhancements to Core to support the new Enterprise Script Runner version history and script lifecycles. COSMOS Python plugins now have their own UV environments to protect against cross plugin version conflicts. The Docker compose.yaml and .env files have effectively been made read-only and new compose.override.yaml and .env.local files are now sourced for overrides.
Migration Notes
With the addition of the compose.override.yaml and .env.local you should move all of your compose.yaml and .env updates into these new files. Rename your existing compose.yaml to compose.override.yaml and .env to .env.local. Get the newly released compose.yaml and .env files from the release. Then diff with these files to determine your project specific modifications and remove any defaults or other settings that you're not explicitly overriding. This will make upgrading much easier going forward because you don't have to sync with our defaults.
🛠 Enhancements
Per-plugin Python virtual environments using UV
Make Telemetry Viewer buttons eval safe
Alerts requiring acknowledgement - also set the COSMOS Demo "quiet" (no red / yellow limits violations) by default
Enforce command parameters and telemetry items to 127 characters
Standardize and disambiguate error messages
Allow clearing state color with nil/None in set_state_color
Expose all ENV vars in compose.yaml & create compose.override.yaml
Lower the log level of "Log writer out of order..."
Tsdb batching to reduce CPU
Require whitelist for JsonDRb
🪲 Bug Fixes
Make websocket client subscribe before actions
Bypass time order enforcement for stored packets
Fix ruby final line token parsing
Parse json in python using json.loads instead of literal_eval
Persist screen width on float mode
Fix script stuck in SPAWNING state when auth error
Fix/script runner async races
Support plain dicts for microservice custom status
Fixes for websocket cables to improve Script Runner reliability
Store system_health setting as JSON
Log the given value for write conversion items
Don't enforce whitespace after commas in commands
Always install tools to the DEFAULT scope
Better handle permission errors in TargetPacketIemChooser
What's Changed
- Script Runner version history by @jmthomas in #3411
- docs(cli): add missing unload command to usage and documentation by @mcosgriff in #3565
- Make button eval safe by @ryanmelt in #3560
- [Enhancement] Enforce and document QuestDB Header Size Limit by @clayandgen in #3567
- feat(plugins): add per-plugin Python virtual environments using UV by @mcosgriff in #3429
- Improvements around eslint by @EmilyRagan in #3566
- [Feature] Script Lifecycle by @clayandgen in #3473
- SR Updates: SR Version History + SR Lifecycle by @clayandgen in #3585
- Bump docker/login-action from 4.2.0 to 4.4.0 by @dependabot[bot] in #3571
- Bump step-security/harden-runner from 2.19.4 to 2.20.0 by @dependabot[bot] in #3572
- Bump github/codeql-action/upload-sarif from 4.36.2 to 4.37.0 by @dependabot[bot] in #3546
- Bump docker/setup-buildx-action from 4.1.0 to 4.2.0 by @dependabot[bot] in #3544
- Bump cbor2 from 6.1.2 to 6.1.3 in /openc3/python by @dependabot[bot] in #3549
- Split screen api tests by @EmilyRagan in #3581
- Bump coverage from 7.14.3 to 7.15.2 in /openc3/python by @dependabot[bot] in #3576
- Bump boto3 from 1.43.36 to 1.43.49 in /openc3/python by @dependabot[bot] in #3577
- Bump ruff from 0.15.20 to 0.15.21 in /openc3/python by @dependabot[bot] in #3575
- UV per plugin venv add scope to name by @mcosgriff in #3579
- docs(enterprise): update Enterprise URL to /cosmos-enterprise by @mcosgriff in #3587
- Standardize and disambiguate error messages by @ryan-pratt in #3588
- Updates for OpenC3 Store rebrand by @ryan-pratt in #3592
- Alerts requiring acknowledgement by @jmthomas in #3527
- fix(streaming-api): make websocket client subscribe before actions by @jmthomas in #3580
- fix(logs): bypass time order enforcement for stored packets by @jmthomas in #3559
- Document prompt() Cancel button behavior by @SAY-5 in #3593
- [Documentation] Mixed case docs by @clayandgen in #3595
- fix(interface): populate Queued By for Python target commands by @jmthomas in #3569
- Fix ruby final line token parsing by @jmthomas in #3596
- Update get_screen_list docs by @jmthomas in #3597
- feat(limits): allow clearing state color with nil/None by @jmthomas in #3568
- Parse json in python using json.loads instead of literal_eval by @jmthomas in #3558
- Expose all ENV vars in compose.yaml by @jmthomas in #3564
- [Bug] Persist screen width on float mode by @clayandgen in #3609
- [Documentation] Small doc updates by @clayandgen in #3616
- group updates to one PR per package ecosystem per week by @EmilyRagan in #3619
- build(deps): bump the github-actions group with 8 updates by @dependabot[bot] in #3625
- Lower the log level of "Log writer out of order..." by @ryan-pratt in #3618
- Add Persistence note and fix tests by @jmthomas in #3621
- Update architecture images by @jmthomas in #3633
- fix(uvinstall): make per-plugin venv install offline-first and network-bounded by @mcosgriff in #3594
- Update OPENC3_ENTERPRISE_REGISTRY for forgejo by @ryan-pratt in #3639
- Eslint allow console error by @EmilyRagan in #3640
- Fix script stuck in SPAWNING state when auth error by @ryan-pratt in #3613
- Make Enterprise API key message not dismissable by @ryan-pratt in #3635
- Tsdb batching by @ryanmelt in #3614
- feat(coverage): collect Playwright coverage via V8 and sourcemapped builds by @jmthomas in #3612
- Fix/script runner async races by @jmthomas in #3610
- Fix playwright startup and add bucket tests by @jmthomas in #3647
- Require whitelist for JsonDRb by @ryanmelt in #3643
- Update CANVAS docs by @jmthomas in #3644
- fix(python): support plain dicts for microservice custom status by @jmthomas in #3660
- Fix uv plugin venv offline cache pr fixes by @mcosgriff in #3648
- Harden script status by @EmilyRagan in #3645
- Eslint require await by @EmilyRagan in #3641
- fix(settings): store system_health setting as JSON by @jmthomas in #3652
- fix(api): permit reaction action environment and alert params by @jmthomas in #3665
- fix(command_decom_topic): log the given value for write conversion items by @jmthomas in #3661
- Fix/3658 cmd comma whitespace by @jmthomas in #3662
- fix(tools): always install tools to the DEFAULT scope by @jmthomas in #3664
- Harden metadata test by @EmilyRagan in #3646
- build(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #3637
- Bump dependencies by @jmthomas in #3669
- Better handle permission errors in TargetPacketIemChooser by @jmthomas in #3598
- Eslint no-floating-promises by @EmilyRagan in #3642
New Contributors
Full Changelog: v7.2.1...v7.3.0