First stable release, following acceptance on CRAN.
compare_sources() now honors include_references: when TRUE, the
bibliographic columns are joined back onto the source/label/string indicator
matrix, matching the behavior of count_unique(). Previously the argument was
silently ignored and only indicator columns were returned.calculate_detailed_records(): the Total row's Distinct Records now respects
labels_to_include. It previously used the unfiltered input, making the Total
inconsistent with the filtered per-source rows and overstating distinct records
when labels were restricted.create_detailed_record_table() and create_precision_sensitivity_table()
redesigned for readability: related columns are grouped under spanner headers,
the contribution/uniqueness percentages have clearer labels, Precision and
Recall are formatted as percentages, and the Total row is visually
distinguished as a summary.dedup_citations_add_sources() adds new citations
to a previously deduplicated set and deduplicates across both, preserving
prior automatic and manual merge decisions and the original record_ids
provenance. For the same data it yields the same unique set as deduplicating
everything from scratch. Exposed in the Shiny app — re-upload a deduplicated
set, add new citation files, and "Find duplicates" merges them in. Works in
manual = TRUE mode to surface new candidate pairs for review.export_dedup_candidates() / reimport_dedup_candidates()
persist and restore the $manual_dedup candidate pairs, and export_csv()
gains a manual_dedup_complete flag (written as a column, read back by
reimport_csv()) so downstream steps know whether review is still pending.
Re-import, mark result == "match", and merge with
dedup_citations_add_manual().reimport_csv() now reads all columns as character, matching the canonical
(all-character) types produced by dedup_citations(). This is required so a
reimported set can re-enter dedup_citations_add_manual() (and incremental
re-deduplication) without column-type clashes.across() syntax used throughout).read_citations() now warns when cite_label values are outside the standard
vocabulary (search, screened, final), since phase-analysis functions
depend on those exact strings.calculate_phase_records(): n_distinct() called as a terminal pipe no
longer throws an error; fixed by replacing with summarise() |> pull().calculate_initial_records() / calculate_detailed_records(): separator
regex in separate_rows() changed from "," to ",\\s*" so sources with
spaces after commas are split correctly.generate_apa_reference(): NA DOI values no longer cause an error in
str_detect(); handled with case_when(is.na(doi) ~ NA_character_, ...).summaryPrecTab: n_unique was referenced without the rv$
prefix, causing a scope error; fixed.manual_dedup_dt: columnDefs targets now computed as
0-based integer indices rather than column name strings, matching the DT API.count_unique() / compare_sources(): added !is.na() guard alongside
!= "" so NA values in cite_source, cite_label, cite_string no longer
cause filter or pivot errors.rv$pairs_to_check[,1:36] subsetting removed; full data frame
passed directly.generate_apa_citation() and generate_apa_reference(): all rowwise()
calls replaced with purrr::map2_chr() and purrr::pmap_chr(), avoiding
per-row dplyr group overhead.compare_sources() is now computed once in a shared reactive and
consumed by both the heatmap and upset plot, halving the work on each render.sapply +
str_split to vectorized strsplit + vapply via a file-scope helper
.filter_multivalue_col.R/asys_dedup.R
(GPL-3, with attribution to CAMARADES / Kaitlyn Hair); the GitHub-only
ASySD package is no longer a dependency.Remotes: field removed from DESCRIPTION.cli, igraph, parallelly, RecordLinkage, utf8.ASySD, plogr.bslib..onLoad side effects removed; shiny.maxRequestSize is no longer set
at package load time.%>% re-export removed; use the native |> pipe.record_counts() → calculate_initial_records()calculate_record_counts() → calculate_detailed_records()calculate_phase_count() → calculate_phase_records()record_counts_table() → create_initial_record_table()record_summary_table() → create_summary_record_table()precision_sensitivity_table() → create_phase_record_table()All deprecated functions remain callable with a .Deprecated() warning
pointing to their replacements.
CITESOURCE_ENV environment variable check evaluated once at
app startup.Added new functions which allow creation of tables and plots based on deduplicated (reimported) data.
Updated shiny functionality, look and feel, and documentation
Added new vignettes
NEWS.md file to track changes to the package.Added dependency on latest version of the ASySD R package
Simplified dedup function arguments (now specified within call to ASySD)
Integrated new dedup function into R shiny app