Changes in version 0.3.0 (2026-05-20) New functions - Added stimulus.plot() for stimulus plots in matched/treated-stimulus designs (means and effects plots with null resampling). - Added stimulus.beeswarm() for compared-stimulus designs. - Added clear_stimulus_cache() to reset resampling cache used by stimulus plotting functions. Improvements - t.test2(): now reports Cohen's d for two-sample independent tests (returned as d and printed after sample sizes). - t.test2(): missing-value note no longer double-counts rows where the grouping variable is NA. - lm2(): explanatory notes are no longer printed with the regression table; they are stored when the model is printed and shown via the new lm2_notes() function. The print output ends with a reminder to run lm2_notes(). Deprecated - lm2() and print.lm2(): the notes argument is deprecated (ignored). Passing notes = TRUE or notes = FALSE emits a message directing users to lm2_notes(). Changes in version 0.2.1 (2026-04-25) changes to pass CRAN inspection - plot_means(): removed the save.as argument (no longer saves plots to PNG/SVG). - t.test2(): documented S3 registration as t.test2 for base::t to avoid recurring CRAN S3 consistency notes while keeping direct t.test2(...) usage unchanged. - desc_var(): removed dependency on labelled; now relies on new function var_labels New function - Added var_labels() to get/set these labels for vectors and data frames. This avoids depending on labelled Changes in version 0.2.0 New functions - Added plot_means() for barplots of group means with confidence intervals, optional comparisons and interaction-style contrasts, up to three grouping variables in the formula, optional clustered standard errors, and saving to PNG or SVG. - Added interprobe() for probing interactions: simple slopes and Johnson–Neyman style marginal-effect curves for x × z, using GAM or linear models. Improvements - plot_freq(): improved behavior when there are many distinct values; grouped plots support up to four levels of the grouping variable. - lm2(): mean column shows percentages for factor levels and factor×factor interactions as intended; baseline factor level row shows the percentage of observations like other levels. - desc_var(): when the response variable is missing, only the intended error is shown (no spurious “restarting interrupted promise evaluation” warning). - scatter.gam(): supports direct coordinates and formula syntax (including df$y ~ df$x); axis labels use short variable names for $ formulas; ylim and other ... arguments no longer conflict with internal plot arguments; small vertical buffer on the lower frequency panel. - Messages that used red4 now use red2 for readability in dark terminals (including messages from plot_freq(), plot_density(), plot_cdf(), clear(), twolines(), and exit()). - t.test2() performance improvements. Bug fixes - desc_var() evaluates calls such as df$x correctly when data is not supplied, instead of mistakenly using a same-named object from the search path. - text2() applies vector arguments passed in ... (e.g. col) per label, fixing wrong colors when labels differ (notably for plot_means() value labels). - plot_cdf() restores only selected graphics parameters on exit (mar, mgp) so layouts using par(mfrow = ...) are not reset. Similar graphics-state cleanup was applied in other plotting functions where appropriate. Changes in version 0.1.9 (2026-02-26) - plot_freq(), plot_density(), and plot_cdf(): optional comparison of two vectors (in addition to formula syntax); legend placed higher on the plot. - table2(): clearer dimension labels for expressions such as df$var > 10; very long labels are truncated.