### 2026-10-09 v1.3.0
- Fix `genGSEA` error with clusterProfiler >= 4.20 (the `by` argument of `GSEA()` was removed upstream)
- Fix `ensOrg_name` lookup in `genORA`/`genGSEA` when genekitr is not attached (e.g. `genekitr::genORA()`)
- Fix misaligned `geneID` and `geneID_symbol` columns in `genORA`/`importCP` results when input ids are converted (genes in `geneID` now follow the same order as `geneID_symbol`)
- `plotEnrich()` accepts `genGSEA()` results again (recognises `core_enriched_count`/`core_enriched_geneID` columns)
- `genGSEA`: ids mapped to the same gene after id conversion (e.g. alias symbols) are now de-duplicated (first, i.e. highest ranked, one is kept) instead of failing with "Duplicate values in names(stats)" or being counted twice (#32, #34)
- `plotGSEA(plot_type = "bar")`: pathway labels are now always placed on the opposite side of the bars (zero centred) instead of depending on the panel centre (#32)
- `transId`/`genInfo` no longer fail with "object 'res' not found" when the data server is temporarily unreachable; the real error message is shown instead (#30)
- No more ggplot2 deprecation warnings pointing to genekitr (#33); `plotVenn(use_venn = FALSE)` verified with ggplot2 4.0 (#28)
- Replace deprecated usages of ggplot2 (`aes_string()`, `aes_()`, `size` of lines/theme elements, `sec_axis(trans =)`, numeric `legend.position`), igraph (`graph.data.frame()`, `delete.edges()`) and tidyselect (`all_of()` outside selecting functions)
- Replace superseded dplyr verbs (`filter_at()`, `top_n()`) with `filter(if_any())` and `slice_max()`
- Check web data size with base R `curlGetHeaders()` instead of RCurl; use local data directly when the server is not accessible
- Fix `as.enrichdat()` error "the condition has length > 1" under R >= 4.2
- `importCP(type = "gsea")` result now uses `core_enriched_geneID`/`core_enriched_count` columns, consistent with `genGSEA()` and `plotGSEA()`
- `expoSheet()` builds the output path with `file.path()` and creates the directory if needed
- `importPanther()` no longer calls shell commands, so it also works on Windows
- `plotEnrichAdv()` now respects the default `stats_metric = "p.adjust"`
- `transProbe()` skips the Bioconductor annotation step with a hint if the annotation package is not installed
- Do not write to the global environment any more; drop unused dependencies (futile.logger, RCurl, testthat, knitr, rmarkdown, XML, xml2, httr)
- Require R >= 4.0.0, ggplot2 >= 3.5.0 and dplyr >= 1.1.0

### 2025-01-06 v1.2.9
- Add `all_enriched_geneID`/`all_enriched_count` columns to `genGSEA` result; rename `geneID`/`Count` to `core_enriched_geneID`/`core_enriched_count`
- Add `other_color` and `alpha` arguments to `plotVolcano`

### 2023-08-09 v1.2.5
- Support more species for ORA and GSEA methods

### 2023-06-15 v1.2.4
- Fix bug in `genInfo` for one-to-many mapping

### 2023-05-24 v1.2.3

- Minor update for `plotEnrich` to check for duplicated terms

### 2023-05-24 v1.2.2

- Add citation information

### 2023-05-23 v1.2.2

- Support users modify enrichment plot labels by adding `label_by` in `plotGSEA`
- Update backend data for `genInfo`
- Fix bug in `genInfo` for one-to-many mapping
