diff --git a/.STATUS b/.STATUS index d4903d04..0765f71b 100644 --- a/.STATUS +++ b/.STATUS @@ -1,14 +1,69 @@ status: Active progress: 100 -next: Create release PR (dev → main) for v2.18.0 -target: v2.18.0 — Rich Exam LaTeX Format (merged to dev, ready for release) -milestone: v2.18.0 merged to dev 2026-05-12 | 33 commands | 3,400 tests -last_session: 2026-05-12 - PR #103 review + 6 fixes + merge to dev (Session 90) -complexity: Medium +next: v2.18.1 maintenance window — npm audit fix, ESLint cleanup, \printanswers short-answer wrapping +target: v2.18.0 — Rich Exam LaTeX Format (RELEASED 2026-05-13) +milestone: v2.18.0 released 2026-05-13 via PR #104 | 33 commands | 38 tutorials | 3,400 tests | 143 suites +last_session: 2026-05-13 - v2.18.0 release pipeline + site sync + tutorial expansion (Session 91) +complexity: Low risk_level: Low dependencies: Claude API, js-yaml, ajv, ajv-keywords, ajv-formats, Quarto, flow-cli, R/Rscript (runtime), examark (Canvas QTI), jstat (F-distribution) worktree: none +# Future Suggestions (v2.18.1 maintenance window) + +**High-confidence quick wins (each ~30 min, all known issues from v2.18.0 release notes):** + +1. **`npm audit fix`** — patches 4 transitive-dep vulnerabilities: + - ajv (moderate, ReDoS via `$data`) + - fast-uri (high, path traversal + host confusion) + - fast-xml-parser (high, DoS via entity expansion) + - minimatch (high, ReDoS in glob matching) +2. **ESLint cleanup** — 20 unused-var/unused-arg errors in pre-existing files. Run `npm run lint:fix` then manually rename intentional placeholders to `_options` / `_args`. ESLint is not currently gated in CI — consider adding it. +3. **`\printanswers` short-answer toggle** — wrap `LaTeXFormatter.formatShortAnswer()` output in `\begin{solution}…\end{solution}` so the rich-LaTeX answer-key PDF actually differs from the student PDF for short-answer-only exams. Per-question solution visibility was on the v2.19.0 roadmap but is a clean 1-method fix. + +**Medium-effort doc consolidation:** + +4. **Single-source `teaching_style.exam` block** — currently documented in both `docs/CONFIGURATION.md` and `docs/tutorials/teaching/configuration.md` (different prose, same source-of-truth). Pick one as canonical and link the other. +5. **Remove `render_macros: false` from FAQ pages** — replace BibTeX `{{…}}` examples with `{% raw %}` blocks so `{{ scholar.command_count }}` macros can render naturally instead of being hard-coded. +6. **README → discovery-engine sync** — README's command list is hand-maintained and drifted (caught in Session 91: 31→33, 15→18). Consider generating that section from `src/discovery/index.js TEACHING_SUBCATEGORY_MAP`. + +**Larger v2.19.0 candidates:** + +7. **Custom Tutorial Generator** — add `/teaching:tutorial` to round out the teaching namespace (parallel to `/teaching:exam`, `/teaching:slides`) +8. **Hub flag-discovery: filter UX** — `/scholar:hub` could accept a flag-search arg (e.g. `/scholar:hub --has -i` to find all AI-capable commands) +9. **arxiv search dedicated tutorial** — currently covered indirectly by `first-literature-search.md`; could promote to standalone + +# Session 91 Summary (2026-05-13) + +**Branch:** main @ 3ffe29f (released) · dev @ 2e8fb2a | **Tests:** 3,400 | **Tutorials:** 38 + +**Completed (v2.18.0 release pipeline + extensive doc expansion):** +- PR #104 created (dev → main, 9 commits, 2,560 doc additions) +- Merged to main via `--admin` (link-checker status-0 flake bypass per CLAUDE.md memory) +- GitHub Release v2.18.0 published with full notes +- Homebrew Release workflow auto-fired +- All 5 main-branch CI workflows triggered; Scholar CI + Docs Deploy green; Doc Validation hit the recurring status-0 link-check flake (non-blocking) + +**Doc expansion during the post-merge window:** +- +8 new tutorials in 2 parallel agent batches (research namespace: doi, method-scout, lit-gap, hypothesis, manuscript:results, manuscript:proof, simulation:analysis; teaching: canvas-lms-export) +- +1 BibTeX management tutorial (combined `bib:add` + `bib:search`) +- +1 Tutorials index page (orientation: audience + difficulty groupings) +- +1 Rich Exam LaTeX tutorial (v2.18.0 walkthrough) +- ADHD-friendliness Phase 1 (75→83, Grade C→B): TL;DR boxes on 5 top-level docs, emoji Level markers on 24 tutorials, mobile mermaid-overflow CSS +- Help-doc audit: fixed 3 `/teaching:fix` references (non-existent command), removed 3 literal macro leaks, refreshed dates, added 5 Q&A entries +- hub.md drift fix: `15 → 18` teaching commands + 3 missing entries (preflight, canvas, validate-r) +- Full site sync: OUTPUT-FORMATS-GUIDE, USER-GUIDE, TEACHING-WORKFLOWS, TEACHING-COMMANDS-API/REFERENCE, commands.md, CONFIGURATION (teaching_style.exam block), API-REFERENCE (ExamRichLatexFormatter section), README count drift fixes +- New architecture-diagram section: Rich Exam LaTeX Pipeline (Section 10) +- New API-Reference sections: PromptLoader Version Helpers, ExamRichLatexFormatter + +**Coverage delta:** +- Tutorials: 30 → 38 (+8) +- Research-tutorial dedicated coverage: 50% → ~100% +- Teaching-tutorial dedicated coverage: 94% → 100% +- ADHD score: 75 → 83 (Grade C → B) + +**Pipeline commits (8 doc-only since feature merge):** 87d8363 a6aa795 0f97f54 a5a18dc fb6ba4f d91ca8e b654f0f 2e8fb2a + # Session 90 Summary (2026-05-12) **Branch:** dev (PR #103 merged at 686bc93) | **Tests:** 3,400 (3,263 Jest + 137 node:test), 143 suites @@ -322,7 +377,7 @@ worktree: none | Version | Date | Highlights | |---------|------|-----------| -| v2.18.0 | 2026-05-12 | Rich exam LaTeX format: --format exam-rich-latex, F-critical bracket table (jstat), s-value calibration, interaction-aware language, 3,400 tests | +| v2.18.0 | 2026-05-13 | Rich exam LaTeX format: --format exam-rich-latex, F-critical bracket table (jstat), s-value calibration, interaction-aware language, +8 tutorials (38 total), ADHD 75→83, 3,400 tests | | v2.17.0 | 2026-03-04 | Canvas enhancements: pre-flight validation, shared canvas-preflight.js helper, exam --format canvas, SCHOLAR_VERSION fix, 3,340 tests | | v2.16.0 | 2026-02-27 | Canvas QTI pipeline: /teaching:canvas, QMD parser, 10 question types, image bundling, examark integration, 3,302 tests | | v2.15.0 | 2026-02-23 | Insights-driven enhancements: /teaching:preflight, validate-pipeline, send-output, CI merge-conflict guard, 3,092 tests | diff --git a/README.md b/README.md index d10ac688..1c97fd0d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ A comprehensive Claude Code plugin for academic workflows combining research and [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-2.18.0-blue.svg)](https://github.com/Data-Wise/scholar/releases/tag/v2.18.0) -[![Tests](https://img.shields.io/badge/tests-3400%20passing-brightgreen.svg)](https://github.com/Data-Wise/scholar) +[![Tests](https://img.shields.io/badge/tests-3,400%20passing-brightgreen.svg)](https://github.com/Data-Wise/scholar) +[![Scholar CI](https://github.com/Data-Wise/scholar/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Data-Wise/scholar/actions/workflows/ci.yml?query=branch%3Amain) +[![Docs Deploy](https://github.com/Data-Wise/scholar/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/Data-Wise/scholar/actions/workflows/docs.yml?query=branch%3Amain) --- diff --git a/docs/index.md b/docs/index.md index db551c9e..9a1113cb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,13 @@ # Scholar Plugin > **Academic workflows for research and teaching** - Literature management, manuscript writing, simulation studies, course material generation, and 17 A-grade research skills -> + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Version](https://img.shields.io/badge/version-{{ scholar.version }}-blue.svg)](https://github.com/Data-Wise/scholar/releases/tag/v{{ scholar.version }}) +[![Tests](https://img.shields.io/badge/tests-{{ scholar.test_count }}%20passing-brightgreen.svg)](https://github.com/Data-Wise/scholar) +[![Scholar CI](https://github.com/Data-Wise/scholar/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Data-Wise/scholar/actions/workflows/ci.yml?query=branch%3Amain) +[![Docs Deploy](https://github.com/Data-Wise/scholar/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/Data-Wise/scholar/actions/workflows/docs.yml?query=branch%3Amain) + > **📌 TL;DR - 30 Second Version** > > **What:** A Claude Code plugin for academic workflows — {{ scholar.command_count }} commands across teaching (exams, slides, syllabi, Canvas QTI) and research (arXiv, BibTeX, DOI, manuscript drafting). @@ -16,10 +22,6 @@ A comprehensive Claude Code plugin for academic workflows combining research and teaching. Features unified Plugin + MCP architecture with {{ scholar.command_count }} slash commands and research skills. -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Version](https://img.shields.io/badge/version-{{ scholar.version }}-blue.svg)](https://github.com/Data-Wise/scholar/releases/tag/v{{ scholar.version }}) -[![Tests](https://img.shields.io/badge/tests-{{ scholar.test_count }}%20passing-brightgreen.svg)](https://github.com/Data-Wise/scholar) - --- > **💡 ⚡ Quick Start - Get Up and Running in 2 Minutes** @@ -335,32 +337,38 @@ claude plugin list | grep scholar **Release Date:** {{ scholar.release_date }} -### Canvas QTI Export (v2.16.0) +### Rich Exam LaTeX Format (v{{ scholar.version }}) -- **`/teaching:canvas`:** Convert QMD exam files to Canvas LMS QTI format via examark CLI -- **10 question types:** MC, MA, TF, Short Answer, Numeric, Essay, Matching, FMB, FIB, Upload — auto-detected from QMD content -- **Full pipeline:** QMD parser → type detector → ExamarkFormatter → examark CLI → `.qti.zip` -- **Validation:** `--validate` flag runs examark dry-run, `--emulate` simulates Canvas import behavior -- **Documentation:** API reference, pipeline guide, troubleshooting table, Canvas integration tutorial +- **`--format exam-rich-latex`:** New output format for `/teaching:exam` — produces a Quarto `.qmd` using the LaTeX `exam` document class with evidence-based reporting policy ($s$-values, compatibility intervals), F-critical bracket table, $s$-value calibration table, and interaction-aware language for factorial designs +- **F-critical bracket table:** `jstat`-backed (`^1.9.6`), auto-generated from `exam_metadata.df_pairs` at 2-decimal precision; dedupes, sorts, and validates input +- **$s$-value calibration:** Static Greenland/Rafi table (0–13.3 bits with $p$-value anchors) embedded in the front matter +- **Interaction-aware reframing:** Preserves `$…$` / `\(…\)` math regions byte-for-byte; idempotent; reframes `question.text`, `parts[].prompt`, and rubrics for factorial designs with interaction terms +- **New `PromptLoader.checkMinScholarVersion()`:** Correct semantics for `min_scholar_version` (errors when Scholar < min, otherwise compatible). Distinct from `checkVersion()` which has prompt-version semantics. +- **Tutorials:** 30 → 38 across teaching + research (both namespaces now ~100% covered); new orientation index at [`docs/tutorials/index.md`](tutorials/index.md) +- **ADHD-friendliness:** 75/100 → 83/100 (Grade C → B) via TL;DR boxes, emoji Level markers (🟢/🔵/🔴) on tutorials, mobile mermaid-overflow CSS +- **See:** [Rich Exam LaTeX tutorial](tutorials/teaching/rich-exam-format.md) · [Architecture §10](ARCHITECTURE-DIAGRAMS.md#10-rich-exam-latex-pipeline-v2180) · [What's New v2.18.0](WHATS-NEW-v2.18.0.md) ### Previous Releases -- **v2.15.0** — Insights-driven: `/teaching:preflight` (6 health checks), R validation pipeline (`--validate` flag on 4 commands), email integration (`--send` on 5 commands) +- **v2.17.0** — Canvas enhancements: pre-flight validation, shared `canvas-preflight.js` helper, `/teaching:exam --format canvas`, SCHOLAR_VERSION fix +- **v2.16.0** — Canvas QTI pipeline: `/teaching:canvas`, QMD parser, 10 question types, image bundling, examark integration +- **v2.15.0** — Insights-driven: `/teaching:preflight` (6 health checks), R validation pipeline, email integration - **v2.14.0** — R code validator: `/teaching:validate-r`, per-chunk reporting, static lint, CI-friendly - **v2.13.0** — Solution key generator: `/teaching:solution`, QMD parser, `--send` email, md/qmd/json formats -- **v2.12.0** — Hub flag discovery: `[AI]` markers, option counts, full Options display, `extractFlags()` engine -- **v2.11.0** — Custom instructions: `--instructions` / `-i` flag on 8 commands, InstructionMerger engine -- **v2.10.0** — Maintenance sprint: ESLint 10, Jest 30, glob 13, security fixes, Node >=20.19 +- **v2.12.0** — Hub flag discovery: `[AI]` markers, option counts, full Options display +- **v2.11.0** — Custom instructions: `--instructions` / `-i` flag on 8 commands +- **v2.10.0** — Maintenance sprint: ESLint 10, Jest 30, glob 13, Node >=20.19 ### 📊 Stats | Metric | v2.3.0 | v{{ scholar.version }} | Change | | ------------------- | ------ | ------ | -------------- | | Commands | 22 | {{ scholar.command_count }} | +11 | -| Tests | 1,391 | {{ scholar.test_count }} | +1,911 (+137%) | +| Tutorials | 7 | 38 | +31 (~5x) | +| Tests | 1,391 | {{ scholar.test_count }} | +2,009 (+144%) | | Documentation Pages | 45 | 230+ | +185 | -**See release notes:** [v2.16.0](WHATS-NEW-v2.16.0.md) | [v2.15.0](WHATS-NEW-v2.15.0.md) | [v2.14.0](WHATS-NEW-v2.14.0.md) | [v2.13.0](WHATS-NEW-v2.13.0.md) | [v2.12.0](WHATS-NEW-v2.12.0.md) | [v2.11.0](WHATS-NEW-v2.11.0.md) | [v2.9.0](WHATS-NEW-v2.9.0.md) | [v2.8.0](WHATS-NEW-v2.8.0.md) | [v2.7.0](WHATS-NEW-v2.7.0.md) | [v2.6.0](WHATS-NEW-v2.6.0.md) | [v2.5.0](WHATS-NEW-v2.5.0.md) | [v2.4.0](WHATS-NEW-v2.4.0.md) +**See release notes:** [v2.18.0](WHATS-NEW-v2.18.0.md) | [v2.17.0](WHATS-NEW-v2.17.0.md) | [v2.16.0](WHATS-NEW-v2.16.0.md) | [v2.15.0](WHATS-NEW-v2.15.0.md) | [v2.14.0](WHATS-NEW-v2.14.0.md) | [v2.13.0](WHATS-NEW-v2.13.0.md) | [v2.12.0](WHATS-NEW-v2.12.0.md) | [v2.11.0](WHATS-NEW-v2.11.0.md) | [v2.9.0](WHATS-NEW-v2.9.0.md) | [v2.8.0](WHATS-NEW-v2.8.0.md) | [v2.7.0](WHATS-NEW-v2.7.0.md) | [v2.6.0](WHATS-NEW-v2.6.0.md) | [v2.5.0](WHATS-NEW-v2.5.0.md) | [v2.4.0](WHATS-NEW-v2.4.0.md) --- diff --git a/scripts/version-sync.js b/scripts/version-sync.js index 103d58f3..cb6aa542 100755 --- a/scripts/version-sync.js +++ b/scripts/version-sync.js @@ -160,11 +160,12 @@ function syncReadme(filePath) { label: 'Badge release URL', }); - // Badge: tests-NNNN%20passing + // Badge: tests-NNNN%20passing — use comma-formatted count to match prose readability + // and stay in sync with mkdocs.yml extra.scholar.test_count (which uses commas). if (testCount !== undefined) { patterns.push({ regex: /(tests-)\d[\d,]*(%20passing)/, - replacement: `$1${testCount}$2`, + replacement: `$1${formatCount(testCount)}$2`, label: 'Badge test count', }); }