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.
Tests — helpers & midstate probes
This short guide explains how to run the mid-typing (midstate) tests and regenerate parser probe output used by the test suite.
Why
- Mid-typing tests exercise the parser's provisional states (unclosed fences, loading links, emoji shortcodes, etc.).
- When Vitest output is not fully available (CI or remote tooling), the probe script writes
test/probes/parse-output.jsonso you can inspect the AST node shapes and tune tolerant assertions.
Common commands (zsh / macOS)
Run the full test suite (CI mode):
CI=1 pnpm test
Run only the midstate test file (verbose):
CI=1 pnpm vitest run test/markdown-midstates.test.ts --reporter verbose
Run a named block/describe using grep (fast):
pnpm vitest -t 'additional mid-state edge cases' --reporter verbose
Regenerate the probe JSON (writes to test/probes/parse-output.json):
node test/probes/parse-probe-write-tmp.cjs
Inspect the probe output (first 200 lines):
macOS / zsh
sed -n '1,200p' test/probes/parse-output.json
Test helper notes
- Use
test/utils/midstate-utils.tshelpers instead of brittle JSON.stringify checks:textIncludes(nodes, stringOrRegExp)— safe recursive search (supports RegExp and raw strings)collect(nodes, type)— gather all nodes of a given type from an ASThasLoadingLink(nodes)andlinks(nodes)— helpers for link mid-states
- Tests are intentionally tolerant: they prefer structured nodes when present but accept plain text fallback (useful when optional plugins are disabled).
If you see a failing midstate test:
- Run the probe script to capture the parse AST for the failing input.
- Inspect
test/probes/parse-output.jsonto see exactly which node fields exist (e.g.text,raw,children,loading). - Adjust assertions to use
textIncludes(...)orcollect(...)to be tolerant of AST variations.
If you'd like, I can:
- Sweep tests for remaining fragile patterns and replace them conservatively in small batches (I already fixed the most obvious cases).
- Add stricter/gated assertions behind an env var if you want deterministic enforcement in CI.