e0a5f57793
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as a monorepo subdirectory under desktop/. Source only — node_modules, dist, Cargo target and the upstream .git history are excluded. desktop/ keeps its own independent Cargo workspace (desktop/src-tauri with crates/*); it is not part of the backend boosapi crate, so a `cargo check` at the metapi root still compiles only the backend. Build the desktop app from desktop/src-tauri per desktop/README.md. Note: app icons are still placeholder assets pending the final BoosAPI logo. The updater signing keys live outside the repo and are not included.
61 lines
2.7 KiB
Markdown
61 lines
2.7 KiB
Markdown
# Contributing to markstream-vue
|
|
|
|
Thanks for helping improve the project! This guide keeps contributions fast and consistent.
|
|
|
|
## Quick start
|
|
|
|
1) Fork and clone the repo.
|
|
2) Install deps with `pnpm install` (repo uses `pnpm@10.x`).
|
|
3) Run the playground while you work: `pnpm dev` (or `pnpm play` for the alias).
|
|
4) Make changes under `src/` (library), `packages/` (parser), or `playground/` (demo).
|
|
|
|
## Checks to run
|
|
|
|
- `pnpm lint` — ESLint (Vue + TS).
|
|
- `pnpm typecheck` — vue-tsc.
|
|
- `pnpm test` — Vitest suite; use `pnpm test:update` to refresh snapshots.
|
|
- `pnpm build` — library + CSS build (ensures workers/CSS are emitted).
|
|
|
|
## Pull requests
|
|
|
|
- Follow Conventional Commits (`feat:`, `fix:`, `chore:`, etc.).
|
|
- Add/extend tests for parser changes or rendering behaviors when possible.
|
|
- Include screenshots/GIFs for UI-visible changes (playground/demo).
|
|
- Note any prop/API changes in the PR description; update README or docs if needed.
|
|
- Be kind and follow the [Code of Conduct](./CODE_OF_CONDUCT.md).
|
|
|
|
## Issues
|
|
|
|
- Use the provided issue templates for bugs/feature requests.
|
|
- For rendering bugs, the interactive test page helps generate a shareable repro: https://markstream-vue.simonhe.me/test
|
|
|
|
## Code style
|
|
|
|
- Vue 3 + TypeScript-first, 2-space indent, LF endings (see `.editorconfig`).
|
|
- Components in `src/components` use PascalCase directories/files; utils are camel/kebab as existing.
|
|
|
|
## Releases & tags (monorepo)
|
|
|
|
This repository publishes multiple packages (`markstream-vue`, `markstream-vue2`, `markstream-react`, `stream-markdown-parser`). To keep tags unambiguous, we use **namespaced tags**:
|
|
|
|
- `markstream-vue@<version>`
|
|
- `markstream-vue2@<version>`
|
|
- `markstream-react@<version>`
|
|
- `stream-markdown-parser@<version>`
|
|
|
|
Avoid creating bare `v<version>` tags (they mix different package versions in a monorepo).
|
|
|
|
### Stable vs Nightly
|
|
|
|
- **Stable**: tags are semver-based (`<pkg>@<version>`) and should match npm releases.
|
|
- **Nightly**: tags are commit snapshots (`<pkg>@nightly-YYYYMMDD-<sha>`) and are published as GitHub **Pre-releases**.
|
|
|
|
Nightly tags can be **dependency-driven**: when `stream-markdown-parser` changes, nightly tags are also created for `markstream-vue`, `markstream-vue2`, and `markstream-react` so consumers can test the whole stack against the latest parser.
|
|
|
|
### Common commands
|
|
|
|
- Tag current version of a package: `pnpm tag:vue3` / `pnpm tag:vue2` / `pnpm tag:react` / `pnpm tag:parser`
|
|
- Tag + push to remote: `pnpm tag:vue3:push` / `pnpm tag:vue2:push` / `pnpm tag:react:push` / `pnpm tag:parser:push`
|
|
- Backfill namespaced tags from existing legacy `v*` tags (dry run): `pnpm tag:backfill:dry`
|
|
- Apply backfill locally: `pnpm tag:backfill` (add `-- --push` to also push tags)
|