- Code: Java in
src/openaf/**(packagesopenaf.*), plus JS utilities injs/, templating inhbs/, CSS incss/, fonts infonts/and documentation indocs/. - Build assets:
lib/,bin/,jslib/,jsmin/. - Outputs:
openaf.jarandopenaf.jar.origat the repo root after a build. - Tests: under
tests/(pairedautoTestAll.*.yamlorchestrators and*.jstest logic).
- Build (OpenAF installed):
ojob build.yaml— compiles Java and assemblesopenaf.jar. - Build (local bootstrap):
_oaf/ojob build.yaml— use the workflow from BUILD.md. - Test (recommended):
cd tests && ojob autoTestAll.yaml— runs the full suite and writesautoTestAll.results.jsonplus SVG summaries. - Test (using built JAR):
cd tests && java -jar ../openaf.jar --ojob -e autoTestAll.yaml. - Quick run example:
java -jar openaf.jar --versionoropenaf -c 'print("ok");'if CLI installed.
- Java: standard conventions (classes
CamelCase, methods/fieldscamelCase, constantsUPPER_SNAKE). Indent with 4 spaces, UTF‑8, LF endings. - Java packages: keep under
openaf.*; place new plugins insrc/openaf/plugins/when appropriate. - JavaScript/YAML: 2‑space indent; end statements with semicolons in JS; filenames use kebab/camel to match neighbors.
- No strict linter config is enforced; match surrounding style and minimize diff noise.
- Framework: OpenAF oJob + JS tests in
tests/driven byautoTestAll.*.yaml. - Naming: add focused
autoTestAll.<Area>.{yaml,js}pairs; prefer small, deterministic tests. - Coverage: include tests for new behavior and regressions; update any golden outputs if applicable.
- Run
ojob autoTestAll.yamlbefore pushing; ensure SVG badges (tests/*.svg) and*.results.jsonreflect success.
- Commits: imperative, concise subjects (e.g., "Add …", "Fix …", "Upgrade …"); group related changes.
- PRs: include a clear description, rationale, breaking‑changes note, and how to test. Link issues. Include build/test results and any doc updates.
- Checklist: build passes, tests green, no unrelated changes, follows directory/package conventions.
- Requirements: build with JDK 24+; runtime JRE 21+ (see README/BUILD). Avoid committing large binaries beyond the produced JARs. Review external deps in
pom.xmlanddependencies.jsonwhen updating.