diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 055c116..62c2ac8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,21 @@ jobs: - run: pnpm test + - run: pnpm knip + + - run: pnpm tsx scripts/check-doc-paths.ts + + # scripts/find-unnamed-buttons.mts lands via a sibling task. Guarded so + # this step is a no-op until that branch merges, rather than failing + # every run in the meantime. + - name: Check for unnamed accessible buttons (client) + run: | + if [ -f scripts/find-unnamed-buttons.mts ]; then + pnpm tsx scripts/find-unnamed-buttons.mts client + else + echo "scripts/find-unnamed-buttons.mts not present yet (lands via a sibling task) — skipping." + fi + # docs/api-routes.md is generated from the Fastify route registry, so it # can only be wrong if someone changed a route and did not regenerate it. # This step is what makes that impossible to merge. It runs last because diff --git a/README.md b/README.md index edc5330..9441e3e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,17 @@ # Tutor +[](https://github.com/rsml/tutor/actions/workflows/ci.yml) +[](LICENSE) +[](https://github.com/rsml/tutor/releases/latest) + +Start here. [ARCHITECTURE.md](ARCHITECTURE.md) is the entry point for technical readers. The vocabulary is in [CONTEXT.md](CONTEXT.md) and the decisions, with what each one cost, are in [docs/adr/](docs/adr/README.md). + **Read smarter — personal tutors disguised as books.** Books suggested and generated just for you based on your feedback, quiz results, and unique learning style. Talks about this project live in [rsml/talks](https://github.com/rsml/talks). -Reading the code? Start at [ARCHITECTURE.md](ARCHITECTURE.md). The vocabulary is in [CONTEXT.md](CONTEXT.md) and the decisions, with what each one cost, are in [docs/adr/](docs/adr/README.md). -
+## Architecture
+
+```mermaid
+flowchart LR
+ features["client/features/