Reduced default CRAN test time by skipping the full layout stress-test suite
unless LVMPLOT_FULL_TESTS=1 is set. The default test suite now uses small
toy data and keeps the long-running geometry pressure tests conditional.
Improved the Shiny editor export synchronization so downloads use the current browser layout, node labels, style controls, selected/locked nodes, and other live editor state rather than stale initial values.
Added draggable coefficient labels in the Shiny editor. Manual coefficient
label positions are saved in State JSON, restored when the state is loaded,
included in Figure R code through edge_style, and respected by SVG/PDF/PNG
downloads.
Simplified the Shiny editor by removing the user-facing quality/score panel from the interactive UI while keeping programmatic diagnostics, layout quality functions, and publication bundle quality reports available.
Prepared the first CRAN submission metadata, including maintainer, citation, license holder, CRAN comments, and source-build exclusions.
Renamed the package to lvmPlot and updated package metadata, RStudio addins,
documentation, citation text, tests, and evaluation artifacts.
Added a unified latent variable model graph workflow for lavaan-style SEM/CFA, multilevel SEM, growth, bifactor, IRT/MIRT, Rasch, latent class/profile, OpenMx, semPlot, and Mplus-style outputs.
Added model-aware default layouts that keep measurement items aligned on a common horizontal or vertical axis when possible.
Added automatic summaries for very wide single-factor item batteries so
default diagrams keep a clean item layer and straight loading edges instead
of forcing dozens of indicators into an unreadable fan; full diagrams remain
available with diagram = "all".
Improved SEM defaults for latent-to-latent structural models: common sparse SEMs now use a shared measurement layer, large indicator blocks stay on a single valid axis, and dense latent SEMs compact to a labeled structural backbone in automatic diagrams while full diagrams remain available.
Improved rendered node geometry for long and dense item labels: grid output now wraps long node labels, abbreviates dense structured item names, uses compact boxes for short item labels, and sizes wide item-axis exports so the rendered figure does not overlap even when diagnostics are clean.
Improved IRT/MIRT defaults for dense and cross-loaded item axes. Automatic
diagrams now summarize 20+ item axes to representative aligned item blocks,
suppress coefficient labels on those summaries, and preserve full diagrams
with diagram = "all".
Automatic diagrams now suppress covariance edges that are parallel to a directed path between the same two nodes, which keeps multilevel SEM path diagrams from drawing duplicate straight edges and overlapping parameter labels by default.
Improved multilevel SEM defaults for repeated same-name variables and cross-level feedback skeletons: latent nodes are spaced using rendered visual extents, measurement blocks keep aligned item axes with wider vertical gaps, and structural multilevel diagrams use a conservative two-dimensional local search to clear straight-edge node collisions without exploding edge length.
Added bounded dense-SEM repair heuristics for straight-edge diagrams, including rigid indicator-block repair and structural-only coordinate search to remove hard node and edge-node overlaps without letting coefficient labels drive node placement.
Added a dense-auto SEM fast path that skips unnecessary full measurement layout for automatic structural summaries and uses a planar straight-edge skeleton when the compact graph supports it.
Removed an unnecessary legacy SEM-layout pass from lavaan-style LVM adapters, making full dense SEM graph preparation substantially faster while preserving custom layout support.
Improved loading-label placement for dense bifactor and MIRT/MIRT-like fans so forced standardized labels stay clear of adjacent edges, traits, and items.
Reduced dense loading-fan label diagnostics runtime by using adaptive optimizer iterations while preserving zero label overlaps in the wide bifactor pressure case.
Added panel-aware longitudinal layouts for cross-lagged path models, with standard time layers, clear coefficient labels, and review-level scoring for unavoidable reciprocal cross-lag crossings.
Improved tricky LVM defaults for parallel-process growth, wide bifactor, wide LCA/profile summaries, and wide higher-order loading fans.
Added multigroup lavaan edge collapsing so automatic diagrams summarize repeated group-specific loadings and covariances instead of overplotting them.
Improved pure CFA and EFA defaults: automatic CFA diagrams now suppress latent covariance meshes unless requested, and EFA/psych loading objects default to primary-loading summaries while full cross-loading diagrams remain available.
Added geometry diagnostics for node overlaps, edge-node collisions, edge crossings, label-label collisions, label-node collisions, and label-edge collisions.
Added layout_quality() to summarize diagnostics as a publication-readiness
score, grade, status, and issue table.
Added check_lvm_layout() as an assertion-style publication gate for R
Markdown, CI, and manuscript scripts, and connected the same gates to
export_lvm_bundle(check = TRUE).
Added select_lvm_layout() to score candidate orientation, layout, diagram,
and routing settings and select the best publication-ready graph.
Added publication export helpers for RStudio plots, SVG, PDF, PNG, and TikZ.
Added export_lvm_bundle() to write manuscript-ready PDF/PNG/SVG/TikZ
artifacts together with graph tables, diagnostics, quality reports, metadata,
session information, and optional automatic layout-selection records.
Added built-in themes and lvm_style() controls for font sizes, node sizes,
line widths, colors, and whole-figure scaling in both grid and TikZ output.
Added local competitor and model-family evaluation scripts used by the draft software article and supplement.
Added tools/stress-test-layouts.R to regenerate a multi-family pressure
test gallery and diagnostics table for CFA, SEM, higher-order, bifactor,
growth, LCA, MIRT, observed-outcome, and multilevel SEM diagrams, including
separate default-clean and forced-standardized-label quality columns.
Added tools/stress-test-tricky-layouts.R for adversarial long-name CFA,
dense covariance CFA, cross-lagged panel, parallel-process growth, wide
bifactor, four-trait MIRT, wide LCA, higher-order, three-level multilevel SEM,
and mixed observed/latent path diagrams.
Added tools/stress-test-fitted-models.R for real fitted objects: ordinal and
multigroup lavaan CFA, observed lavaan CLPM, lavaan growth, semPlotModel,
mclust LPA, mirt 2PL, eRm Rasch, OpenMx RAM, and psych::fa.
Added tools/stress-test-adversarial-layouts.R for hard geometry cases:
long custom labels, 60-item single-factor batteries, ten-factor CFA, dense
structural SEM, cross-loaded MIRT, dense LCA, forced full LCA, and multilevel
SEM with repeated variable names.
Added tools/run-validation-suite.R to run the pressure, tricky,
adversarial, and fitted stress suites and write a single validation
summary/report with session and package-version metadata.
Added paper/reproduce-submission-bundle.R to orchestrate tests, galleries,
validation, competitor audit, manuscript/supplement PDF builds, and optional
R CMD check for submission-style reproduction.
Expanded the competitor audit with documentation-source and model-family coverage matrices for semPlot, lavaanPlot, tidySEM, semptools, lavaangui, qgraph, Onyx, and lvmPlot.