How to contribute
Issues and PRs are welcome. Code boundaries, the CI workflows, release builds and their secrets are in CONTRIBUTING.md.
Local checks
The same checks CI runs:
bash
# server/
uv run --with pytest pytest -q
# web/
pnpm install --frozen-lockfile && pnpm build
for f in *.check.ts; do node --experimental-strip-types "$f" || exit 1; done
# app/ (use the pub host recorded in pubspec.lock)
PUB_HOSTED_URL=https://pub.flutter-io.cn flutter pub get --enforce-lockfile
flutter analyze --no-pub && flutter test --no-pub -j 4The Android JVM and Swift checks are in .github/workflows/app.yml; the firmware host checks are in .github/workflows/firmware-check.yml.
Docs site
The docs site lives in docs/ and is built with VitePress:
bash
cd docs
pnpm install --frozen-lockfile
pnpm docs:dev # preview locally
pnpm docs:build # build to docs/.vitepress/dist and check for dead linksThe tables in HTTP API and MCP tools are generated by a script. After you change an endpoint, regenerate them from the repository root and commit:
bash
uv run --project server python docs/gen-api.pyCommit messages
- Format
[type][Area] subject: in English, imperative, a subject line of at most 72 characters, details in the body. - type:
feat,fix,chore,ci,perf,doc,test; Area:Server,App,Firmware,Web,CIand others, which you can stack ([fix][Server][Web]). - No
Co-authored-by.
Binary files such as screenshots don't go into main: push them to the assets branch first (add only, never change; name them img/<name>-<yyyymmdd>.ext), then link them as https://raw.githubusercontent.com/suyiiyii/alldayrec/assets/img/<file>.