Thanks for helping build the protocol workbench. Small, verifiable changes are preferred over large rewrites.
- Open an issue describing the protocol behavior, UI problem or platform gap.
- Fork and branch from
main. - Keep one concern per pull request.
- Build and run the checks below.
- Describe the exact command and output used to verify the change.
./scripts/build.sh
./build/uvscope --self-check
npm --prefix web run typecheck
npm --prefix web run build
npm --prefix web run check:i18n
bash ./scripts/smoke-test.sh ./build/uvscope 18787 18788
bash ./scripts/h2-smoke.sh ./build/uvscope 18820 18821
python3 -m pip install mkdocs-material && mkdocs buildsmoke-test.sh needs curl, node, openssl and python3 for the full matrix. For UI changes,
include a screenshot at 1600×1000 (and a narrow viewport if relevant). Follow the
Code of Conduct.
- C++17, RAII, no blocking I/O on the main event loop. Short probes go through the libuv thread pool; long-lived services get their own loop/process boundary.
- Keep API errors in the
{ ok, error, code }shape. - New modules need:
- a module id and a default toggle;
- a server-side permission check;
- a navigation entry;
- a safe empty state and a failure state;
- an entry in the development plan.
- Do not invent protocol data. If a transport does not expose a field, return
null/omit it and document the limitation. - Do not add a second networking stack. All target connections go through libuvcpp. If a capability is missing, fix or patch libuvcpp and record the upstream reference.
uvscope builds against the libuvcpp v1.8.2 release SDK. One patch is currently carried on top
of that tag: patches/upstream/0005-ws-client-handshake-headers.patch, which adds
uvcpp_ws_client::set_handshake_header() so the backend WebSocket debugger can send
Authorization, Origin, Cookie and Sec-WebSocket-Protocol during the Upgrade request. The
earlier SNI, POSIX timeout, install-completeness and SOCKS5 stage patches were retired in
1.8.1/1.8.2; see docs/LIBUVCPP_UPSTREAM.zh-CN.md.
If a new patch is needed, it must include:
- a focused explanation of the failure;
- the smallest possible code change;
- a reproducible test or a precise manual verification;
- a note for the upstream project.
Patch files are applied in filename order by scripts/build-libuvcpp.sh; a patch that no longer
applies must be updated or dropped when the SDK tag moves.
Do not include real credentials, private keys or customer data in issues, tests or screenshots. See SECURITY.md for private reporting. Event schemas and the public API are documented in docs/EVENTS.md and docs/API.md; additive changes are expected within 1.x.
By contributing, you agree that your contribution is licensed under the MIT License.