Requirements:
- Node.js 20 or newer
- pnpm 9
- Python 3.10 or newer
- Ruff 0.16.x
pnpm install --frozen-lockfile
python3 -m pip install --requirement requirements-dev.txt
pnpm checkDo not use another package manager or regenerate pnpm-lock.yaml in another lockfile format.
Read docs/architecture.md before changing backend boundaries, Steam integration, persistence, or network behavior.
Decky is a thin Zaparoo Core client. New reader, media, mapping, launch, backup, credential, or update logic belongs in zaparoo-core. The narrow exception is explicit installation/start of a missing standalone Core through its published installer interface. Coordinate lifecycle and API changes across repositories and retain backward compatibility where possible.
- Keep one concern per pull request.
- Add tests for changed behavior.
- Run
pnpm checkandpnpm package. - Do not commit generated output or local Deck state.
- Document new external URLs, persistence, permissions, or dependencies.
- Include real Steam Deck evidence for controller focus or Steam UI behavior.
- Do not request root mode, bundle binaries, invoke shell strings, or use private Decky plugin-management APIs.
- Keep bootstrap hosts, assets, subprocesses, output, time, and archive extraction bounded and tested.
- Use official Decky controller-native components.
- Keep one scrollable Quick Access Menu page.
- Keep read-only rows focusable when needed for controller scrolling.
- Use Zaparoo App and Core terminology.
- Reserve toasts for tag-write success and failure.
- Avoid em and en dashes in user-facing strings.
- Never patch or mutate Steam game pages.
Before proposing a release:
- Bump
package.jsonversion. - Update
CHANGELOG.md. - Run
pnpm checkandpnpm package. - Test changed behavior on a Steam Deck.
- Obtain explicit approval before publishing.
- Tag the matching
vX.Y.Zversion. Release automation publishes versioned ZIP plus stableZaparoo.zipmanual-install asset.