Skip to content

Engineering Process

ecamacho edited this page Jul 10, 2026 · 2 revisions

Engineering Process

Conventions and workflows for working on Jellyx. Read alongside Contributing.

Principles

  • Rust is the source of truth. Audio, state, persistence live in Rust.
  • Svelte is a dumb client. Render state, send commands, nothing more.
  • Audio survives UI reload. Don't put audio logic in the frontend.
  • No video, no tracking, no accounts, no ads. By design. See Privacy and License.

Workspace

jellyx-core      pure domain (no Tauri)
jellyx-desktop   Tauri app: audio, IPC, persistence, sources, updater
jellyx-cli       CLI skeleton
jellyx-ffi       FFI skeleton
ui/             Svelte frontend

See Architecture for the audio pipeline and IPC design.

Conventional commits (required)

Releases are generated from conventional commits. Use the standard prefixes:

Type Use for
feat New feature
fix Bug fix
docs Documentation
refactor Non-behavior code change
test Tests
chore Tooling, deps, build
perf Performance

Branch and PR

  • Keep PRs focused. One concern per PR where possible.
  • Link the issue you're fixing.
  • Run cargo test --workspace and cargo build --workspace before requesting review.

Build and test

# Dev
cargo tauri dev

# Workspace
cargo build --workspace
cargo test --workspace

# Packages
./scripts/build.sh
./scripts/build.sh linux-appimage   # see NO_STRIP=1 note

See Building from Source and Packaging Guide.

Releases

  • Maintainer-driven.
  • SemVer, tag v{VERSION}, release title Jellyx {VERSION}.
  • Three version files must match: jellyx-desktop/Cargo.toml, jellyx-desktop/tauri.conf.json, ui/package.json.
  • Release notes from scripts/generate-release-body.sh.
  • Validation via scripts/validate-release.sh <tag> <release-title> [required-asset ...]; CI supplies the full expected asset list.
  • See Release Process for the full checklist.

Wiki update rule (mandatory)

Whenever a new release tag is created, the wiki MUST be updated in the same release work unit before the release is considered done. This is non-optional. See Wiki Maintenance.

This applies to all contributors doing release work, not only maintainers.

Next step

Clone this wiki locally