Contributing
Run from source
Set up a local development environment and build yapmod yourself.
To work on yapmod you need a normal desktop development setup: Node.js for the injected scripts and the Rust toolchain for the desktop shell.
Before you start yapmod is early and moves quickly. If you are planning anything larger than a small fix, open an issue first so the direction is agreed on.
Requirements
- Node.js and pnpm
- The Rust toolchain
- Tauri 2’s system dependencies for your operating system (see Tauri’s prerequisites guide)
Set up
git clone https://github.com/ilyeshdz/yapmod
cd yapmod
pnpm install
pnpm --dir web install --frozen-lockfile --ignore-workspace
Develop
Start the desktop app in development mode from the repository root:
pnpm tauri dev
This makes a one-time client build, then opens the Yapmod window. The window loads the live Yapper site.
To develop the website-backed community theme and plugin catalogs locally, start the website in a second terminal before opening Settings → Themes → Community or Settings → Yapmod → Plugins → Community:
pnpm --dir web dev
The app’s debug build reads both catalogs from the local Astro server at 127.0.0.1:4321. The dev command prepares catalog data and package files from community-themes/ and community-plugins/ before starting Astro. Release builds use the published Yapmod website.
When working on files in client/, optionally run this in a second terminal to rebuild the bundle after each edit:
pnpm client:dev
Restart the app after an edit to load the rebuilt bundle. The watcher rebuilds files only; it does not hot-swap code into a running app.
To preview the client-update prompt without a signed update feed, start a debug build with the local test switch:
YAPMOD_TEST_CLIENT_UPDATE=1 pnpm tauri dev
This shows a simulated local-test update so you can try Later, the reminder, and Restart now. It does not install a client bundle. The switch is ignored by release builds; quit the app and start it again without the variable to return to normal update checks.
Build
Run the project checks before opening a pull request:
pnpm check
This type-checks and bundles the client, checks Rust formatting and lints,
verifies generated types, and checks and builds the website. Install the
website dependencies once with the setup command above. You can run the
checks for one part of the project with pnpm check:client, pnpm check:rust,
or pnpm check:web.
# type-check the injected client
pnpm client:check
# bundle the client (also runs automatically for Tauri builds)
pnpm client:build
# build the installers for your platform
pnpm tauri build
Command reference
| Command | What it does |
|---|---|
pnpm tauri |
Runs the Tauri CLI. |
pnpm client:build |
Bundles client/ into the app’s embedded fallback scripts. |
pnpm client:dev |
Watches and rebuilds the client bundle for local development. |
pnpm client:check |
Type-checks the injected client. |
pnpm types:generate |
Regenerates the TypeScript types from the Rust types. |
pnpm check |
Runs the full client, Rust, generated-type, and website checks. |
pnpm check:client |
Type-checks and bundles the injected client. |
pnpm check:rust |
Checks Rust formatting, lints, and generated types. |
pnpm check:web |
Type-checks and builds the website. |
The website in web/ is a separate Astro project. Run these commands from that directory:
| Command | What it does |
|---|---|
pnpm dev |
Starts the site on localhost:4321. |
pnpm build |
Builds the site into dist/. |
pnpm check |
Type-checks the Astro components. |
Where to look next
- Contributing for how to get a change in.