Skip to content

Contributing

Work from this project directory. Keep changes limited to Elsewindow and its explicit published dependency contract.

Before submitting a change:

make format
make check

Packaging changes also require make package reproducibility smoke. Documentation changes require make docs-audit. Workflow changes require make validate-actions. Lifecycle or image changes require make live-preflight and make live-test; installer changes require make xpra-installer-test.

Changes to package installation or image preparation also require the relevant container acceptance target from Development. Changes to Xpra arguments require a fresh comparison with both canonical fork YAML files and tests of the complete assembled argv.

Direct Python pins belong in the matching requirements*.in file. Each tool input extends requirements.in; run make lock and review all six generated .txt locks after changing a direct dependency. Do not hand-edit a lock.

Review for these properties:

  • no secondary authentication or reconnect path;
  • no forwarding or Xpra TCP listener;
  • cleanup targets only recorded owned resources;
  • errors remain bounded and path-free;
  • profile values have one YAML authority;
  • package and image operations fail closed before mutation or publication;
  • internal links are relative and repository-owned text is English;
  • no source, test, documentation, or tool from another application project is present.

Do not commit generated caches, environments, image descriptors, package archives, credentials, SSH material, or host paths.