Changes in version 1.7.3 (2026-02-17) CRAN policy - Wrapped one example in \\dontrun{} instead of \\donttest{} to prevent blackswan CRAN check notes when running tests wrapped in \\donttest{} Changes in version 1.7.2 (2025-11-24) new features - Added keep_stem_before_txt() function to process Coh-Metrix and GAMET filenames that appear as paths - integrated keep_stem_before_txt() into import_coh() import_gamet() and import_merge_gamet_rb() functions improved documentation - Added new vignette that details scoring model development - Added a pkgdown() site to host documentation on GitHub Changes in version 1.7.1 (2025-10-23) CRAN compliance and offline example guard - Fixed predict_quality() example to run deterministically when options(writeAlizer.offline = TRUE). - Example now seeds a local 'example' model with wa_seed_example_models("example", dir = tempdir()) and restores prior options after cleanup. - Offline runs now fully skip remote file downloads, avoiding spurious errors during R CMD check --as-cran --run-donttest. - No user-facing API changes. Changes in version 1.7.0 (2025-10-22) Error handling & classes - Introduced structured errors via rlang::abort(): - writeAlizer_registry_missing – missing/invalid artifacts.csv. - writeAlizer_unknown_model – unknown/unsupported model key (raised by preprocess() / predict_quality()). - writeAlizer_download_failed – offline/bad URL/checksum fetch failures. - writeAlizer_internal_mismatch – expected submodel count ≠ preprocessing splits. - .wa_ensure_file - added classed errors and download retries Loaders & caching - .wa_ensure_file(): - Honors options(writeAlizer.mock_dir=) (preserves subdirs). - Supports file:// URLs; clearer offline guidance. - Warns on cached checksum mismatch; hard-errors if post-download checksum mismatches. - .wa_parts_for() validates inputs and uses canonicalized model keys. - .wa_load_model_rdas() / .wa_load_fits_list(): - Prefer mock_dir artifacts; load via temp env; pick sensible object (fit, model, etc.). - Legacy → v2 name mapping; special-case example. - .wa_require_pkgs_for_fits() collects deps from model classes and train$modelInfo$library; errors with install hint. - .wa_validate_import() - checks ID column for duplicates and character type model_deps() - Reports required vs missing from Suggests + override options(writeAlizer.required_pkgs=). - Preserves version qualifiers in required; strips qualifiers for missing. - Emits copy-paste install.packages() command. - Tests updated to capture output/messages cleanly (no stray console prints). Predict API & preprocessing - Better validation for swapped args and NA/invalid model with actionable messages. - predict_quality() surfaces unknown model keys (includes canonicalized key). - Preprocessing preserves row counts/ID; supports v2 varlists and consolidated-split behavior. Test infrastructure - Added wa_sample_path() to reliably find inst/extdata in dev/install contexts. - Network helper hardened; integration tests force offline via options(writeAlizer.offline=TRUE) and avoid HEAD probes. - Introduced .quiet_eval() to silence messages/warnings in targeted assertions. Integration & smoke tests - Integration test now mocks the registry (RDS + RDA) for all exercised models: - RB: rb_mod1, rb_mod2, rb_mod3narr_v2, rb_mod3exp_v2, rb_mod3per_v2, rb_mod3all_v2 - Coh: coh_mod1, coh_mod2, coh_mod3narr, coh_mod3exp, coh_mod3per, coh_mod3all - GAMET: gamet_cws1 - Writes matching varlists/fits into mock_dir; verifies prediction columns and mean-column rules. - rb_mod3all smoke test made offline-only with mocked varlists. RB/COH import utilities tests - Coverage for: - import_rb() path with SEP=, + read.table(text=readLines()). - NaN→NA in character columns; guarded numeric-like conversion (accepts integer where appropriate). - Name-based keep/drop assertions driven by sample header. - Skips only when assets truly missing (via wa_sample_path()). Misc - Added a package vignette - switch to MIT license - Added/updated tests for: - Mismatched expected submodels. - Bad registry columns. - Checksum errors. - Legacy → v2 artifact-name mapping. Changes in version 1.6.5 (2025-09-30) - CRAN policy: ensure graceful failure when Internet resources are unavailable or have changed. - Hardened internal downloader to respect offline environments and provide informative messages instead of low-level download.file errors. - Tests that require remote artifacts now skip when the concrete URLs/paths are unavailable, while example assets use a seeded mock directory for deterministic, network-free runs. - No user-facing API changes. Changes in version 1.6.4 (2025-09-30) CRAN policy & documentation improvements - Replaced writeAlizer:::wa_seed_example_models() with writeAlizer::wa_seed_example_models() in examples and documentation, per CRAN’s guidance to avoid accessing unexported objects. - Exported wa_seed_example_models() with full documentation: - Added @return (returns the created temp path invisibly). - Added a small, runnable example that writes only to tempdir() and cleans up; it also restores any prior option value. - Documented the temporary side effect of setting options(writeAlizer.mock_dir = ). Changes in version 1.6.3 CRAN policy & documentation improvements - DESCRIPTION: acronyms expanded (e.g., CBM), software/package names single-quoted, and method references added with CRAN auto-link format (DOIs). - Documentation: @return added to import_coh(), import_rb(), import_gamet(), import_merge_gamet_rb(). - Examples: \\dontrun{} replaced with \\donttest{} where needed; fast examples unwrapped; predict_quality() uses a tiny offline 'example' model seeded in tempdir() with cleanup. - File I/O: no writes to home by default; examples/tests use tempdir(); caching standardized via tools::R_user_dir("writeAlizer","cache"). - New helpers: wa_cache_dir() and wa_cache_clear(ask=) for cache discovery/cleanup. - Optional deps: new model_deps() reports (does not install) optional packages and prints an install hint; install_model_deps() deprecated. - Tests: self-cleaning with withr fixtures; no temp detritus; removed deprecated global teardown. Bug fixes & maintenance - Stabilized example/test behavior when offline by mocking artifacts via writeAlizer.mock_dir. - Suppressed noisy pre-processing variance warnings in integration tests. Changes in version 1.6.2 - Simplified install_model_deps(): - Removed unused model argument. - Standardized on the options(writeAlizer.require_pkgs_for_fits = function() ...) hook; dropped internal helper. - Single Suggests discovery path via utils::packageDescription(..., fields = "Suggests"). - dry_run = TRUE now returns tokens visibly (character vector); version qualifiers are stripped only for checks/installs. - Tests updated Changes in version 1.6.1 - Test coverage raised to ~82% overall. - artifact_registry: prefer CSV (inst/metadata/artifacts.csv) and remove legacy in-code fallback table; tighter input validation. - Quieter tests by silencing download/file messages and using local cache paths during tests. - More robust install_model_deps(): - Clear dry-run behavior (returns Suggests tokens or helper-provided list). - Strips version qualifiers before installation; installs only truly missing packages. - New helper hook via options(writeAlizer.require_pkgs_for_fits = function(model, install, return_pkgs) {...}). - Documentation: examples added for install_model_deps(); tidied roxygen. - Stabilized artifact fetching in tests (.wa_ensure_file) with explicit cache dirs and checksum paths. - Eliminated intermittent warnings from download.file() and file URLs during tests. - Added/expanded tests for registry filtering, checksum guards, loader utilities, and package-requirement collection. - Removed unused/legacy code paths exercised only by fallback artifact table. Changes in version 1.6.0 - Replaced the ReaderBench mod3 models with their v2 counterparts (e.g., rb_mod3all now calls the rb_mod3all_v2 models). - Optimized model artifact downloads and added SHA-256 checksum verification (auto re-download on mismatch). - predict_quality() now returns per-submodel scores and the overall mean column pred__mean (where applicable). - import_rb() now keeps ReaderBench features by name using the packaged sample_rb.csv header (first 404), dropping 405+. It falls back to the legacy positional selection if the header is unavailable, reducing brittleness to column reordering. - Added install_model_deps() helper to install Suggests for a given model. - CI: wired up GitHub Actions R-CMD-check (Windows/macOS/Linux). Changes in version 1.5.0 - Added new genre-specific scoring models for ReaderBench (rb_mod3narr_v2, rb_mod3exp_v2, rb_mod3per_v2, rb_mod3all_v2) and Coh-Metrix (coh_mod3narr, coh_mod3exp, coh_mod3per, coh_mod3all). Changes in version 1.4.0 - Added new ReaderBench genre-specific scoring models (rb_mod3narr, rb_mod3exp, rb_mod3per, rb_mod3all). Changes in version 1.3.0 - Replaced RB/Coh model 2s with trimmed versions of model 1s with improved data pre-processing. Changes in version 1.2.0 - Moved model artifacts to OSF hosting. - Added RB/Coh model 2s (trimmed versions of model 1 ensembles). Changes in version 1.1.0 - Model artifacts now download during first predict_quality() call. Changes in version 1.0.4 - Fixed ReaderBench file import. Changes in version 1.0.3 - Now accepts ReaderBench output files as .csv. Changes in version 1.0.2 - predict_quality() now also returns an ID variable. Changes in version 1.0.1 - Added model fit objects to package and test data. Changes in version 1.0.0 - Initial version.