Skip to content

Contributing

Marko Koljancic edited this page May 28, 2026 · 6 revisions

Home

Contributions to Solarxy are welcome - bug reports, feature ideas, documentation fixes, and code are all appreciated.

How to help

  • Report a bug or request a feature: open an issue. Include your OS, GPU, Solarxy version (solarxy-cli --about), and steps to reproduce. Output from solarxy --verbose (or right-click → Copy in the in-app console) is gold for debugging.
  • Ask a question or share a use case: head to Discussions.
  • Propose a code change: fork the code repository, create a topic branch, and open a pull request against main. Small focused PRs with a clear description are the easiest to review. (Wiki edits use a different flow - see the next bullet.)
  • Improve docs: this wiki accepts direct contributions on its own repository (solarxy.wiki.git). Clone it, edit the markdown on the develop branch, commit, and push to master once a coherent slice is ready. GitHub wikis don't accept pull requests; flag major edits in an issue first if you want feedback before pushing. Most major pages have a "See also" footer; keep cross-references consistent.

Architecture & code conventions

For contributors hacking on the codebase, the developer-facing architecture notes live in the repo's CLAUDE.md. It covers:

  • The 7-crate workspace layout (solarxy, solarxy-core, solarxy-formats, solarxy-renderer, solarxy-app, solarxy-validate, solarxy-cli)
  • GPU uniform layout invariants (hand-rolled #[repr(C)] structs with size asserts)
  • The IBL chokepoint pattern (rebuild_light_bind_group in solarxy-app/src/state/update.rs)
  • Sidebar ↔ state plumbing via GuiSnapshot
  • Cross-crate type ownership rules
  • Review system data model (solarxy-core/src/review.rs) + app-side state (solarxy-app/src/state/review.rs) + UI (solarxy-app/src/gui/review_panel.rs, review_overlay.rs, review_popup.rs, review_visuals.rs)
  • Validation orchestrator + pipeline adapters (solarxy-validate crate - GitHub Actions / generic-JSON, plus a library API for external vendors)
  • Dockable layout persistence (solarxy-app/src/gui/dock.rs + solarxy-core/src/preferences.rs::DockPrefs)
  • Material Inspector thumbnail caching (solarxy-app/src/gui/material_inspector.rs)

Deeper maintainer-facing notes live in the repo's docs/ directory - docs/review-system.md (the Review System anchor-stability contract) and docs/integrations/ (the CI/CD recipe sources).

Keep clippy at pedantic with the per-crate allow lists at the top of each lib.rs. Run cargo fmt, cargo clippy --all-targets, and cargo test --workspace before opening a PR.

Release notes

The canonical changelog lives at Release Notes on this wiki. There is no in-repo CHANGELOG.md - release-note authoring happens here, and the GitHub Release body is generated from cargo-dist's manifest.

See also: Release Notes · User Guide

Clone this wiki locally