diff --git a/CLAUDE.md b/CLAUDE.md index a13836c..8b6fbb2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,7 +25,7 @@ Everything lives in the single root `Dockerfile`. Its layer order mirrors the ol - Modeling stack from the CURRENT P3M snapshot: `tidymodels`, `bonsai`, engines (`xgboost`, `lightgbm`, `randomForest`, `ranger`, `glmnet`), `catboost` (pinned GitHub release binary, amd64), `brms` (+ explicit `BH`/`RcppEigen`/`RcppParallel` — rstan binary installs skip its LinkingTo deps, but runtime Stan compilation needs them). - Inference-reporting + presentation set: `gt`, `marginaleffects`, `patchwork`, `easystats` — used pervasively in the primer book and tutorials but only Suggests in primer.tutorials (pak doesn't install Suggests). - Package-development set (the old dev image): `devtools`, `pkgdown`, `roxygen2`, `testthat`, `usethis`. -- Course packages from GitHub source (`PPBDS/tutorial.helpers`, `PPBDS/vscode.tutorials`, `PPBDS/misc.tutorials`, `PPBDS/primer/primer.tutorials` — note the subdir path), installed **as rstudio** with `upgrade = TRUE` (see the xfun ABI note in the Dockerfile). These are ALSO refreshed on every Codespace create by codespace-starter's postCreateCommand — add new course packages in BOTH places. +- Course packages from GitHub source (`PPBDS/tutorial.helpers`, `PPBDS/vscode.tutorials`, `PPBDS/misc.tutorials`, `PPBDS/primer.tutorials` — split out of the primer repo 2026-07 so installs stop downloading the 183 MB primer tarball; don't point it back at the subdir), installed **as rstudio** with `upgrade = TRUE` (see the xfun ABI note in the Dockerfile). These are ALSO refreshed on every Codespace create by codespace-starter's postCreateCommand — add new course packages in BOTH places. - Interactive viz + Shinylive (R: `plotly`, `leaflet`, `DT`, `crosstalk`, `shiny`, `shinylive`). - Mapping/census stack: `sf`, `tidycensus` (+`tigris`), `mapgl` (token-free WebGL maps via `maplibre()` + CARTO styles), `crsuggest`, `idbr`. Live tidycensus/idbr queries need each student's free Census API key (the API rejects keyless requests). `mapboxapi` deliberately excluded (needs per-student Mapbox account). - Python data-science stack via `uv` into a group-writable venv at `/opt/venv` from a fully pinned lockfile (`requirements.lock`, compiled from `requirements.txt` — edit the .txt and recompile to bump). System CPython, seeded pip, default `python` on PATH, registered "Python (data science)" Jupyter kernel; Quarto runs Python docs via the jupyter engine, so reticulate is not needed (RETICULATE_PYTHON is still set). diff --git a/Dockerfile b/Dockerfile index 5a5db9a..aea68d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -298,8 +298,11 @@ RUN R -q -e 'pak::pkg_install(c("devtools", "pkgdown", "roxygen2", "testthat", " # create via codespace-starter's postCreateCommand; baking them here pre- # installs the whole dependency tree (so that refresh is a quick update, not # a cold build) and leaves a working fallback if GitHub is unreachable. Note -# primer.tutorials lives in a SUBDIR of the primer repo, hence the -# "PPBDS/primer/primer.tutorials" path. Add further "PPBDS/" entries +# primer.tutorials was SPLIT OUT of the primer repo (2026-07): as a subdir +# install ("PPBDS/primer/primer.tutorials") every install downloaded the +# full ~183 MB primer tarball — book, class exercises — to deliver a ~4 MB +# package, at every image build AND every Codespace create. Do not point +# this back at the subdir path. Add further "PPBDS/" entries # (in BOTH places) when the syllabus needs them. # # upgrade = TRUE forces pak to pull the latest version of every @@ -311,7 +314,7 @@ RUN R -q -e 'pak::pkg_install(c( \ "PPBDS/tutorial.helpers", \ "PPBDS/vscode.tutorials", \ "PPBDS/misc.tutorials", \ - "PPBDS/primer/primer.tutorials" \ + "PPBDS/primer.tutorials" \ ), upgrade = TRUE)' # Smoke test 1: every baked-in package and the learnr/knitr/rmarkdown