Skip to content

Comments

feat: ecosystem submodules, CI improvements, and EasyCLA compliance#605

Merged
DamianReeves merged 11 commits intomainfrom
feature/v4-spec-schema
Feb 4, 2026
Merged

feat: ecosystem submodules, CI improvements, and EasyCLA compliance#605
DamianReeves merged 11 commits intomainfrom
feature/v4-spec-schema

Conversation

@DamianReeves
Copy link
Member

@DamianReeves DamianReeves commented Feb 4, 2026

Summary

Ecosystem Integration

  • Add ecosystem directory with morphir-rust and morphir-examples as git submodules
  • Integrate morphir CLI from morphir-rust into the main crates directory
  • Wire morphir-live to morphir-rust crates via path dependencies
  • Add mise tasks for submodule management (init, update, status, add, pull)

CI/Build Improvements

  • Separate CI jobs for morphir-live and morphir CLI to resolve dependency conflicts
    • dioxus-desktop and extism have incompatible toml_datetime version requirements
    • Each job uses dedicated workspace preparation via mise tasks
  • Add fast-path for docs-only changes (skips Rust builds, completes in seconds)
  • Add path filtering with dorny/paths-filter to detect what changed
  • Add GTK/webkit2gtk dependencies for desktop build validation
  • Add mise init with --ci flag for shallow submodule checkout
  • Replace inline CI scripts with Python-backed mise tasks for maintainability

Configuration

  • Add Renovate grouping rules for: rust, github-actions, mise-tools, docker
  • Normalize line endings to LF via .gitattributes for cross-platform consistency
  • Add husky commit-msg hook to enforce EasyCLA compliance by blocking AI co-author trailers

Code Quality

  • Fix Monaco editor reactivity issues (address Codex review feedback):
    • Make Monaco readiness reactive by reading signal inside effect
    • Use web_sys/js_sys::Reflect for reliable content sync

Test plan

  • Verify submodules initialize correctly with mise run init
  • Verify CI builds both morphir-live and morphir CLI successfully
  • Verify desktop build compiles with GTK dependencies
  • Test commit-msg hook blocks AI co-authors
  • Verify fast-path skips heavy builds for docs-only changes
  • Verify Monaco editor initializes correctly on web

@netlify
Copy link

netlify bot commented Feb 4, 2026

Deploy Preview for angry-raman-7c44f6 canceled.

Name Link
🔨 Latest commit a5afe32
🔍 Latest deploy log https://app.netlify.com/projects/angry-raman-7c44f6/deploys/698316ed7bbdbb000876acc3

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Feb 4, 2026

CLA Signed

The committers listed above are authorized under a signed CLA.

- Add ecosystem/ directory with morphir-rust and morphir-examples submodules
- Create ecosystem/README.md and ecosystem/AGENTS.md for documentation
- Add mise tasks for submodule management (init, update, status, add, pull)
- Add top-level mise init task that depends on submodules:init
- Wire morphir-live to morphir-rust crates via path dependencies
- Move morphir CLI from morphir-rust into crates/morphir
- Update root README.md and AGENTS.md to document ecosystem integration
Add husky commit-msg hook that enforces EasyCLA compliance by blocking
commits with AI assistant co-author trailers (Claude, Cursor, Copilot,
ChatGPT, etc.). This prevents CLA verification failures on pull requests.
@DamianReeves DamianReeves force-pushed the feature/v4-spec-schema branch from 76d68ae to 44979c6 Compare February 4, 2026 08:21
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

// Check global Monaco ready state
let monaco_ready = monaco::use_monaco_ready();
// Use a fixed container ID for the TOML editor
let container_id = "toml-editor-container";
// Effect to initialize the editor instance when Monaco is ready
use_effect(move || {
// Only proceed if Monaco is globally ready and we haven't initialized this editor yet
if !monaco_ready || *editor_initialized.read() {
return;

P1 Badge Make Monaco readiness reactive before init effect

The initialization effect captures monaco_ready as a plain bool before use_effect, so the effect won’t re-run when Monaco becomes ready asynchronously. If the editor renders while monaco_ready is still false (the common case for a CDN-loaded Monaco), the early return at if !monaco_ready prevents initialization permanently, leaving the TOML editor stuck in the loading state. Read the readiness signal inside the effect (or otherwise make it a reactive dependency) so the init logic runs after Monaco flips to ready.


let get_content_script = "window.getMonacoContent('toml-editor-container')";
let result = document::eval(get_content_script);
if let Ok(value) = result.await {
if let Some(new_content) = value.as_str() {
if new_content != last_content {
last_content = new_content.to_string();
pending_content.set(new_content.to_string());

P2 Badge Avoid relying on document::eval return for content sync

The polling loop relies on document::eval to return the string from window.getMonacoContent(...), but Dioxus eval return values are not reliable and often resolve to undefined, which makes value.as_str() return None. In those cases the TOML editor never calls on_change, so edits are silently dropped on web builds. Prefer reading via js_sys::Reflect (as done for readiness) or have JS write the content to a window property and read it via web_sys.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@DamianReeves DamianReeves force-pushed the feature/v4-spec-schema branch 4 times, most recently from ae448c4 to 311bd34 Compare February 4, 2026 09:03
- Add submodules: recursive to all CI checkout steps
- Update mise init task to support --ci flag for shallow submodule clone

The crates/morphir crate depends on morphir-common from the
ecosystem/morphir-rust submodule.
@DamianReeves DamianReeves force-pushed the feature/v4-spec-schema branch from 311bd34 to 9b695e1 Compare February 4, 2026 09:10
- Add path filtering to skip Rust builds when only docs/website files change
- Add lightweight docs job for markdown link checking
- Use dorny/paths-filter to detect what changed
- Update All Checks job to handle conditional job results
- P1: Make Monaco readiness reactive by reading signal inside effect
- P2: Use web_sys/js_sys::Reflect for content sync instead of unreliable
  document::eval return values
- Add onDidChangeModelContent handler to write content to window property
@DamianReeves DamianReeves changed the title feat: add ecosystem submodules and EasyCLA compliance hook feat: ecosystem submodules, CI improvements, and EasyCLA compliance Feb 4, 2026
Remove slow markdown link checker that was making HTTP requests.
Replace with simple file validation that completes in seconds.
@DamianReeves
Copy link
Member Author

Addressed Review Feedback

The issues raised by Codex have been fixed in commit 8a1e503:

P1 - Make Monaco readiness reactive before init effect

  • Fixed by reading monaco::use_monaco_ready() inside the use_effect closure to ensure proper reactive tracking
  • The effect now re-runs when Monaco becomes ready asynchronously

P2 - Avoid relying on document::eval return for content sync

  • Added get_editor_content_js() function that reads content via web_sys/js_sys::Reflect
  • Modified JS to write content to window.__monacoContent_* property on every change via onDidChangeModelContent handler
  • Polling loop now uses get_editor_content_js() instead of unreliable document::eval return value

See: 8a1e503e

- Add ci:prepare-cli-workspace task to prepare workspace for CLI build
- Add ci:validate-docs task for documentation validation
- Replace inline bash scripts with Python-backed mise tasks
- Improves maintainability and cross-platform compatibility
- Add package rules to group updates: rust, github-actions, mise-tools, docker
- Skip mise installation in docs job (uses system Python instead)
- Docs job should now complete in seconds instead of minutes
@DamianReeves DamianReeves merged commit 4549d4a into main Feb 4, 2026
10 checks passed
@DamianReeves DamianReeves deleted the feature/v4-spec-schema branch February 4, 2026 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant