PaintNode is currently in early MVP development. Contributions and issue reports are welcome once the repository is public, but please keep changes focused and aligned with the app's AI-companion architecture for local model CLIs and layered documents.
npm ci
npm run tauri:devRun:
npm run check
npm test
npm run buildAll three must pass. npm run check must report 0 errors and 0 warnings.
- Keep pull requests focused on one bug fix, feature, or documentation change.
- Fill in the pull request template and describe the validation you ran.
- Wait for CI to pass before requesting review.
- Do not include secrets, signing assets, private keys, or local environment files.
- Changes to release signing, updater behavior, or GitHub Actions require extra maintainer review.
Unless explicitly stated otherwise, contributions are submitted under the same license as PaintNode: GNU General Public License v3.0 or later.
The PaintNode name, logo, icon, release channels, and other brand assets are reserved by White Cornerstone Pty Ltd. See TRADEMARKS.md.
- Keep framework-agnostic engine logic in
src/lib/engine/. - Keep Svelte runes and UI state in
src/lib/state/andsrc/lib/components/. - Prefer pure functions and dependency injection for engine logic so it stays unit-testable.
- Use Fluent System Icons through
src/lib/icons/index.tsand the sharedIcon.sveltewrapper. - Icon-only controls need the shared tooltip action and an
aria-label. - Follow
AGENTS.md.exampleanddesign.mdfor project-specific UI and architecture conventions.
Release and updater changes should also update docs/release.md when the process changes.