Changes in version 0.3.4 (2026-04-08) Released: April 2026 Bug Fixes - All test-integration-*.R files now call skip_on_cran() at file scope, preventing integration tests from running on CRAN. Resolves CHECK ERROR on r-devel-linux-x86_64-fedora-clang and r-devel-linux-x86_64-fedora-gcc reported by CRAN on 2026-04-08. - RNGkind() is now explicitly set before set.seed() in integration tests that use simulated data, ensuring cross-platform RNG reproducibility. Changes in version 0.3.3 (2026-04-07) Released: April 2026 Bug Fixes - grs_validate() — added skip_if_not_installed("pROC") guard to all logistic-path tests so the suite passes cleanly when pROC is absent Improvements - Removed hardcoded default paths across all modules; examples refactored to use ops_toy() data where possible — runnable examples unwrapped, long-running examples (>5s) wrapped in \donttest{}, network-dependent examples remain in \dontrun{} - VignetteBuilder field corrected in DESCRIPTION CI - R CMD check split into four targeted workflows: dev (3 jobs), main (6 jobs), release (8 jobs, --as-cran), and weekly (scheduled every Saturday 21:00 CST, full CRAN-like matrix) - Added _R_CHECK_DEPENDS_ONLY_ matrix to verify Suggests packages are correctly declared Documentation - Rd files regenerated across all modules after example and parameter updates Changes in version 0.3.2 Released: March 26, 2026 Bug Fixes - ops_snapshot() — removed Unicode character Δ from documentation to fix LaTeX PDF manual build on CRAN - test-plot.R — added skip_on_cran() to plot_tableone() rendering tests that caused a 20-minute hang on Windows CRAN Improvements - plot_forest() and plot_tableone() examples are now fully runnable (removed \dontrun{} wrapper; save = FALSE throughout) Documentation - README.md — updated Codecov badge URL; fixed CONTRIBUTING.md and README_zh.md links to full GitHub URLs - Added inst/WORDLIST with Biobank to suppress false-positive spelling NOTE on CRAN Changes in version 0.3.1 Released: March 25, 2026 Bug Fixes - derive_followup() — coerce date columns to IDate before pmin() to avoid type mismatch - install.Rmd — corrected vignette cross-references Improvements - All modules hardened with consistent .assert_*() input validation helpers - All cli::cli_abort() calls now use call = NULL for cleaner error messages - plot_tableone() — auto-coerce data.table input to data.frame Documentation - Man pages updated across all modules (auth, fetch, extract, job, decode, derive, ops, grs, assoc, plot) - All vignettes reviewed and corrected (output format, param contracts, example accuracy) - get-started.Rmd and README updated for accuracy - pkgdown reference index and vignette menu completed Tests - Test suites overhauled for all modules: added input validation coverage, integration-style stubs, and edge cases Changes in version 0.3.0 Released: March 13, 2026 New Features Operations (ops_*) - ops_withdraw() — exclude UKB withdrawn participants from a cohort data.table by EID Snapshot — Column Tracking - ops_snapshot() gains column-tracking helpers: cols(), diff(), remove(), and set_safe_cols() Visualisation Enhancements - plot_tableone() — new png_scale, pdf_width, and pdf_height parameters for fine-grained output control Bug Fixes - fetch_file() — enforce RAP-only guard; updated tests - grs_score() — fix -icmd argument format; skip script upload if file already exists on RAP - GRS pipeline — updated chr split threshold: chromosomes 1–16 use large instances, 17–22 use standard Documentation - Added roxygen2 documentation for ops_withdraw() - Unit tests added for ops_withdraw() Internal - Added broom to DESCRIPTION Imports and ops_setup() dependency check - Updated package logo (new hex sticker design) - Integration tests requiring RAP environment are now skipped in local CI Changes in version 0.2.0 Released: March 10, 2026 New Features Operations (ops_*) - ops_setup() — check and report the local environment (R, dx-toolkit, dxpy) health - ops_toy() — generate synthetic UKB-style cohort or forest-plot data for testing and demos; includes GRS columns and cancer self-report fields - ops_na() — summarise missing-value rates per column with threshold-based filtering and cli progress feedback - ops_snapshot() — record and display a history of dataset row/column counts across pipeline steps Bug Fixes - All cli::cli_abort() calls now pass call = NULL to suppress internal call-stack noise in error messages - ops_toy(): added cancer self-report fields (p20001, p20006) and corrected sr_codes → text label mapping Documentation - New vignette: Smoking and Lung Cancer — End-to-End Analysis (vignette("smoking_lung_cancer")) - New vignette: ops_ Series* covering setup, toy data, NA summary, and snapshots - pkgdown site now auto-deploys via GitHub Actions (CI-managed docs/) Internal - Resolved R CMD check NOTEs: added importFrom(stats, rnorm, runif), importFrom(utils, object.size), and pct_na to globalVariables() - Added builds/ to .Rbuildignore Changes in version 0.1.0 Released: March 6, 2026 Initial release of ukbflow — a RAP-native R workflow for UK Biobank analysis. New Features Connection - auth_login() — authenticate to RAP via dx-toolkit token - auth_logout() — revoke current session - auth_status() — check current login state - auth_list_projects() — list accessible RAP projects - auth_select_project() — set active RAP project Data Access - fetch_ls() / fetch_tree() — browse RAP project file structure - fetch_file() — download files from RAP to local - fetch_url() — generate pre-signed download URLs - fetch_metadata() — retrieve UKB field metadata (field.tsv, encoding.tsv) - fetch_field() — download the UKB field dictionary file - extract_ls() — list available UKB datasets on RAP - extract_pheno() — synchronously extract phenotype fields from a RAP dataset - extract_batch() — submit a DNAnexus table-exporter job to extract phenotype fields - job_wait() — poll job status until completion - job_status() / job_ls() / job_path() / job_result() — monitor and locate RAP jobs Data Processing - decode_values() — convert integer codes to human-readable labels - decode_names() — rename p{field}_i{instance}_a{array} columns to descriptive names - derive_missing() — recode UKB informative-missing labels to NA - derive_covariate() — standardise common covariates (age, BMI, TDI, etc.) - derive_cut() — create ordered factor variables from numeric cutpoints - derive_hes() — derive disease phenotypes from Hospital Episode Statistics (ICD-10) - derive_cancer_registry() — derive cancer phenotypes from UK cancer registry (ICD-10) - derive_death_registry() — derive phenotypes from death registry (primary + secondary causes) - derive_first_occurrence() — derive phenotypes from UKB First Occurrence fields - derive_selfreport() — derive disease phenotypes from self-reported illness codes - derive_icd10() — merge multi-source ICD-10 case definitions across all registers - derive_case() — merge arbitrary multi-source case definitions - derive_followup() — compute follow-up time with competing event support - derive_timing() — classify prevalent vs. incident cases - derive_age() — compute age at event Association Analysis - assoc_linear() — linear regression with automatic three-model framework - assoc_logistic() — logistic regression with automatic three-model framework - assoc_coxph() — Cox proportional hazards with automatic three-model framework - assoc_coxph_zph() — test proportional hazards assumption - assoc_competing() — Fine-Gray competing risks regression - assoc_subgroup() — subgroup analysis with interaction likelihood-ratio test - assoc_trend() — dose-response trend analysis across ordered categories - assoc_lag() — landmark / lag-time sensitivity analysis Genomic Risk Score (GRS) - grs_check() — validate and reformat a GWAS summary statistics weight file - grs_bgen2pgen() — submit parallel BGEN → PGEN conversion jobs on RAP - grs_score() — submit distributed plink2 GRS scoring jobs on RAP - grs_standardize() — standardise GRS columns to mean = 0, SD = 1 - grs_validate() — validate GRS distribution and association with known risk factors Visualization - plot_forest() — publication-ready forest plots with customisable CI columns and p-value formatting - plot_tableone() — Table 1 baseline characteristics figure