# 5.8.2
- `AI_applyAnonymization()` gains early stopping of the refinement loop via the new
  `tol` and `patience` arguments: refinement now terminates once the combined utility
  score U stops improving by more than `tol` for `patience` consecutive iterations,
  instead of always running all `max_iter` rounds.
- `query_llm()` now omits the `temperature` parameter for OpenAI GPT-5.x and o-series
  reasoning models (which do not accept a custom temperature), enabling use of e.g. `gpt-5.5`.
- Bugfix: `ldiversity()` now computes distinct l-diversity measure correctly in case of `NAs` in Keyvars
  * improved/simplified uderlying C++ code
  * added Unit-Tests for `ldiversity()`
- Fixing some Header-Definitions for CRAN-Compliance
- Updated Unit-Tests for `pram()`

# 5.8.1
- New AI-assisted anonymization features:
  + `AI_createSdcObj()`: LLM-assisted variable classification into SDC roles
    (key variables, numerical variables, PRAM variables, weight, household ID)
  + `AI_applyAnonymization()`: Agentic loop that proposes, evaluates, and refines
    anonymization strategies using structured tool calling
  + Provider-agnostic LLM access via `query_llm()` supporting OpenAI, Anthropic,
    and any OpenAI-compatible endpoint (Ollama, Azure, vLLM)
  + Privacy by design: only metadata (variable names, types, cardinality, factor
    levels) is sent to the LLM — never the actual microdata
  + Combined utility score for quantitative strategy comparison
  + New vignette: "AI-Assisted Statistical Disclosure Control with sdcMicro"
- AI integration in `sdcApp()`:
  + New "AI-Assisted" tab for interactive strategy generation and comparison
  + "AI suggest variables" button in the setup panel with auto-fill
  + Applied AI methods tracked in the Reproducibility tab
- Renamed function prefixes from `KI_` to `AI_` for consistency
- Remove `shinyBS` dependency; replaced with pure R+JS implementations
- Fix deprecated enum-to-float arithmetic warnings in C++ code (`RankSwapping.h`, `Mdav.h`) flagged by clang 21+ and gcc 14+

