Contributor guide
Development setup
Install the core toolchain:
- Node.js 24 recommended; Node.js 20 or newer may work when supported by the frontend toolchain;
- pnpm;
- Rust stable;
- platform dependencies required by Tauri 2 on your distribution.
Install dependencies:
pnpm installRun frontend checks:
pnpm check
pnpm test
pnpm build
pnpm docs:buildRun Rust checks:
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo check --workspace
cargo test --workspaceBuild documentation locally:
pnpm docs:buildPreview documentation locally:
pnpm docs:previewBefore changing product behavior
Use the maintained documentation in this site as the policy source for product changes.
Every significant change should explain how it supports the Linux dynamic wallpaper platform rather than the retired wayvid product story. It should also state first-release non-goals when scope could be misunderstood.
Design work should identify its area:
- product foundation;
- Workshop loop;
- compatibility;
- runtime;
- application shell.
When content types or import paths are affected, call out user-facing compatibility implications.
User-facing text and i18n
LWE targets English and Simplified Chinese user-facing surfaces.
When changing user-facing text:
- update both languages;
- check layout impact for longer Chinese or English strings;
- include i18n verification in the task or pull request notes;
- keep terminology consistent with the documentation.
The documentation site mirrors this rule: every maintained page under the English root must have a Simplified Chinese counterpart under docs/zh/.
Documentation rules
- Keep all maintained documentation under
docs/. - Prefer task-oriented pages over archive dumps.
- Delete or merge obsolete planning documents after their useful information is represented in maintained pages.
- Do not reintroduce the deleted
openspec/tree; project guidance now lives in this documentation site. - Keep root README files concise and link to the published documentation for details.
- Do not document unsupported runtime behavior as supported.
- If a feature only works on a verified environment, name that environment.
Testing expectations
Before submitting a change, run the smallest meaningful set of checks. For broad maintenance changes, use:
pnpm check
pnpm test
pnpm build
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo check --workspace
cargo test --workspace
pnpm docs:buildFor documentation-only changes, pnpm docs:build is the required validation.
Real desktop runtime acceptance
Runtime changes must be validated on a real supported desktop session before they are described as supported. The current verified target is Wayland with niri and video wallpapers.
Use this checklist for runtime changes:
- discover at least one active monitor in LWE;
- apply a compatible video wallpaper from Library to one monitor;
- confirm the desktop visibly changes;
- if multiple monitors are present, apply a wallpaper to a second monitor and then clear only one monitor;
- confirm clearing one monitor does not stop wallpapers on other monitors;
- restart LWE and confirm saved assignments are restored or that restore failures are visible in Desktop;
- clear all assignments and confirm the saved session no longer restores them.
Real desktop tests in the Rust test suite are opt-in because they depend on the active compositor, monitor layout, GPU/EGL stack, Steam Workshop content, and local video assets. Run them explicitly on a verified machine:
LWE_REAL_DESKTOP_TESTS=1 cargo test -p lwe-shell desktop_apply_flow -- --nocaptureReporting issues
Useful reports include:
- package type (
lwe,lwe-git,.deb,.rpm, or.AppImage); - distribution and version;
- session type and compositor/desktop environment;
- monitor layout;
- wallpaper type if known (
video,scene, orweb); - compatibility status shown by LWE;
- terminal logs when available.