Development
kknow is open source under the MIT License. This page tells how to build it and run the tests.
Requirements
- Rust (stable);
- Node.js 24 and pnpm;
- the Tauri 2 system dependencies for your platform;
- optional: Docker, for the sync tests against MinIO.
Get the code
git clone https://github.com/akuchin/kknow.git
cd kknow
pnpm installui and site are pnpm workspace packages, so one install covers all of them. Run all commands from the repository root.
Run
pnpm dev # the app with hot reload
pnpm ui:mock # only the interface, in a browser, with stubs
cargo run -p kknow-cli -- --vault testdata/vault statspnpm ui:mock needs no Rust build. Stubs replace the core commands. The settings window is at /settings.html.
Build
pnpm build:app # kknow.app in target/release/bundle/macos/
pnpm install:app # build and install to /Applicationsopen -a kknow and Open With work only with the installed app. macOS needs the bundle to know that kknow opens Markdown.
Test
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
pnpm ui:test # UI unit tests
pnpm ui:e2e # smoke tests in Chromium on the stubsThe sync tests against a real S3 have the #[ignore] mark. They need MinIO:
docker compose up -d
cargo test -p kknow-sync --test minio -- --ignoredThis site
The documentation is a VitePress site in site/.
pnpm docs:dev # http://localhost:5173/
pnpm docs:buildA push to main that changes site/ publishes the site to GitHub Pages.
Make a release
The git tag is the version:
git tag -m "kknow v0.6.0" v0.6.0
git push origin v0.6.0GitHub Actions builds the app and the CLI for all platforms, signs the update archives and publishes the release. Then it updates the Homebrew cask and the Scoop manifests. The README in the repository lists the secrets that the workflow needs.
Read next
- ARCHITECTURE.md — the design and the reasons for each decision.
- TODO.md — the open work.