# 5.7.10
- fix inconsistency in `rankSwap()` Output [Issue #361]
- remove shinyBS dependency in `sdcApp`

# 5.7.9
- Improvements for `recordSwap()`:
  + `hid`, `risk_variables`, `hierarchy`, `similar` and `carry_along` now accept factor variables as inputs
  +  Input checking has been improved, previously supplying a factor to hid resulted in very long pre-processing times

# 5.7.8
- LTO notes resolved

# 5.7.6
- resolved a note from CRAN
- removed `SystemRequirements: C++11` and corresponding Makevars-Files
- removed conditional definition for unused typedef in `src/Framework.h`
- Bugfix in `sdcApp()`

# 5.7.5
- minor modifications in target swapping procedures
- resolved a note from CRAN

# 5.7.4
- nothing special to report, fixed a note for CRAN policies

# 5.7.3
- Fix Fontawesome-Icons changes in `sdcApp` (thx @coatless)
- Fix self-assignment of variables in the record-swapping code (thx @coatless)
- Remove unused variables in edmonds.cpp (thx @coatless)
- Bugfix in `dRiskRMD()`; previously, too many obs were marked as risky
- Fix missing `\value` sections in `.Rd` files
- Never change users options when using `par()`
- Removed fixed seed-value in `microaggregation(..., method = "rmd")`
- Updates examples so that no code-lines are commented out
- use `\donttest{}` instead of `\dontrun{}` if possible
- Update `Authors@R`

# 5.7.2
- Removed old package vignette `sdc_guidelines`
- Fix warnings with clang-devel related targeted record swapping
- Fix a note in vignette title for TRS
- Added a warning in `recordSwap()` if variables that are not at household-level are used in `carry_along`
- Remove travis and use Github workflows to check the package

# 5.7.1
- Bugfix in `extractManipData()` with only a single categorical variable, thx @tamertemizer for reporting
- Feature: added new function `recordSwap()` that implements TRS (targeted record swapping)
- Allow to change fixed threshold for undo-feature (`undolast()`) using env-var `sdcMicro_maxsize_undo`

# 5.6.1
- various fixes in `sdcApp()`, e. g:
   * pram (expert) button is now shown again
   * kAnon correctly shows button
- additional data-utility / information-loss measures `IL_correl()` and `IL_variables()`
- fix in `addGhostVars()` that now correctly initializes `@manipGhostVars`
- fix order in `microaggregationGower()`

# 5.6.0
- fix for changes in the base R function order/sort in R 4.1.0

# 5.5.2
- write intermediate files to temp-directory in `rmarkdown::render()` to fix possible deployment problems with rsconnect when using `report()`
- bugfix in `pram()`
- bugfix in `dRisk()`
- updates when reading foreign-file formats into `sdcApp()`

# 5.5.1
- bug in modRisk when the levels of a variable in the formulaM is greater than 10 (solved). Thanks to Ying Chen for the solution.
- Adding default comment.char parameter for csv imports (thx @leebrian)

# 5.5.0
- gcc problems solved

# 5.4.1
- nothing new, but shiny did no longer export a specific function, so we resolved a warning

# 5.4.1
- valTable now also works for additive noise methods and swapping
- updates to imports
- small fixes and updates in `sdcApp`

# 5.3.0
- Add versions for Stata export
- add parameter `shiny.server` to `sdcApp` (to make it easily possible to run the app on a shiny server)
- fixes due to new data.table version
- improvements in sdcApp()

# 5.2.0
- improvements in sdcApp()
- updating dependencies due to new version of package car
- bug in IL1 resolved. Now distiction of methods IL1 and IL1s
- also a new gh-page (http://sdctools.github.io/sdcMicro/) was created

# 5.1.0
- bugfix in sdcApp() when using R-objects as data input
- bugfix in sdcApp() when button to perform kAnon() was "lost"
- bugfix in sdcApp() when >= 10 keyvars were used in localSuppression
- bugfix in sdcApp(): sort table of risky observations correctly
- support shiny server for the GUI
- new method kAnon_violations() returning the number of records violating k-anonymity in the sample or the population
- fixes and improvements in parametrisation and error-handling in riskyCells()
- minor fixes in sdc_guidelines vignette including a comment, that the guidelines have not yet been revised for sdcMicro version >= 5.0.0
- pass (...) in writeSafeFile(..., format="csv")
- fixes and improvements in localSuppression()

# 5.0.4
- new default theme "IHSN" for sdcApp()
- fixing an issue in report() where  disclosure risk for original data was wrongly displayed if alpha-parameter was set
- allow passing through of arguments in sdcApp()
- add functions argus_rankswap() and argus_microaggregation() that use c++-code directly from mu-argus
- bugfix in dUtility()
- new function riskyCells() that allow to compute "unsafe cells" as in mu-argus
- several code-optimizations and cleanup

# 5.0.3
- improvement: show name of uploaded file in report when using sdcApp() (fixes #209)
- correct summary statistics in GUI in case not all variables have been changed
- fixes for file-imports of datasets containing labels (eg. stata-files)
- allow to change computation of suda2-scores by adding a parameter to suda2()
- use some functions (gowerD,..) from VIM
- bugfix for special case of only one dim-variable in freqCalc()
- bugfix for edge-cases in localSuppression()/kAnon()
- update references and improve documentation


# 5.0.2
- consistency improvements
- code cleanup
- fixes for non-ut8 encoded metadata using file import in graphical user interface
- do not allow missing values in weight-variable
- various small bugfixes and improvements

# 5.0.1
- This release includes some small improvements in the graphical user interface and preperations for new major R version.

# 5.0.0
- new argument 'excludeVars' in createSdcObj()
- shiny-based GUI directly included in the package, can be started with sdcApp()
- added vignette for sdcApp()
- rewrite of function 'freqCalc()'
- many improvements and bugfixes

# 4.1.7
 - IHSN SDC guidelines as vignette
 - cat. key variables returned as factors in extractManipData

# 4.1.6
 - show method for sdcMicroObj

# 4.1.5
 - pram bug fix

# 4.1.4
 - bug fix mafasts

# 4.1.1
 - only small bug fixes

# 4.1.0
 - new IHSN SDC Guidelines included
 - new implementation of freqCalc. Computation time is now linear with data size.
   Gains a lot of speed for large data sets.
 - localSuppression, measure_risk and createSdcJobj make use of new implementation of freqCalc
 - C++-Level glpk and R-Level Rglpk removed for better compatiblity with Mac
 - configure,cleanup removed and Makevars and Makevars.win rewritten according to Rcpp documentation
 - function microaggrGower added: microaggregation for numerical and categorical variables based on Gower distance
 - completely new report facility (knitr and brew instead of R2HTML), new class 'reportObj' which stores all info for
   reporting and is generate by calcReportData
 - new slot in class sdcObj for manipPramVars

