name: convertigo-project-editor description: Edit and maintain Convertigo projects (C8Oforms) via YAML in _c8oProject (sequences, connectors, mobile pages/components, shared actions/components, and project metadata). Use when asked to change Convertigo YAML descriptors, sequence steps or SmartTypes, mobile UI definitions, or to validate/reload/build a project after YAML edits.
Convertigo Project Editor
Overview
Enable safe edits of Convertigo YAML in this repo and validate them with the required reload/compile workflow.
Quick start
- Identify the target area (sequence, connector, mobile page/component, shared action/component, project root).
- Locate the YAML under
_c8oProject/or inc8oProject.yamlwith๐references, then edit the referenced file. - Apply YAML/JS rules (indentation, symbols, FormatedContent quoting, Rhino-safe JS).
- Validate with the C8OForms local workflow: reload the project, wait 10 seconds, then open Mobile Builder. Do not use
yaml-delta applyunless explicitly requested.
Project docs (open only when needed)
codex/docs/codex-guidelines.md: project conventions, guardrails, reload/compile workflow.codex/docs/convertigo-yaml-guide.md: YamlConverter rules, symbols, indentation, subfiles.codex/docs/sequence-steps-reference.md: step list and YAML keys.codex/docs/sequence-step-details.md: step parameters and behavior.codex/docs/sequence-step-properties.md: palette names and short descriptions.codex/docs/convertigo-gradle-guide.md: Gradle load/build/deploy commands.codex/docs/front-bug-findings.md: known front issues (reference only; do not edit _private/ionic).
Editing rules (must follow)
- Only modify files under
_c8oProject/unless explicitly requested. - Never edit
_private/ionic/; update the YAML descriptors instead. Treat_private/ionic,DisplayObjects/mobile, generated i18n copies, andngsw-config*files as generated artifacts unless the user explicitly asks to edit generated output. - Keep YAML indentation at 2 spaces; never add tabs.
- Use Convertigo symbols
โ,โ,โ,๐exactly as exported. - For
FormatedContentblocks, keep the opening/closing single-quote lines and use tabs inside the JS body (no extra blank lines). - Keep JS Rhino-compatible (
var, classic functions; avoid modern syntax). - Prefer ASCII; use non-ASCII only when already present in the file (e.g., translations).
Sequence edits
- Choose the proper step type from
sequence-steps-reference.md; confirm parameters insequence-step-details.md. - Preserve SmartType structure and existing step ordering.
- Add variables with safe defaults and short comments when needed.
Mobile pages/actions/components
- Edit YAML under
_c8oProject/mobilePages,_c8oProject/mobileSharedActions,_c8oProject/mobileComponents,_c8oProject/mobileSharedComponents. - Keep
scriptContentJS Rhino-compatible. - Update Monaco/IntelliSense types in shared components when needed (see
codex/docs/codex-guidelines.md). - For shared behavior reused by several editors, search all relevant variants before finalizing (for example
editorPage,itemCondsNavigation,conditionVisibleIf,conditionVisibleIfPrev,FilterBR, and matching viewer/editor shared components).
Validation workflow (required after YAML edits)
- Run YAML lint first (
c8o_yaml_lint.pyor the MCPyaml-linttool when available), thengit diff --check. - Reload the project, wait 10 seconds, then open Mobile Builder. A run is valid only when reload reports no project import error, Mobile Builder is ready, and
compileErrorsis empty. - If generated TypeScript looks correct but the browser/runtime still shows old behavior, suspect a stale served bundle before making more code changes; reload/open Mobile Builder again and retest.
- Fallback:
JAVA_HOME=$(/usr/libexec/java_home -v 17) ./gradlew load --info --no-build-cache --no-daemonif CLI is unavailable. - A run is valid only when no
Exception occurs for project: C8Oformsappears.
Playwright and runtime validation
- If a test uses Convertigo sequences through
/convertigo/projects/C8Oforms/.json, run it withC8OFORMS_BASE_URL=http://localhost:18080, not onlyC8OFORMS_APP_URL=http://localhost:41378/. - Use
C8OFORMS_APP_URL=http://localhost:41378/only for flows that do not need backend sequence calls from the browser origin. - When a Playwright failure conflicts with manual inspection, inspect the trace/snapshot DOM to identify the exact component and loaded bundle before changing code again.
- For existing regression specs, treat the spec as the behavioral contract and update
tests/e2e/regression-manifest.jsononly after the fix is actually validated.
Deliverables
- Provide a short summary of files edited and why.
- Mention how validation was performed, or state explicitly if validation was skipped.