bibliometrix V.5.5.0

New Features
- Biblioshiny - OpenAlex search: exact match (stemming off): the OpenAlex query builder gained an "Exact match" checkbox. By default OpenAlex applies stemming to search filters, so "bone" also retrieves "bones" and "surgery" also retrieves "surgeries", which can inflate the result count well beyond what the user intended. When the box is checked, Biblioshiny queries the ".exact" variant of the search filter (title.search.exact, abstract.search.exact, title_and_abstract.search.exact, default.search.exact), the API counterpart of the "Enable stemming" switch on the OpenAlex website. Quoted phrases, parentheses and the AND/OR/NOT operators work in both modes, and Author/Concept rows are unaffected since they resolve to entity IDs.
- Biblio AI - Gemini 3.5 Flash Lite: added gemini-3.5-flash-lite to the model list. It is Google's recommended replacement for Gemini 2.5 Flash - higher quality at the same price and a faster throughput. gemini_ai() sends it with thinkingConfig$thinkingLevel = "minimal", which is what keeps 2.5-Flash-class latency, and caps its output at the model's 65536-token ceiling. Verified against both a free-tier and a paid API key, so it is listed under "Free tier" (free-tier models also work with paid keys).
- OpenAlex CSV import - new web-export format: convert2df(dbsource = "openalex") now reads the new OpenAlex "Export to CSV" layout (human-readable headers such as Work ID, Title, Author, Source, Author IDs, Institution) in addition to the legacy dotted-path column names (id, authorships.author.display_name, ...). The paper identifier was renamed by OpenAlex from "id" to "Work ID".
- OpenAlex CSV - field validation & fault tolerance: csvOA2df() now validates the available metadata. It stops with a clear, actionable message when a required field is missing (Work ID, Title, Author, Source, Year) and warns about missing recommended fields, while the import still proceeds. In Biblioshiny these are surfaced as a dialog / notification, so an incomplete OpenAlex CSV no longer crashes the app.
- completeMetadata() - OpenAlex enrichment by Work ID: records are now looked up on OpenAlex by their Work ID (id_oa) when the DOI is absent (typical of minimal OpenAlex CSV exports), instead of being skipped. The OpenAlex pass is no longer disabled for OpenAlex-sourced collections, so fields omitted from a partial CSV export (abstract, affiliations, references, ...) can be downloaded from the OpenAlex API.

