feat(desktop): embed BoosAPI Desktop client as a subproject

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.
This commit is contained in:
boos
2026-06-22 11:32:57 +08:00
parent d9c78ecc73
commit e0a5f57793
2305 changed files with 449355 additions and 0 deletions
@@ -0,0 +1,60 @@
# 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)