# News

## v1.3.8 - 2026-08-04

- Normalize indexed operations to `apply!(state, indices, operation)` and support
  indexed Gaussian channels. The former `apply!(state, operation, indices)` form
  for Gaussian unitaries is deprecated but remains available for compatibility.

## v1.3.7 - 2026-06-06

- Add indexed application of a Gaussian unitary to selected modes of a state.

## v1.3.6 - 2026-03-19

- Allow `homodyne`, `generaldyne`, and their corresponding `rand(...)` interfaces to measure single-mode Gaussian states.

## v1.3.5 - 2026-03-19

- `express(gaussian_state, ::QuantumOpticsRepr)` is now implemented, letting Gabs.jl pure Gaussian states to be converted to Kets from QuantumOptics.jl

## v1.3.4 - 2026-01-05

- Add optional rng arguments to random methods.
- Implement embed functions for Gaussian unitaries, channels, and linear combinations.
- Add finite squeezing keyword argument in the `homodyne`, `Homodyne` interface.

## v1.3.3 - 2025-12-13

- Replace SymplecticFactorizations.jl as a dependency with SymplecticMatrices.jl.
- Define `embed` for Gaussian states.
- Add `homodyne` interface.
- Add `nmodes` function.

## v1.3.2 - 2025-08-12

- Add `GaussianLinearCombination` interface, with predefined `catstate`, `catstate_even`,
 `catstate_odd`, and `gkpstate` states.

## v1.3.1 - 2025-07-02

- Bump QuantumInterface compatibility.

## v1.3.0 - 2025-04-15

- Add seminal papers section to documentation.
- **(breaking)** Add `hbar=2` as default convention in Gabs.
- Add kwarg to predefined Gaussian methods to specify `hbar`.
- Clean up docstrings to no longer include uncompiled LaTeX.
- Add support for `entropy_vn`, `fidelity`, and `logarithmic_negativity` metrics.
- Optimised `changebasis` to avoid matrix multiplication.
- **(breaking)** Implement revamped `generaldyne` interface.
- **(fix)** Trace out indices in `ptrace` indicated by `indices` rather than `setdiff(1:nmodes, indices)`.

## v1.2.9 - 2025-04-15

- Implements breaking changes noted in v1.3.0.

## v1.2.8 - 2025-02-06

- Improve performance of `blochmessiah` by 2x.
- Validate and document the creation of Gaussian states with symbolic variables from Symbolics.jl.

## v1.2.7 - 2025-01-25

- Use `blochmessiah` decomposition from SymplecticFactorizations.jl.

## v1.2.6 - 2025-01-14

- Add `changebasis` for changing symplectic bases of Gaussian types.
- Add kwargs to `isapprox` defined on Gaussian types.
- Add symplectic analysis section to the documentation manual.

## v1.2.5 - 2025-01-09

- Add SymplecticFactorizations as a dependency.
- Import and use `polar` and `williamson` decompositions from SymplecticFactorizations.jl.

## v1.2.4 - 2024-12-30

- **(fix)** Preserve mode correlations in `ptrace``.
- Change maximum number of modes from 20 to 5 in random multimode system tests to reduce numerical instabilies.
  
## v1.2.3 - 2024-12-26

- Enable propagation of dual types in Gabs custom types.
- Validate ForwardDiff and FiniteDiff support with tests.

## v1.2.2 - 2024-12-25

- Add `sympspectrum` function to compute symplectic spectrum of `GaussianState` object.
  
## v1.2.1 - 2024-12-17

- Add `issymplectic` and `isgaussian` checks.
- **(fix)** Generate correct Williamson matrix in `randstate` generation for `QuadBlockBasis`.
  
## v1.2.0 - 2024-12-16

- Add a benchmark suite as a part of the Github workflows.
- **(breaking)** Require a `SymplecticBasis` subtype to be defined when creating a Gaussian object.

## v1.1.0 - 2024-11-18

- Add `prob` function for `Generaldyne` type.
- Add features for random generation of Gaussian states, unitaries, and channels.
- **(breaking)** Switched basis for matrices generated by `symplecticform` from block diagonal to canonical.

## v1.0.2 - 2024-11-03

- Remove StaticArrays as a dependency and add as an extension.
- Add `Generaldyne` type with corresponding `output` function.
- Add `randstate` and `randchannel` to calculate random instances of Gabs types.

## v1.0.1 - 2024-10-16

- Add Makie attributes for `heatmap`.

## v1.0.0 - 2024-09-24

- First release.
- Implement `GaussianState`, `GaussianUnitary`, and `GaussianChannel` types.
- Define operations on custom types from `QuantumInterface`, including `ptrace`, `⊗`, and `apply!`. 
- Define predefined functions that create custom types.
- Create Makie extension.
