nmfkc 0.9.6 (2026-08-23)

Check time only – no change to any computed value

CRAN’s incoming pretest still reported “Overall checktime 11 min > 10 min” for 0.9.5, almost all of it checking tests ... [442s]. Uwe Ligges suggested running the less important tests conditionally on an environment variable set only on the maintainer’s machine, and that is what this release does.

Measured: 1.7 s in CRAN mode against 144 s in full mode, both with zero failures.

nmfkc 0.9.5 (2026-08-20)

Check time only – no change to any computed value

CRAN’s incoming pretest rejected 0.9.4 for its overall check time (48 minutes on the pretest Windows machine against a 10-minute budget; 34 of those were the tests and 11 the vignettes).

nmfkc 0.9.4

Breaking: the nmf.rrr family drops the rank / rank.encoder aliases

Breaking: nmf.rrr() renames B.prob / B.cluster to B1.prob / B1.cluster

Breaking: nmfkc() stops computing criteria nothing consumed

summary() reports a factor diagnostic

nmfre() correctness fixes (identification + signed warm start)

nmfkc 0.8.8

Removed the B.L1 penalty (and its gamma alias)

MAP penalties for nmfre()

nmfae* deprecated in favour of nmf.rrr*

nmf.sem* deprecated in favour of nmf.ffb*

C.L2 ridge for the signed families

Basis penalties extended to the signed families

by option: grouping order of coefficient tables

Classed CV objects with print / plot

Naming / API consistency pass (aligned to the nmfkc house style)

X.L2.smooth: row-smoothness penalty on the basis

Public API: nmf.rrr and nmf.ffb are the documented names

X.init = "kmeans++" basis initialization

nmf.rrr / nmfae family: rank1 / rank2 arguments

nmfre.ecv: rank selection for NMF-RE

nmfkc.DOT: signed-coefficient graphs

nmfre: marginal-NLL convergence trace

nmfre: optimization and inference fully separated

nmfre: EM/ECM algorithm and sign-free fixed effects (paper port)

nmf.rrr: NMF-RRR names for the nmfae family

nmfae(): Kullback-Leibler divergence objective

nmfkc.inference(): re-fit wild bootstrap for singular information

nmfkc 0.8.2

nmfkc.net.DOT(): default layout is now "neato"

Bug fix: nmfkc.net.DOT() mis-detected type = "bi" as "tri"

nmfkc.bicv() / nmfkc.consensus(): leaner signatures

nmfkc.ard(): simpler, safer interface

nmfkc.ard(): better default prior scale

New nmfkc.ard(): ARD rank determination (Tan & Fevotte 2013, prototype)

New nmfkc.consensus(): consensus-clustering rank selection (Brunet 2004)

New nmfkc.bicv(): bi-cross-validation for rank selection

*.rank: eff.rank.idx shown for context (no best marker)

*.rank: broken-stick-corrected effective-rank index

*.rank results gain plot() / print() methods

New nmf.cluster.flow(): cluster-flow diagram across ranks

New nmf.cluster.criteria(): sample-clustering quality across ranks

Rank-selection functions for the other NMF families

Internal: shared element-wise CV helpers

Unified summary print blocks

Effective Rank in all five MU-family summaries

Rank-selection diagnostics: silhouette / CPCC fixed, IC removed

Breaking change: symmetric NMF removed from nmfkc()

New diagnostic: effective rank

Diagnostics cleanup: B.prob crispness metrics

Improvements

Bug Fixes

Documentation

nmfkc 0.7.3

Documentation

nmfkc 0.7.2

Headline: NMF-FFB rebrand and full bootstrap inference

Bug Fixes

Improvements

New Functions (Signed NMF family)

New Functions (Network NMF family)

Deprecations

Parameter Renames (old names remain usable for backward compatibility)

Documentation

nmfkc 0.6.7

Bug Fixes

Naming Unification (old names remain usable for backward compatibility)

nmfkc 0.6.6

New Functions

Parameter Renames (old names remain usable for backward compatibility)

Other Improvements

nmfkc 0.6.0

Bug Fixes

Documentation

Code Quality

nmfkc 0.5.8

Graphviz DOT Output Consolidation and Cleanup