diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a9431a21..8ebaac0b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,7 +51,7 @@ jobs: # lint the main library workspace for non-wasm target - run: cargo clippy --features all -- -D warnings -A deprecated # lint the non-wasm examples - - run: cd ${{ github.workspace }}/examples && cargo clippy --workspace --exclude "wasm*" --exclude "kaleido" -- -D warnings + - run: cd ${{ github.workspace }}/examples && cargo clippy --workspace --exclude "wasm*" -- -D warnings # lint the plotly library for wasm target - run: cargo clippy --package plotly --target wasm32-unknown-unknown -- -D warnings # lint the wasm examples @@ -67,9 +67,8 @@ jobs: with: package: plotly feature-group: only-explicit-features - features: kaleido + features: static_export_chromedriver rust-toolchain: stable - release-type: minor test: name: Tests @@ -135,7 +134,7 @@ jobs: # Run tests on Ubuntu with Chrome - name: Run tests (${{ matrix.os }} - Chrome) if: matrix.os == 'ubuntu-latest' && matrix.browser == 'chrome' - run: cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido + run: cargo test --workspace --features ${{ matrix.features }} # Install xvfb for Firefox WebGL support - name: Install xvfb @@ -157,12 +156,12 @@ jobs: echo "BROWSER_PATH: $BROWSER_PATH" echo "RUST_LOG: $RUST_LOG" - xvfb-run -s "-screen 0 1920x1080x24" cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido + xvfb-run -s "-screen 0 1920x1080x24" cargo test --workspace --features ${{ matrix.features }} # Run tests on macOS with Chrome - name: Run tests (${{ matrix.os }} - Chrome) if: matrix.os == 'macos-latest' && matrix.browser == 'chrome' - run: cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido + run: cargo test --workspace --features ${{ matrix.features }} # Run tests on Windows with Chrome WebDriver - name: Run tests (${{ matrix.os }} - Chrome) @@ -180,7 +179,7 @@ jobs: Write-Host "WEBDRIVER_PATH: $env:WEBDRIVER_PATH" Write-Host "BROWSER_PATH: $env:BROWSER_PATH" - cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido + cargo test --workspace --features ${{ matrix.features }} - name: Upload static image(s) artifact uses: actions/upload-artifact@v4 @@ -218,7 +217,6 @@ jobs: customization/multiple_plots_example, financial_charts, images, - kaleido, maps, ndarray, scientific_charts, diff --git a/.github/workflows/publish_plotly_kaleido.yml b/.github/workflows/publish_plotly_kaleido.yml deleted file mode 100644 index 6c68c821..00000000 --- a/.github/workflows/publish_plotly_kaleido.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Publish plotly-kaleido - -on: - workflow_dispatch: - -jobs: - create-crates-io-release: - name: Deploy to crates.io - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - run: cargo login ${{ env.CRATES_IO_TOKEN }} - env: - CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} - - run: cargo publish --allow-dirty -p plotly_kaleido \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e32ec3a8..df2f88ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,8 +22,6 @@ jobs: install-chromedriver: true - run: cargo publish --allow-dirty -p plotly_derive - run: sleep 10 - - run: cargo publish --allow-dirty -p plotly_kaleido - - run: sleep 10 - run: cargo publish --allow-dirty -p plotly # plotly_static is not part of the same ecosystem yet so it doesn't use the same TOKEN # - run: sleep 10 diff --git a/CHANGELOG.md b/CHANGELOG.md index 6913daa1..194d2218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ## [Unreleased] +## [0.15.0] - 2026-10-18 + +This is the last release bundling plotly.js 3.x; the upgrade to plotly.js 4.x is planned for 0.16.0 ([#437](https://github.com/plotly/plotly.rs/issues/437)). + +Highlights: plotly.rs now exposes every non-deprecated plotly.js 3.7 trace type ([#422](https://github.com/plotly/plotly.rs/issues/422)) — 27 trace types are new since 0.14.1 — adds the MapLibre `map`, ternary and Smith chart subplots, and drops the deprecated Kaleido backend. Breaking changes are marked **Breaking** below. + ### Added - [[#406](https://github.com/plotly/plotly.rs/issues/406)] Expose `plotly.js` 3.1–3.6 attributes @@ -13,19 +19,42 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a - [[#412](https://github.com/plotly/plotly.rs/pull/412)] Add `Violin` trace type with box, mean line, KDE span, and split/grouped support - [[#414](https://github.com/plotly/plotly.rs/issues/414)] Add `DensityMap` (MapLibre `map` subplot) trace type — density heatmaps with full color-scale and hover support - [[#417](https://github.com/plotly/plotly.rs/issues/417)] Add `ScatterMap` (MapLibre `map` subplot) trace type — the modern counterpart to `ScatterMapbox` -- Add `Funnel` trace type (bar-like, cartesian) with `Connector` and `FunnelHoverInfo` options, plus the layout-level `funnelmode`/`funnelgap`/`funnelgroupgap` attributes and a `FunnelMode` enum -- Add `Waterfall` trace type (bar-like, cartesian) with a typed `Measure` enum (`absolute`/`relative`/`total`), per-class `increasing`/`decreasing`/`totals` styling via `MeasureStyle`, a `Connector` with `ConnectorMode`, and a `WaterfallHoverInfo` enum. The layout-level `waterfallmode`/`waterfallgap`/`waterfallgroupgap` attributes and the `WaterfallMode` enum already existed - [[#418](https://github.com/plotly/plotly.rs/issues/418)] Add native point clustering to `ScatterMap` via a `Cluster` option - [[#421](https://github.com/plotly/plotly.rs/pull/421)] Backfill trace attributes for trace types to bring them to parity with plotly.js 3.7 - [[#422](https://github.com/plotly/plotly.rs/issues/422)] Add `Indicator`, `Histogram2d`, `Icicle` trace types - [[#425](https://github.com/plotly/plotly.rs/issues/425)] Add `Splom` and `Parcats` trace types (scatter-plot matrix and parallel categories) - [[#432](https://github.com/plotly/plotly.rs/issues/432)] Add `Funnel` and `Waterfall` trace types +- [[#422](https://github.com/plotly/plotly.rs/issues/422)] Complete trace-type coverage for plotly.js 3.7: add `BarPolar`, `FunnelArea`, `Cone`, `StreamTube`, `IsoSurface`, `Volume`, `Parcoords`, `ScatterTernary`, `ScatterSmith`, `Carpet`, `ScatterCarpet`, `ContourCarpet` and `Histogram2dContour` (which previously had a `PlotType` variant but no trace to emit it). Every non-deprecated plotly.js 3.7 trace type is now exposed. The new traces omit Chart Studio `*src` attributes, which plotly.js 4 removes +- [[#422](https://github.com/plotly/plotly.rs/issues/422)] Add the ternary and Smith chart subplots (`LayoutTernary`/`TernaryAxis`, `LayoutSmith`/`RealAxis`/`ImaginaryAxis`), polar-subplot `bar_mode`/`bar_gap` (`PolarBarMode`) for `BarPolar`, the `funnelareacolorway`/`extendfunnelareacolors`/`hiddenlabels` layout attributes, and `ThetaUnit::Gradians` (breaking for exhaustive matches on `ThetaUnit`) +- [[#422](https://github.com/plotly/plotly.rs/issues/422)] Examples and mdBook recipe pages for every new trace type: polar bar, parallel coordinates, funnel area, vector field (cone/streamtube), isosurface/volume, ternary, Smith and carpet charts, and 2D histogram contours ### Changed - [[#406](https://github.com/plotly/plotly.rs/issues/406)] Upgrade bundled plotly.js from 3.0.1 to 3.6.0 - [[#419](https://github.com/plotly/plotly.rs/issues/419)] Upgrade bundled plotly.js from 3.6.0 to 3.7.0 - [[#422](https://github.com/plotly/plotly.rs/issues/422)] Add layout-level `uirevision` to preserve UI state (zoom/pan/selection) across re-renders (complements the trace-level `uirevision` added in #421) +- `plotly_static` bumped to 0.2.0 (breaking: `ImageFormat::EPS` removed) +- Bump `darling` to 0.24 and `syn` to 3 in `plotly_derive`, and `dirs` to 7 in `plotly_static` +- Bump example dependencies: `reqwest` 0.13, `env_logger` 0.11, `itertools` 0.15, `ndarray` 0.17, `rand`/`rand_chacha` 0.10 +- Theme statics in `plotly::layout::themes` (`DEFAULT`, `PLOTLY_WHITE`, `PLOTLY_DARK`, …) are now `std::sync::LazyLock