Skip to content

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 4

The 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 links

The 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.py

Commit 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, CI and 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>.