Bug Fixes and Improvements
- Biblioshiny - the authors' references updated: the Team's Publications page gained the 2026 Journal of Informetrics paper on Biblioshiny and the SAAS workflow, the 2026 Scientometrics paper describing the multi-phase reference matching algorithm, and three science-mapping studies that were missing (Angelelli et al. 2025 on PLS-SEM, Aria et al. 2024 on gender dysphoria research, Ciavolino et al. 2022 on PLS-SEM). The two new methodological papers were also added to the help pages they document: the reference matching paper heads the References of the Reference Matching page and appears under Historiograph and Co-citation Network, whose results depend on that matching, and the SAAS paper is cited on the SAAS Workflow page next to the 2017 one.
- Biblio AI no longer refuses to run on a working connection (#570): the check that guards an analysis called is_online(), a name that no longer exists in the app - utils.R renamed the helper is_Online() when #558 was fixed, and this one call site was not updated. Nothing failed visibly, because httr2 (which Biblioshiny loads) exports a function with the old name, so R silently resolved the call to curl::has_internet(). That probes connectivity in general and returns FALSE behind a proxy or with filtered DNS even when the service is perfectly reachable, and Biblio AI then refused to start with "Biblio AI requires an active internet connection to work" on a working network. The call now uses the app's own helper, and it probes the Gemini endpoint itself rather than the network at large: what matters at that point is whether the service about to be called can be reached. The message names the host that could not be reached and mentions proxies and firewalls.
- check_online() treats an HTTP error status as reachable: the probe opened the URL with url() and took any failure as "offline", so a host answering 401, 403 or 404 was reported as unreachable - the root of the Gemini endpoint answers 404, which would have blocked Biblio AI for everyone. The question being asked is whether the host responds, not whether the request succeeds, so the probe now performs a HEAD request through httr2 and only a transport failure (DNS, refused connection, timeout) counts as offline. The CRAN download counter and the other callers are unaffected.
- Biblioshiny now starts in non-UTF-8 locales (#589): the app failed to launch on Windows systems set to a Chinese, Japanese, Korean or Cyrillic locale, with "Error sourcing ... ui.R" and "unexpected INCOMPLETE_STRING". Shiny reads the app sources with sourceUTF8(), but in an MBCS locale R ignores encoding = "UTF-8" and decodes the files with the system codepage, so every non-ASCII character was corrupted - an em dash became a two-character sequence - and when the corruption fell inside a string literal the file no longer parsed. RStudio hid the problem because it forces the session to UTF-8; running the same code from VS Code or a plain R console did not. All 643 non-ASCII characters in the Biblioshiny sources are now written as \u escapes, or as numeric character references in the help panels, whose HTML is rendered through HTML() anyway. The sources are pure ASCII and parse identically in any locale. The change is confined to how the characters are spelled in the source: all 13,457 character constants of the app were compared before and after, and every one of them has the same value. A test now keeps the sources ASCII.
- Biblioshiny - the startup check now names the packages that are missing (#624): when a dependency could not be loaded, Biblioshiny stopped with "some packages are missing, please check your internet connection and try again". The check knew exactly which packages had failed and threw the information away, so users were sent looking for a connectivity problem they did not have, and had no way to tell which of the 36 dependencies was the one at fault. The message now lists the packages that could not be loaded and gives the install.packages() call that installs exactly those, with the version requirements stripped so the line can be pasted as it is. install.packages() signals most of its failures as a warning and returns normally, so a package that could not be installed used to fall through silently; the reason is now captured and reported. The two call sites no longer wrap the check in suppressMessages(), which was hiding these diagnostics along with the notice about a dependency being older than required - package startup chatter is silenced inside the check itself, so nothing noisy is added.
- Biblioshiny - the collaboration world map no longer crashes when no country pair reaches the edge threshold (#586): the map filtered the country pairs on Min Edges and then assigned the arc widths, which on an empty result meant writing a single value into a zero-row data frame - "replacement has 1 row, data has 0", and a greyed-out session. Since the default Min Edges is 2, any collection whose countries never collaborated more than once hit it: a small collection (the 4 PubMed records of the issue), a merged one, or simply a field of research with little international co-authorship. Reproduced on the package's own 8-record WoS fixture. The choropleth is still meaningful without the arcs, so the map is now drawn with the countries coloured and no collaboration lines.
- metaTagExtraction(Field = "AU1_CO") no longer fails on a collection without affiliations (#586): a Lens.org export never carries the addresses, so neither C1 nor RP exists. Recycling the missing field through paste() collapsed it to a single element, so RP[i] was NA from the second document on, gregexpr() returned NA and the sum() guarding the country match fed NA to if() - "missing value where TRUE/FALSE needed". Both fields are now normalised to full-length vectors and the country matches are guarded against NA, so a collection with no address simply gets AU1_CO = NA instead of aborting. This is what made the Most Relevant Countries panel fail on Lens collections.
- Biblioshiny - country analyses say when the collection has no affiliation (#586): a Lens.org export contains no address at all, and a PubMed or OpenAlex export may omit them depending on the fields selected when the file was downloaded. No country can be derived from such a collection, and the four country panels - Corresponding Author's Countries, Country Scientific Production, the country collaboration network and the collaboration world map - used to fail somewhere deeper with a technical message, or with an error object the browser rendered as "[object Object]". They now check the affiliations first and state plainly that country-level analyses are not available for that collection.
- mergeDbSources() no longer leaves stale country fields behind (#586): AU_CO and AU1_CO are derived from the addresses, and after a merge they described only the sources where they had already been extracted - the documents coming from the other collections kept an empty value, which every country measure reads as "no country". Merging a collection carrying AU_CO with one that does not therefore under-counted international collaboration: on the package fixtures a Brazilian paper co-authored abroad was reported as single-country. Both fields are now dropped at merge time and recomputed from C1/RP by the analyses that need them, which is the state a freshly converted collection is in anyway.
- mergeDbSources() no longer truncates the author initials (#590): when the collections came from more than one database, the merge rebuilt every author name as the surname plus the first letter of a single token. "SELVANATHAN EA" became "SELVANATHAN E" and "LAW CCH" became "LAW C", so authors who differ only after the first initial were merged into one and the merged collection collapsed homonyms more aggressively than either of its inputs - measured on the two collections attached to the issue, all 488 author names carrying two or more initials lost them. A collection imported with Author Name Format = Fullname had its full names pushed back to initials by the same code, undoing at merge time the choice made at import and forcing users to restore the AU column by hand afterwards. Every converter already writes author names in the WoS form, so the only thing that genuinely differs between databases is the punctuation - Scopus writes the full names as "REID, MONIQUE", WoS as "REID MONIQUE" - and that is now all the merge harmonises. No author name is rewritten any more: every name in the merged collection is one that was already in one of the sources. Note that the collections to be merged should be imported with the same Author Name Format, so that their author fields are comparable.
- BibTeX import - authors are no longer split where the exporter wrapped the line (#590): WoS writes its BibTeX fields wrapped at about 72 characters, and bib2df() joined the continuation lines with ";", the separator between authors. In a BibTeX file the author separator is always " and ", never the end of a line, so whenever the wrap fell inside a name the author was split in two: "Selvanathan, / Saroja" became the two authors "SELVANATHAN" and "SAROJA", one a bare surname and the other a bare given name. The affected records carried phantom authors that no analysis could match, while the real author lost part of his production and, in the author networks, part of his co-authorships. Measured on the 208-record collection attached to the issue, 110 of its Author fields are wrapped and 113 of its 932 author slots (12%) were phantom; after the fix 2 remain, both genuine single-name authors. AU is now unwrapped before being split on " and ", so BibTeX files whose author lists fit on one line - Scopus exports among them - are left byte for byte unchanged.
- Biblioshiny - the journal ranking filter matches on the ISSN, and reports what it recognised (#643): the uploaded ranking list was compared against the collection on the journal name alone, exact after trimming and upper-casing. Any difference in punctuation, in an abbreviation or between "&" and "and" dropped the journal, and since unmatched sources are labelled "Not Ranked" the loss was indistinguishable from a journal the list genuinely does not rank. The file may now carry one or more ISSN columns - every column whose header mentions ISSN (ISSN, eISSN, ISSN-L, Print ISSN, ...) is used as a matching key, wherever it sits in the file - and journals are matched on the identifier first, falling back to the name. ISSN-only matching was not an option: WoS exports carry SN/EI, the Scopus and OpenAlex CSV paths carry ISSN, and some exports carry no ISSN at all, so the name has to stay as a fallback. After the upload a notification reports how many sources and documents were recognised and on which key. A plain two-column file behaves exactly as before, and a file missing a name or ranking column is now refused with a message instead of aborting the observer and greying out the session.
- WoS import - cited references written as "Surname, Initials" are now parsed (#640): some Web of Science plaintext exports write the cited author as "Aaker, JL, 1997, J MARKETING RES, ...", where the classic format has "Aria M, 2017, J INFORMETR, ...". The extra comma shifts every field of the reference by one, so the positional parsers read the initials where they expect the year and the year where they expect the source. Nothing then matched: histNetwork() reported "Matrix is empty!!", localCitations() returned zeros for every paper and author, and CR_AU lost the initials, silently merging different authors who share a surname. Measured on the 549-record collection attached to the issue, only 3.4% of its 43,104 references parsed a real year; after the fix 98.5% do, local citations go from 0 to 3,486 across 345 documents, and the historiograph is a 549x549 network with 3,447 edges instead of a crash. isi2df() now rejoins the two name fields, but only where the year sits exactly where the shift would put it, so references already in the classic format are left byte for byte unchanged.
- WoS import - the repeated DOI tag no longer swallows the DOI (#640): WoS writes some references as "... DOI DOI 10.1234/x", and the multi-DOI form "DOI [DOI 10.1234/X, 10.1234/x]" leaves the same duplication behind once convert2df() strips the brackets. Splitting the reference on "DOI" then yields an empty string, so those references lost their DOI entirely and could never be matched. The duplicate tag is now removed at import. This affects classic-format collections too: 10 of the 254 references in the package's own WoS fixture carried it.
- histNetwork() no longer crashes on a collection with no local citation (#640): when no reference matches any document of the collection, the LCR column stays empty and cocMatrix() returns NA after printing "Matrix is empty!!". The network was then built from that scalar and the function died on "Error in matrix(0, nrow(WLCR), length(missingLABEL)) : non-numeric matrix extent" - the same message produced by the single-term bug below, which is why the two had to be fixed together. The empty case is now returned with the shape the populated one has, a square all-zero LABEL x LABEL NetMatrix, so histPlot() and Biblioshiny get a valid empty historiograph instead of an aborted session; with verbose = TRUE the reason is stated explicitly.
- cocMatrix() no longer collapses to a vector on a single-term field (#640): the two final subsettings - WF[, !is.na(uniqueField)] and the removal of the "NA" column - used [ without drop = FALSE, so a collection whose field resolves to exactly one distinct term got back a plain vector instead of a document-by-term matrix. Every consumer then broke on nrow()/colnames(): in histNetwork() a collection with a single locally cited reference aborted with "Error in matrix(0, nrow(WLCR), length(missingLABEL)) : non-numeric matrix extent", and biblioNetwork(), conceptualStructure(), couplingMap(), threeFieldsPlot(), fieldByYear(), rpys(), sourceGrowth() and keywordAssoc() all share the same code path. Both subsettings now keep their two dimensions, for type = "matrix" and type = "sparse" alike.
- Biblioshiny - the filtered collection can be exported from the Filtered Data window (#625): the Data window on the Filters page listed the filtered records but offered no way to save them, so the export described in the Info page looked as if it did not exist. It did - under Data > Import or Load > Export Collection, which exports the collection in its current, filtered state - but nowhere near where a user would look for it. The window now carries its own format selector (Excel / R Data) and a "Save Filtered Data" button. The over-32767-character warning on the CR column applies here too, and both exports share one helper with the rest of the app.
- mergeDbSources() now says that it empties CR, and documents why (#639): merging collections from different databases renames CR to CR_raw and blanks CR for every document. That is deliberate - each database writes its references in its own format, so the same cited work appears under different strings and a shared CR column would count it more than once - but nothing said so: the roxygen page did not mention it and verbose = TRUE printed only the duplicate count, so users reasonably concluded that the merge had corrupted their data. mergeDbSources() now reports the blanking, names CR_raw as the place the original strings are kept, and lists the analyses that become unavailable (co-citation, bibliographic coupling, historiograph, local citations); the same explanation was added to the function's @details and @return. Behaviour is unchanged, and a merge of collections from a single database still leaves CR untouched and prints nothing.
- Biblioshiny - Life Cycle: "Add to report" can be clicked more than once (#631): the report handler reshaped residuals and base_year in place, writing the tabular version back into the shared values$DLC. The conversion is not idempotent, so the second click on the same results aborted the observer with "Column name `Year` must not be duplicated" (and base_year failed the same way, its "." column being gone), leaving the session greyed out and the collection unusable without a restart. The reshaping now happens on a local copy; values$DLC is left as computed, which is what the plots, the summary panel and the download handlers read.
- Biblioshiny - OpenAlex search: Boolean operators between rows on different fields: in the query builder, a row's operator was applied only when the row searched the same field as the row above it; when it opened a new field the operator was silently dropped. A NOT row therefore became an inclusion - a "NOT rat" row on Title, added below a Title and Abstract row, searched for "rat" instead of excluding it and returned a plausible but wrong result count. Cross-field NOT is now translated into the form the API accepts: title.search: NOT rat for the search fields, authorships.author.id: !A123 for Author/Concept rows. Cross-field OR has no API counterpart - OpenAlex only ANDs the filters of a request together - so it is still combined with AND, but the app now says so in a notification and suggests putting both terms in a single row instead (e.g. one All Fields row with "bone OR cartilage"). The same notification covers a NOT between two Author or Concept rows, which resolve into a single OR-ed list of IDs and so cannot exclude one term.
- Biblioshiny - the Gemini API key check no longer depends on a single model: setGeminiAPI() validated the key by sending a generateContent request to a hard-coded gemini-2.5-flash. When Google stopped serving the 2.5 family to newly created API keys, that probe started returning "HTTP 404: This model models/gemini-2.5-flash is no longer available to new users", so every new user was told their key had been refused - whatever model they had selected in Settings, and on a paid key too. The key is now validated against the model catalogue (ListModels), which is model-agnostic and cannot be broken by a model retirement; a transport failure is reported as a connection error instead of blaming the key. If the model selected in Settings is not in the catalogue of that specific key, the success message says so, instead of letting the user discover it as an HTTP 404 at the first analysis.
- Biblioshiny - default Gemini model updated: fresh installations defaulted to gemini-2.5-flash-lite, which recently created API keys cannot use. The default (in the model selector, in loadGeminiModel() and in the Content Analysis fallback) is now gemini-3.5-flash-lite. The two Gemini 2.5 entries remain selectable, for keys that still have access to them, under a "Legacy" group that states the limitation.
- Biblioshiny - plot export no longer requires pandoc: saving a Three-Field Plot (and any other network/plotly export) aborted with "Saving a widget with selfcontained = TRUE requires pandoc" on installations without pandoc, since saveWidget()/visSave() route self-contained output through rmarkdown::pandoc_self_contained_html(). These pages are temporary scratch files, screenshotted locally and deleted immediately, so they are now written with selfcontained = FALSE: the export works with no pandoc installed and the resulting PNG is unchanged. Affected: plotlySankey2png(), plot2png(type = "vis") and plot2pngGemini(), which also cleans up after itself now.
- Biblioshiny - the Gemini API key status was never displayed: the Settings panel declares uiOutput("apiStatus"), but the server assigned output$status <- renderText(...) from inside renderUI() - an output id that does not exist in the UI - and returned no UI at all. Every message was silently discarded, so a user pasting an invalid key saw nothing happen. The status is now a reactive value rendered by a single output, colour-coded for validating/success/error.
- Biblioshiny - actionable message for "AQ." Gemini keys: Google AI Studio has started issuing some accounts OAuth-style tokens prefixed with "AQ." instead of classic "AIzaSy..." API keys. They are rejected by the generativelanguage.googleapis.com REST endpoint Biblio AI calls (HTTP 401, "Expected OAuth 2 access token"), so they can never work. setGeminiAPI() now reports the real error returned by Google and, for "AQ." keys, explains how to obtain a usable key. Empty/short keys are also rejected before spending a network round trip, and the validated key is trimmed before being saved, so a key pasted with a trailing newline no longer breaks the next launch.
- Package functions now work without library(bibliometrix) (#629): internal calls to data() did not specify package = "bibliometrix", so the package datasets (bibtag, countries, stopwords, logo) were only found when the package was attached. Calling e.g. bibliometrix::convert2df(..., dbsource = "generic", format = "bibtex") in a fresh session raised "data set 'bibtag' not found" followed by "undefined columns selected". All 16 affected call sites are now package-qualified, so bibliometrix:: usage works without attaching the package. Affected functions: bib2df(), dimensions2df(), csvOA2df(), metaTagExtraction(), biblioAnalysis(), collabByRegionPlot(), termExtraction(), bradford(), rpys(), histPlot(), conceptualStructure(), fieldByYear(), couplingMap(), thematicMap(), authorProdOverTime().
- metaTagExtraction() - empty RP/C1 strings treated as missing: a Correspondence Address column present but empty in a Scopus CSV yielded RP == "" (not NA), which wiped out all affiliations in AU_UN() (crashing biblioAnalysis() with "invalid argument to unary operator") and silently overwrote valid C1 data in AU1_CO() (losing the corresponding-author country). Empty or whitespace-only RP/C1 values are now normalized to NA on entry, restoring the intended fallback on C1.
- OpenAlex CSV import no longer crashes on sparse collections: missing optional columns are now created as NA_character_ (a logical NA broke strsplit() in biblioAnalysis()), and the DT (document type) column is always present (defaults to ARTICLE, since the web CSV export does not include the work type).
- Biblioshiny - Missing Data audit: wcTable() now treats an all-NA Science Categories (WC) column as missing, fixing a "missing value where TRUE/FALSE needed" crash on import of OpenAlex collections without subject categories.
- Biblioshiny - Metadata completion modal: eligibility now counts records with a DOI or an OpenAlex Work ID, and OpenAlex enrichment is offered for OpenAlex collections (previously deselected by default). Labels and help text updated accordingly.
- Biblioshiny - Import Info & References: added a dedicated OpenAlex section documenting the minimum and recommended metadata to select when exporting, and the need to enrich the collection via the OpenAlex API to obtain cited references.
- missingData() no longer fails on collections without a TC column: the collection-level rule that flags an all-zero citation column as fully missing assigned missing_counts["TC"] unconditionally. Since sum(as.numeric(NULL)) is 0, the branch fired even when the data frame had no TC column at all, appending a spurious element to the counts vector and aborting with "arguments imply differing number of rows". The assignment is now guarded on the column being present. completeMetadata(), which calls missingData() on entry, was affected by the same crash.

Technical Improvements
- Test suite realigned with the OpenAlex Work ID refactoring: the completeMetadata() unit tests still built the old by_doi enrichment payload (now by_key, since lookups may be keyed by DOI or Work ID) and stubbed .enrich_from_openalex() without its new key_type argument, so R CMD check failed on all three platforms. The OpenAlex tests now cover the current contract - lookup by id_oa with key_type = "id" - and stub the client so they run offline instead of issuing a real API request.
- CI: actions/checkout bumped from v4 to v5; v4 targets the Node.js 20 runtime, deprecated on GitHub Actions runners.

bibliometrix V.5.4.1

Bug Fixes and Improvements
- Minor fixes in Biblioshiny UI

bibliometrix V.5.4.0

New Features
- completeMetadata(): new function to complete missing bibliographic metadata via DOI lookup against OpenAlex and Crossref. Existing values are never overwritten. Provenance is recorded both as a per-row M$ENRICH column (compact tags like "AB:OA; TC:OA; CR:CR") and as a long-format attr(M, "enrichment") data frame (SR, field, source, timestamp).
    - Two-pass orchestration: OpenAlex runs first (broader coverage of AB/CR/C1/TC), Crossref then fills residual gaps. OpenAlex is auto-skipped when the source DB is OpenAlex (M$DB[1] == "OPENALEX").
    - TC handling matches missingData() semantics: TC = 0 is treated as vacant only when the entire column sums to zero (the same collection-level rule used by the audit table), so Scopus exports with all-zero citation counts get refreshed via OpenAlex while collections with mixed legitimate zeros are left untouched.
    - Honest per-source field coverage matrix: ID (Keywords Plus) and WC (WoS categories) are always skipped (WoS-proprietary); TC requires the OpenAlex pass; DE is off by default for both sources.
- Biblioshiny: new Complete and Undo buttons in the Missing Data audit modal. The Complete sub-modal pre-selects fields with status Poor/Critical/Completely missing and reads the polite-pool email and OpenAlex API key from the Settings panel (no per-modal credential typing).
- Biblioshiny: new before/after comparison modal opened after each enrichment, showing per-tag Before %, After %, Delta %, and the number of cells filled by OpenAlex vs Crossref, plus an Undo path that restores the pre-enrichment collection.

Changes:
- Biblioshiny: Minor fix in table layout for numeric columns

Bug Fixes and Improvements
- Biblioshiny - Metadata completion result: fixed the Before/After modal showing identical percentages. The "after" snapshot is now read from the value returned by completeMetadata() rather than from the reactive table, which was stale because its modal was already closed.
- Biblioshiny - Metadata completion result: the Delta column is now rendered as a coloured badge (blue down-arrow for improvement, red up-arrow for regression) so the gain from each enrichment pass is immediately visible. A small icon prefix prevents renderBibliobox from auto-detecting the column as numeric and silently stripping the HTML.
- Biblioshiny - Synonym / Stopword pop-ups: the modal used to render very narrow because popUpGeneric() defaulted to size = "40%", which is not a valid show_alert() enum and was silently dropped. Switched to size = "l" and added white-space: nowrap to the term column so single words like "bibliometrics" or "entrepreneurship" no longer break mid-word.
- Biblioshiny - Unified Text Editing layout: the Stop Words / Synonyms boxes in Most Frequent Words, WordCloud, Treemap, Word Dynamics and Trend Topics now use the same panel layout (orange "Stop Words" panel + green "Synonyms" panel with icons) as the Co-occurrence Network menu. Existing input ids are preserved, no server-side change required.
- Biblio AI model selection:
  - Add open Gemma 4 models (gemma-4-31b-it, gemma-4-26b-a4b-it) via the Google Gemini API. gemini_ai() now handles their bare model id (no "gemini-" prefix), drops the unsupported `seed` field and caps output tokens for Gemma models.
  - Parse "thought" parts for thinking models so the answer text is returned instead of the reasoning trace.
  - Retry transient 5xx server errors (500/502/504), not only 429/503.
  - Group the model dropdown into "Free tier" / "Paid API key required".
  - Default to Gemini 2.5 Flash Lite on first launch.
- Co-occurrence Network:
  - New "Documents" tab: fuzzy assignment of documents to network clusters, reusing clusterAssignment() (the same engine as the Thematic Map).
  - Include the document-to-cluster table in the Excel report.
  - Feed the three most central documents per cluster to Biblio AI through the shared doc2clust() helper (same approach as the Thematic Map).
- clusterAssignment(): coerce TC/PY to numeric to avoid an error on collections where TC is imported as character (affects Thematic Map too).

bibliometrix V.5.3.0 (Release date: 2026-04-10)

Major Changes
- New Table Rendering Engine: Replaced DT (DataTables) with a custom htmlBoxFormat engine for data visualization.
    - Improved UI Stability: Fixed a long-standing glitch where column names would occasionally wrap or misalign in high-density dashboards.
    - Enhanced Performance: Optimized client-side rendering using a lightweight vanilla JavaScript implementation for sorting, filtering, and pagination.
    - Uniform Design: Introduced a new "Bibliobox" style that ensures consistent aesthetics across all analysis modules.
    - Better Data Handling: Improved DOI and URL handling in tables; the filtering and sorting logic now correctly ignores underlying HTML tags (like links) to focus on visible text.

Performance and User Experience Improvements
- Asynchronous Processing: All Biblioshiny analyses now run asynchronously, keeping the UI responsive during long-running operations.
- Async AI Integration: AI API calls (Gemini and OpenRouter) are now non-blocking with proper timeout handling and exponential backoff on retries.
- AI Summary Button: Added AI-powered document summaries in Most Global/Local Cited Documents tables.
- Function Optimization: Optimized heavy functions including rpys(), cocMatrix(), and table rendering for better performance.
- Power-off Button: Added a power-off button in Biblioshiny to properly shut down the application.
- Max Rows Control: Added max.rows argument in biblioshiny() to control the maximum number of rows displayed in tables.

New Features
- Add PRISMA Flow Diagram module to Biblioshiny
- Added OpenAlex API key settings panel and warning banner for unauthenticated access.
- Added email setting for polite use of the OpenAlex AI features.
- Improved cited reference (CR) download from the OpenAlex API.

Technical Improvements
- Added renderBibliobox server-side wrapper to simplify the migration from renderDT and provide global error handling via tryCatch.
- Implemented responsive horizontal scrolling for wide datasets while maintaining fixed headers for better readability.
- Refined pagination logic to handle large datasets more gracefully with dynamic page indicators.
- Implemented future/promises for non-blocking API calls with req_timeout(120) to HTTP pipelines.
- Cleaned up async AI pipeline, removing unused geminiGenerate() and geminiPromptImage() functions.

Bug Fixes
- #591 [Solved] - Synced the country dictionary with the latest ISO 3166-1 standard.
- Fixed reference matching algorithm.
- Fixed plot resize issues.
- Fixed thematic evolution display issues.
- Fixed chromium compatibility issues on Ubuntu server.
- Improved author name formatting.
- Fixed Biblioshiny crash and empty HTML downloads when clicking download/screenshot buttons before running the analysis. All export buttons are now disabled until results are available.
- Fixed OpenAlex API error 400 when searching by Author or Concept fields. Entity-based fields now use a two-step ID resolution approach compatible with the current OpenAlex API.


bibliometrix V.5.2.1 (Release date: 2025-12-11)

Changes:

* Removed old geemini models 1.5 and 2.0 from biblioAI
* Solved issue with internet connection checking in MS Windows systems


bibliometrix V.5.2.0 (Release date: 2025-11-04)

Features:

* Added Author Bio Card (new function AuthorBio())
* Added new plot layout in plotThematicEvolution()
* Added automatic identification of continuous flows in plotThematicEvolution()
* Added seed argument to networkPlot(), ThematicMap(), and ThematicEvolution() functions
* Improved OpenAlex data conversion process
* Enhanced Community Repulsion algorithm in networkPlot(), ThematicMap(), and ThematicEvolution() functions
* Added Citation Matching algorithm (new function applyCitationMatching())
* Added Life Cycle Analysis (new function lifeCycle())
* Biblioshiny enhancements:
    - Added AI-powered article summaries
    - Added Author Profile feature (using OpenAlex data)
    - Added API Search and Download menu for OpenAlex and PubMed
    - Removed API support for Dimensions.ai
    - Added Content Analysis menu (using contentanalysis library)
    - Improved parameter layout across all analyses
    - Added seed parameter in Settings
    - Added Life Cycle Analysis menu

Changes:

#564 [Solved] - bibliometrix now supports the new Scopus CSV format (both for data import and local citation analyses)


bibliometrix V.5.1.1 (Release date: 2025-09-02)

Features:
* Biblioshiny - Filters - Added the possibility to upload a journal ranking list and filter publications by a ranking subset
Changes:
* Biblioshiny - Added check and automatic update for imported packages: curl package (>= 6.3.0)

bibliometrix v.5.1.0 (Release date: 2025-07-15)

Features:
* rpys(): 
    - Added the possibility to choose between two different median window approaches (centered or backward)
    - Added the algorithm to identify citation sequences and influencial references ("Hot papers", "Constant Performers", "Life Cycles", and "Sleeping Beauty")
    - Added these results also in Biblioshiny outputs.
* Biblioshiny:
    - Added Animated Diachronic Networks in Conceptual and Social Structures.
    - The Filters menu has been completely redesigned. It now follows a J-AU-DOC approach and includes many more filters (such as Countries, Journals, Citations).
* Biblio AI: 
    - Improved prompt lists
    - Added new Gemini models (2.5 Flash and Flash-lite)
    
Changes:
* Solved issue in mergeDbSources(). Now when merging files from a single db, the function preserves the cited reference field
* Added automatic conversion of country ISO2 to country names for OpenAlex data in convert2df()
    
    
bibliometrix v.5.0.1 (Release date: 2025-06-05)

Features:
* Added a new function mergeKeywords() to merge DE and ID keywords in a new column 'KW_Merged'

Changes:
* Solved several issues in biblioshiny()
* The following functions have been modified to work with merged keywords (field 'KW_Merged'): 
  - tableTag()
  - cocMatrix()
  - biblioNetwork()
  - conceptualStructure()
  - thematicMap()
  - thematicEvolution()
  - threeFieldPlot()


bibliometrix v.5.0.0 (Release date: 2025-05-22)

Features:
* Biblioshiny 5.0 now includes Biblio AI – a powerful AI assistant for your science mapping analyses.

Changes:
* Solved several issues in biblioshiny()

bibliometrix v4.3.5 (Release date: 2025-05-11)
* Solved several issues in convert2df()
* Solved several issues in biblioshiny()

bibliometrix v4.3.3 (Release date: 2025-03-17)

Features:
* Improved the function plotThematicEvolution()
* Solved issue with synonyms in conceptualStructure()

bibliometrix v4.3.0 (Release date: 2024-06-30)

Features:
* Improved the function mergeDbSources()
  Now it's possible to merge collection from all supported databases
* Added the submenu "Merge Collections" in biblioshiny
  Through the new submenu "Merge Collections", it's possible to merge collections from different DBs directly in Biblioshiny

bibliometrix v4.2.3 (Release date: 2024-05-27)

Changes:
* Major fixes in bibliometrix functions

bibliometrix v4.2.2 (Release date: 2024-05-23)

Changes:
* Major fixes in bibliometrix functions
* Many improvements in Biblioshiny tables and figures 

bibliometrix v4.2.1 (Release date: 2024-05-01)

Changes:
* Major fixes in convert2df for Scopus and Lens export files
* Many improvements in Biblioshiny tables and figures 


bibliometrix v4.2.0 (Release date: 2024-04-18)

Features:
* Added the support to OpenAlex database both using export files and API
* Added the function net2Pajek to export network objects as Pajek files

Changes:
* Biblioshiny: Added an info page about supported databases and suggested format files
* Biblioshiny: In Conceptual Structure methods, added an algorithm to automatically hide overlapping labels 
* Biblioshiny: Added a popup window which shows the stopword list and the synonym list when uploaded
* Removed depencence from factominer package
* Many code and graphical improvements


bibliometrix v4.1.4 (Release date: 2023-11-29)

Changes:
* Biblioshiny: After the data quality check, the menus of the analyses that cannot be performed are hidden
* Start to adding support to OpenAlex data
* Improvements in historiograph: 
   - Improved Scopus algorithm to match local citations
   - Added OpenAlex algorithm to match local citations
   - Added Lens.org algorithm to match local citations
* Improved pajek export in biblioshiny
* Computational speed improvements
* Solved issue with igraph 1.6.0 release canddate 
* Solved issue with Matrix package

bibliometrix v4.1.2 (Release date: 2023-03-06)

Changes:
* Solved issue with new R version (R-devel no longer sets a 'stringsAsFactors' option)
* Computational speed improvements


bibliometrix v4.1.0 (Release date: 2023-01-13)

Features:
* Added a new function missingData() to check the completeness of metadata included in a bibliographic data frame 
* Biblioshiny: Added the ability to create an excel report by adding step by step results of different analysis
* Biblioshiny: Added a popup that returns the results of the metadata completeness check of imported collections
* Biblioshiny: Revamped interface with floating options menu and more space for graphical analysis results

Changes:
* Several bug fixes
* Computational speed improvements



bibliometrix v4.0.1 (Release date: 2022-09-16)

Features:
* Biblioshiny: Added longitudinal analysis for all units (Documents, Authors, Journals)

Changes:
* A lot of bug fixes


bibliometrix v4.0.0 (Release date: 2022-05-31)

Features:
* Biblioshiny has a completely renewed interface (Biblioshiny 4.0)
* All plots have new more readble sets of colors and fonts
* Added several new analyses in Biblioshiny

Changes:
* A lot of bug fixes


bibliometrix v3.2.1 (Release date: 2022-02-21)

Changes:
* shinythemes is no longer supported. It has been replaced by new bslib package


bibliometrix v3.2 (Release date: 2022-02-10)

Features:
* Added the possibility to load a list of terms to remove in all content analyses
* Added the new package logo in all plots

Changes:
* Improvements of scopus CSV file importing function
* Solved encoding issues about non UTF-8 character sets for bibtex files.


bibliometrix v3.1.4 (Release date: 2021-07-05)

Changes:
* Added the possibily to calculate all vertex centrality measures setting the argument type="all"
* Solved the issue with extracting cited sources from Scopus collections (function metaTagExtraction)
* Solved the issue related to exclusion of the ggnetwork package from CRAN by removing the dependence from the package 


bibliometrix v3.1.3 (Release date: 2021-05-25)

Changes:
* Solved issue in bibliometrix binaries for linux releases (from CRAN checks)


bibliometrix v3.1.1 (Release date: 2021-05-10)

New functionalities:
* Content analysis functions (conceptualStructure, biblioNetwork, biblioAnalysis, etc) include the analysis of bigrams and trigrams extracted from titles and abstracts 
* Three Field Plot: improved plot layout using plotly libraries
* splitCommunities: new function to create a network plot with separated communities
* histPlot: new, improved, plot layout
* fieldByYear: New Trend Topic Plot

Changes:
* Added bibliometrix logo in all plots
* networkPlot: Improved layout algorithms to obtain better separated clusters. The level of separation is guided by a new argument "community.repulsion"
* biblioshiny: Added maxUploadSize argument to biblioshiny(). Now it is possible to set any max upload file size for the biblioshiny app using the argument "maxUploadSize". The default value is maxUploadSize=200 (megabytes) 
* biblioshiny: Added the possibility to use a sample collection 
* biblioshiny: New layout for all frequency plots (sources, authors, docuemnts, etc.)
* couplingMap: Added the possibility to label clusters through content metadata (I.e. Keywords, title terms, etc.)
* Hindex: Huge improvements in execution time.


bibliometrix v3.0.4 (Release date: 2021-01-18 )

New functionalities:
* biblioshiny: added the option to export plots as png choosing dpi value and image height
* biblioshiny: added Coupling analysis by coupling menu tab
* biblioshiny: added automatic recognition of export file formats in Data menu
* couplingMap: new function performing coupling analysis on documents, authors and sources using different coupling strength measures
* normalizeCitationScore: new fuction calculating NCS for documents, authors or sources using both gloabl and local citations

Changes:
* ThematicMap: added quadrant label annotations in plot
* Biblioshiny: added the "Export graph as PNG" button to network plots
* Biblioshiny: in  network plots, added the button "Edit" for editing nodes (add, change, delete)
* Biblioshiny: improvements in plot resolution and resizing
* Removed vignettes and examples Datasets to respect CRAN rules about package max size (<5Mb).
  Examples datasets are now included in a new package bibliometrixData.
  Vignettes are published on www.bibliometrix.org
* Added dependence to bibliometrixData package



bibliometrix v3.0.3 (Release date: 2020-09-25)

Changes:
* biblioshiny: Improvements in Historiograph visualization
* biblioshiny: Rewritten treemap using plotly
* biblioshiny: Removed treemap package dependence
* histPlot: Historiograsph now allows to plot document titles
* rpys: added html link to Google Scholar


bibliometrix v3.0.2 (Release date: 2020-06-17 )
==============

New functionalities:
* duplicatedMatching: added the argument "exact"
 
Changes:
* New layout for frequency plots (Biblioshiny sections: Sources, Authors and Documents)
* convert2df: Bug fixes
* biblioshiny: improved management of reactive events
* plots: removed warnings by ggplot2 package
* ThematicMap: min frequency now is a proportion


bibliometrix v3.0.1 (Release date: 2020-05-25)
==============

New functionalities:
* biblioshiny: Added "Node Degree Plot" in Conceptual, Intellectual and Social networks 
 
Changes:
* convert2df: Bug fixes when importing uncomplete metadata
* histNetwork: Bug fixes


bibliometrix v3.0.0 (Release date: 2020-04-15)
==============

New functionalities:
* bibliometrix: Now it is possible to gather data directly using 'DS Dimensions' or 'NCBI PubMed' APIs
* biblioshiny: Added "Most Local Cited Authors" analysis in Author Menu
* biblioshiny: biblioshiny() added the arguments port, host, and launch.browser 
* biblioshiny: Now it is possible to import and convert 'PubMed' and 'Cochrane Library' export files
* convert2df: Now it imports and converts json/xml collections downloaded using 'DS Dimensions' or 'NCBI PubMed' APIs
* convert2df: Now it imports and converts export files downlaoded from 'NCBI PubMed' in pubmed format
* convert2df: Now it imports and converts export files downlaoded from 'Scopus' in csv format
* convert2df: The routine to convert data from WOS, Scopus, PubMed and Cochrane plaintext and bibtex files has been completely rewritten to be extremely more accurate and faster.

Changes:
* Added dependence to dimensionsR and pubmedR packages to gather data using APIs
* Added dependence to tidyr package 
* histNetwork: the function has been completely rewritten to improve matching accuracy and speed
* biblioAnalysis: Now it returns also the number of references (nReferences)
* summary: Changed the layout of "Main Information about Data" table
* cocMatrix: Added the argument "n" to set the number of items to include in the occurrences matrix
* biblioNetwork: Added the argument "n" to set the number of items to include in the co-occurrences matrix
* networkPlot: Now it returns also the object nodeDegree
* Converting family internal functions are no longer visible to users.
* Removed the function readFiles. Its functionalities are now included in convert2df
* Removed dependence to reshape2 package
* Removed dependence to RISmed package


bibliometrix v2.3.2 (Release date: 2019-11-23)
==============

New functionality:
* biblioshiny: Introduced a new export window to export the collection into an excel/RData file
* biblioshiny: Assigned custom names to excel export buttons for all tables

bibliometrix v2.3.1 (Release date: 2019-11-01)
==============

New functionality:
* biblioshiny: added the support to Dimensions files
* convert2df(): added the support to Dimensions files
* dimensions2df(): introduced ths new function to import and convert Dimensions cvs/xlsx files


Changes:
* bug fixes in many functions




bibliometrix v2.2.2 (Release date: )
==============

New functionality:
* biblioshiny: added "remove isolated nodes" option in network analysis
* net2VOSviewer: introduced this new function to export and plot networks in VOSviewer software


Changes:
* networkPlot: Fixed an issue with "remove.isolates" argument
* networkPlot: Removed vosviewer option in "type" argument. Now networks can be exported in VOSviewer using the new function net2VOSviewer()



bibliometrix v2.2.1 (Release date: 2019-06-26)
==============

New functionality:
*conceptualStructure: Added the Benzecrì eigenvalue correction
*conceptualStructure: Added the explained variance information in the plot axis labels
*thematicEvolution: new measure "Inclusion Index weighted by Term Occurrences"
*thematicMap: Added the possibility to associate more than one label to each cluster (argument n.labels)
*thematicEvolution: Added the possibility to associate more than one label to each cluster (argument n.labels)
*biblioshiny: Integrated new functionality of conceptualStructure, thematicMap and thematicEvolution
*New dataset: management: The use of bibliometric approaches in business and management disciplines



bibliometrix v2.2.0 (Release date: 2019-05-02)
==============

New functionality:
*biblioshiny: new threeFieldsPlot in the Dataset tab
*added the function threeFieldsPlot 
*Speed improvements in several functions


bibliometrix v2.1.2 (Release date: 2019-03-14)
==============

New functionality:
*biblioshiny: new dendrogram plot in the factorial analysis (Conceptual Structure)
*biblioshiny: added the number of cluster argument in the factorial analysis (Conceptual Structure)
*biblioshiny: added Most Cited Sources (from References) in Sources
*biblioshiny: added disambiguation parameter in affiliation
*Speed improvements in several functions

Changes:
* retrievalByAuthorID: Now, even when there is an error, the function continues to download the data



bibliometrix v2.1.1 (Release date: 2019-02-07)
==============

New functionality:
* biblioshiny: all plots are now dynamic (using plot.ly or VisNetwork)
* biblioshiny: added new plots in dataset menu
* biblioshiny: Menu "Conceptual Structure" has been re-organized
* the function thematicMap has been completely rewritten. Now it automatically calculates the network and plots the map.




bibliometrix v2.1.0 (Release date: 2019-01-06)
==============

New functionality:
* biblioshiny networks are now plotted using VisNetwork package.
* biblioshiny menu has been completely rewritten. Now, descriptive analyses are organized by the unit of analysis
* Several descriptive plots and tables have been added
* Added the new function authorProdOverTime to calculate and plot the productivity over the time of the top authors
* Added "measure" parameter in plotThematicEvolution
* Added the new function bib2df. It gives the possibility to import data from a "generic" bibtex file format  (i.e. Zotero, JabRef, etc.)
* Added the possibility to calculate H-index for sources


Changes:
* Completely rewritten the importing function from bibtex files
* Solved an issue in dominance(). Now Dominance factor is correctly calculated
* Solved several issues in importing functions due to inconsistence in WOS/SCOPUS web-exporting procedures



bibliometrix v2.0.2 (Release date: 2018-10-26)
==============

New functionality:
* Added Country scientific production in descriptive analysis (biblioshiny)
* Added country collaboration map layout in biblioshiny
* Added "opacity" parameter in networkPlot
* Added "field" parameter in thematicMap
* Added "field" parameter in thematicEvolution
* Added bradford() function to identify core sources 
* Added law analyses (bradford and lotka) in biblioshiny 
* Added "stat" parameter in networkStat()
* Added "type" parameter in networkStat()
* Added Multidimensional Scaling Analysis in conceptualStructure()
* Added "shortlabel" parameter in bibloNetwork()


Changes:
* Now plots show lowercase labels
* networkStat() now allows calculating single centrality indices (using parameters stat and type)
* Improved the optimal number of clusters in conceputalStructure(). Now the wss criterium is used


bibliometrix v2.0.1 (Release date: 2018-10-09)
==============

New functionality:
* added the possibility to load Rdata files in biblioshiny()
* added Thematic Evolution to biblioshiny()
* added the function plotThematicEvolution() to draw thematic evolution
* added Thematic Map to biblioshiny()
* added TreeMap plot to biblioshiny()
* added Word Dynamic Analysis biblioshiny()
* added Source Dynamic Analysis to biblioshiny()
* added the function rpys() to perform the Reference Publication Year Spectroscopy
* added the function sourceGrowth to calculate source publication time series
* new white layout for biblioshiny()



bibliometrix v2.0.0 (Release date: 2018-09-03)
==============

New functionality:
* added biblioshiny(): A shiny app for bibliometrix R-package



bibliometrix v1.9.4 (Release date: 2018-06-24)
==============

New functionality:
* Added a new, and more readable, historiograph plot in histPlot()
* Added function networkStat() to perform the descriptive analysis of network graph characteristics
* Added the generic function summary() to summarize the results of the networkStat() function 
* Added a new section "the descriptive analysis of network graph characteristics" in the vignettes
* Added the possibility to use scopus collections in histNetwork() function
* Added the possibility, in histNetwork() function, to set the minimum number of citations for the documents included in the analysis
* Added the argument aff.disamb in metaTagExtraction()

Changes:
* Solved the compatibility issue with the new version of rscopus package
* Minor changes in argument list of histNetwork() and histPlot()
* Improved plot layout and colors in networkPlot()
* Solved the issue regarding the older versions of utils::promptPackage()
* Solved the issue regarding missing vertex labels in VOSviewer visualization 


bibliometrix v1.9.3 (Release date: 2018-05-15)
==============

New functionality:
* Added the possibility to import collections from COCHRANE Database in convert2df()
* Completely rewritten conceptualStructure() function. 
  Now it performs CA and MCA methods and plots factorial maps of documents.
* Added binary argument in cocMatrix(). It allows to build up a document x attribute matrix using both binary and full counting


bibliometrix v1.9.2 (Release date: 2018-03-28)
==============

Changes:
* Solved the issue https://stat.ethz.ch/pipermail/r-devel/2018-March/075737.html regarding the package Matrix


bibliometrix v1.9.1 (Release date: 2018-03-14)
==============

Changes:
* Minor fixes in several functions


bibliometrix v1.9 (Release date: 2018-01-20)
==============

New functionality:
* added the possibility to import collections from MedLine/PubMed in convert2df()
* added co-occurrence normalization in networkPlot()
Changes:
* improved speed and efficiency in citation analysis (histNetwork(), localCitations(), metaTagExtraction())
* improved function histNetwork()
* improved function metaTagExtraction()


bibliometrix v1.8 (Release date: 2017-08-30)
==============

Changes:
* improved historiograph algorithm in histNetwork()
* improved network layout in histPlot()
* added new SR field in the bibliographic data frame
* improved importing functions


bibliometrix v1.7 (Release date: 2017-07-07)
==============

New functionality:
* added new clustering algorithms into networkPlot()
* added argument 'halo' in networkPlot() to color cluster groups
* added function normalizeSimilarity() to calculate some probabilistic and set-theoretic similarity measures
* added function thematicMap() to create a thematic map based on co-word network analysis and clustering
* added function thematicEvolution() to create an Evolution thematic map based on co-word network analysis and clustering. 

Changes:
* removed function couplingSimilarity()

bibliometrix v1.6 (Release date: 2017-05-09)
==============

New functionality:

* added two datasets isiCollection and scopusCollection
* mergeDbSources() merges bibliographic data frames from SCOPUS and ISI WOS
* duplicatedMatching() searches duplicated records in a bibliographic database using the generalized Levenshtein (edit) distance
* dfMerge() removed from package
* removed dipendence from dplyr package
* added possibility to merge synonyms using termExtraction()
 
Changes:
* Minor fixes in several functions
* Minor corrections in vignettes and documentation


bibliometrix v1.5 (Release date: 2017-03-15)
==============

New functionality:

* retrievalByAuthorID() gets Author Content on SCOPUS by ID
* idByAuthor() gets Complete Author Information and ID from Scopus
* Hindex() introduced the argument years
 
Changes:
* Minor fixes in several functions
* Minor corrections in vignettes and documentation

bibliometrix v1.4 (Release date: 2017-01-24)
==============

New functionality:

* conceptualStructure() creates and plots conceptual structure map of a scientific field
* histPlot() plots historical co-citation network
* networkPlot() plots Bibliographic networks
* readFiles() loads a sequence of ISI or SCOPUS Export files into a large character object
 
Changes:
* Minor fixes in metaTagExtraction() function
* Minor fixes in convert2df() function
* Minor corrections in vignettes and documentation


bibliometrix v1.3 (Release date: 2016-11-17)
==============

New functionality:

* termExtraction() extracts terms from a textual field (abstract, title, author's keywords, etc.) of a bibliographic data frame. 
Now it integrates Porter's stemming algorithm and term extraction procedure for English, French, German, Italian and Spanish textual contents.


bibliometrix v1.2 (Release date: 2016-10-18)
==============

New functionality:
* keywordAssoc() associates authors' keywords to keywords plus
* keywordGrowth() calculates yearly cumulative occurrences of top keywords.
* termExtraction() extracts terms from a textual field (abstract, title, author's keywords, etc.) of a bibliographic data frame.

Changes:
* New statistics in summary() function
* Minor fixes in convert2df() function
* Minor corrections in vignettes and documentation


bibliometrix v1.1 (Release date: 2016-09-07)
==============

Changes:
* Minor fixes in convert2df() function
* Minor corrections in vignettes and documentation


bibliometrix v1.0 (Release date: 2016-06-28)
==============

New functionality:
* histNetwork() creates a historical co-citation network from a bibliographic data frame.

Changes:
* Minor fixes in cocMatrix() function
* Minor corrections in vignettes and documentation


bibliometrix v0.8 (Release date: 2016-06-10)
==============

New functionality:
* Hindex() calculates the authors' h-index and its variants (g-index, m-index) in a a bibliographic collection.

New data:
* garfield dataset

Changes:
* Minor corrections in vignettes and documentation


bibliometrix v0.7 (Release date: 2016-06-04)
==============

New functionality:
* timeslice() calculates Jaccard and Salton similarity indices among manuscripts of a coupling network
* dfMerge() merges two bibliographic data frames deleting duplicate manuscripts.
* metaTagExtraction() now extracts also university of affiliation for each co-author

Changes:
* Minor fixes in metaTagExtraction() function 
* Minor corrections in vignettes and documentation


bibliometrix v0.6 (Release date: 2016-05-30)
==============

New functionality:
* couplingSimilarity() calculates Jaccard and Salton similarity indices among manuscripts of a coupling network

Changes:
* Minor corrections in vignettes and documentation


bibliometrix v0.5 (Release date: 2016-05-25)
==============

New functionality:
* localCitations() generates the frequency table of the most cited local authors.

Changes:
* Minor fixes in citations() function
* Minor corrections in vignettes and documentation


bibliometrix v0.4 (Release date: 2016-05-23)
==============

Changes:
* Minor fixes in citations() function


bibliometrix v0.3 (Release date: 2016-05-21)
==============

Changes:
* Minor corrections in vignettes and documentation


bibliometrix v0.2 (Release date: 2016-05-19)
==============

Changes:
* Additional vignettes and documentation

New functionality:
* citations() generates the frequency table of the most cited references or the most cited first authors (of references).
* lotka() now performs Kolmogorov-Smirnoff two-sample test among observed and theoretical Lotka's distributions.

Bug Fixes:
* Minor fixes in importing routines and summary function.