Development
git clone https://github.com/s00d/tauri-plugin-keyring-store
cd tauri-plugin-keyring-store
Rust
cargo fmt --all
cargo clippy --all-targets --all-features -- -D warnings
cargo test
cargo test --no-default-features
Unit and IPC tests (through tauri::test) run against the in-memory mock store of keyring-core.
tests/keyring_live.rs writes, reads and deletes one entry in the real OS store under a unique
service name and always cleans up. It skips itself when no store is reachable, unless
KEYRING_LIVE_REQUIRED=1 (set in CI).
On a headless Linux machine run the tests inside a D-Bus session with an unlocked keyring:
dbus-run-session -- bash -c 'echo -n pw | gnome-keyring-daemon --unlock --components=secrets; cargo test'
JavaScript
pnpm install
pnpm typecheck
pnpm test # Vitest, mocks @tauri-apps/api/core
pnpm build # Vite (ESM + CJS) + d.ts, then publint, attw and an ESM/CJS smoke check
Example app
examples/tauri-app
uses the plugin from the repository (desktop, Android and iOS):
cd examples/tauri-app
pnpm install
pnpm tauri dev
CI
GitHub Actions runs the Rust and JavaScript checks on Linux (with gnome-keyring), macOS and Windows, and
cross-builds the crate for Android (aarch64-linux-android) and iOS (aarch64-apple-ios).
This site
The site lives in docs/
(Nuxt + Nuxt UI + Nuxt Content). The API reference, command, permission and changelog pages are
generated from guest-js/index.ts, src/commands.rs, permissions/ and CHANGELOG.md by
docs/scripts/generate.mjs on every build: edit those sources, not the generated pages.
cd docs
pnpm install
pnpm dev # http://localhost:3000
pnpm generate # static site in .output/public
The site is deployed to GitHub Pages from main by .github/workflows/docs.yml.