Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: plotly/plotly.R
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.11.0
Choose a base ref
...
head repository: plotly/plotly.R
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 16 commits
  • 361 files changed
  • 5 contributors

Commits on Jan 19, 2026

  1. Configuration menu
    Copy the full SHA
    e3ea0c2 View commit details
    Browse the repository at this point in the history
  2. Updates for new kaleido release (save_image()) (#2447)

    * Pin kaleido to 0.2.1; get CI passing again
    
    * First pass at kaleido 1.0 support
    
    * Apply suggestions from code review
    
    * Add plotly_build method for ggmatrix objects
    
    plotly_build() now works with ggmatrix objects (e.g., from
    GGally::ggpairs()). Previously, ggplotly() worked but plotly_build()
    did not have a method for this class.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Update roxygen
    
    * Fix skipping of shiny test
    
    * Approve new snapshots
    
    * Update API domain
    
    * Update shinytest tests
    
    * Skip API tests
    
    * Update news
    
    * Update tests again
    
    * Support mapbox and provide actual plotly.js bundle
    
    * Install latest kaleido
    
    * Skip Gally install on R 4.2
    
    * kaleido 1.0 seems to be mostly working, but it seems broken for some tests :sigh:
    
    * Fix GGally exclusion for R 4.2 (oldrel-3)
    
    Use matrix variable with fallback instead of ternary expression
    that was passing literal 'NULL' string to pak.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Not worth the effort
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude authored Jan 19, 2026
    Configuration menu
    Copy the full SHA
    73bd179 View commit details
    Browse the repository at this point in the history
  3. Add GitHub Actions workflow to deploy R documentation (#2470)

    * Add GitHub Actions workflow to deploy R documentation
    
    This workflow builds and deploys the R documentation site from
    the graphing-library-docs repository to this repo's GitHub Pages.
    
    The workflow:
    - Runs weekly (Sundays) to pick up docs changes
    - Can be triggered manually via workflow_dispatch
    - Can be triggered via repository_dispatch from the docs repo
    
    The docs source lives at cpsievert/graphing-library-docs and includes
    documentation for both plotly.R and ggplotly.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Try sleeping in shinytest test for relayout size stability
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude authored Jan 19, 2026
    Configuration menu
    Copy the full SHA
    e70113e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8985d24 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    1d0458e View commit details
    Browse the repository at this point in the history
  6. chore: update plotly.js to v2.25.2 (#2471)

    * chore: upgrade plotly.js to v2.12.0
    
    Key changes in v2.12.0:
    - Added `griddash` axis property for multiple plot types
    - Added minor tick and grid line styling options
    - Performance improvement with "willReadFrequently" 2D context
    - Fixed blank tick labels on cartesian axes
    
    Also modified update_plotlyjs.R to support specific version targeting.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.12.1
    
    Bug fixes:
    - Fixed disabling polar rotation when dragmode is false
    - Fixed custom modebar buttons mutating input
    - Corrected schema description spacing
    
    Also added .venv/ to .gitignore.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.13.0
    
    New features:
    - Persistent and editable selections over cartesian subplots
    - New parallel coordinates options (unselected line color/opacity)
    - Enhanced violin trace with additional quartile algorithms
    - More flexible automargin control on cartesian axes
    - Added delta.prefix and delta.suffix to indicator traces
    - Added Chinese (Taiwan) and Sinhala locales
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.13.1
    
    Bug fix:
    - Fixed regression where selections were improperly attached to undefined event data
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.13.2
    
    Bug fixes:
    - Fixed sankey select error introduced in v2.13.0
    - Fixed handling of missing drag layer for invisible sankey traces
    - Fixed selection event emission in shape drawing dragmodes
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.13.3
    
    Bug fix:
    - Emit plotly_selected event on plot API calls and GUI edits
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.14.0
    
    New features:
    - Added support for sankey links with arrows
    - Added editSelection option to config
    - Updated Dutch translations
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.15.0
    
    New features:
    - New marker properties: angle, angleref, standoff
    - Legend control: entrywidth and entrywidthmode
    - Layout: minreducedwidth and minreducedheight for automargin control
    - Updated pie chart rotation to use angle value type
    
    Bug fixes:
    - Fixed automargin axis title updates
    - Fixed pattern and slice export issues
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.15.1
    
    Fix:
    - Fixed npm module issue
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.0
    
    New features:
    - Clustering options for scattermapbox
    - Bounds support for mapbox subplots
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.1
    
    Bug fix:
    - Fixed choroplethmapbox selection when adding new traces
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.2
    
    Bug fix:
    - Fixed regression in mapbox clearOutline from v2.13.0
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.3
    
    Bug fix:
    - Fixed hover on multicategory axes
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.4
    
    Bug fix:
    - Fixed regression with scattermapbox redraw from v2.16.0
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.16.5
    
    Bug fix:
    - Disabled slider interactions when staticPlot is true
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.17.0
    
    New features:
    - Added y-axes shift and autoshift to avoid axis overlapping
    - Added group attributes for scatter trace: alignmentgroup, offsetgroup
    - Added marker.cornerradius for treemap trace
    
    Changes:
    - Switched bundler from browserify to webpack
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.17.1
    
    Bug fix:
    - Fixed line redraw regression from v2.15.0
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.18.0
    
    New features:
    - Added new sync tickmode option
    - Improved mobile & tablet device detection for WebGL rendering
    
    Bug fix:
    - Fixed requirejs AMD loader import name issue (regression from v2.17.0)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.18.1
    
    Changes:
    - Upgraded d3-interpolate and d3-color to v3
    
    Bug fixes:
    - Fixed SVG export scaling by removing vector-effect CSS for static plots
    - Fixed hover on IE (regression from v2.5.0)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.18.2
    
    Bug fixes:
    - Prevented attaching internal d3 object to window (regression from v2.17.0)
    - Fixed lower/upper fence order in French locale
    - Fixed formats in Peruvian Spanish (es-pe) locale
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.19.0
    
    New features:
    - Added shape label attribute
    - Added labelalias for various axes types
    
    Bug fix:
    - Fixed hover label overlap for hovermode: 'x'|'y'
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.19.1
    
    Bug fix:
    - Ensure slider range stays in bounds during drag
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.20.0
    
    New feature:
    - Added title.automargin for automatic top/bottom margining
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.21.0
    
    New features:
    - Added label.texttemplate for parametric shapes
    - Added strict option for custom bundle command
    
    Bug fixes:
    - Fixed legend dragging with non-default anchors
    - Fixed heatmap zsmooth: "fast" rendering/performance
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.22.0
    
    New features:
    - Multiple legend support with legend2, legend3, etc.
    - Added visible option for legends
    
    Bug fixes:
    - Fixed plotly_click on touch devices for gl3d scenes
    - Fixed scatter3d when marker.opacity is zero
    - Fixed scattermapbox visibility restyle
    - Updated Norwegian and Slovak translations
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.23.0
    
    New features:
    - Added legend.xref and legend.yref for container-referenced positioning
    - Added colorbar.xref and colorbar.yref for container-referenced positioning
    
    Performance:
    - Improved heatmap rendering performance when zsmooth is false
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * chore: upgrade plotly.js to v2.23.1
    
    Bug fix:
    - Fixed heatmap rendering on iOS and Safari when zsmooth is false
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.23.2
    
    - Fixed text rendering while drawing new shapes
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.24.0
    
    - Added pattern support for pie, funnelarea, sunburst, icicle, and treemap charts
    - Fixed hover text access when all markers have "hoverinfo: none"
    - Fixed margin spacing for container-referenced legends and colorbars
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.24.1
    
    - Fixed minimal copying of arrays in minExtend function (regression from v2.24.0)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.24.2
    
    - Fixed legend groups toggle (regression from v2.22.0)
    - Fixed waterfall chart hover template delta display on total values
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.24.3
    
    - Fixed double-click hiding traces in other legends
    - Fixed double-click behavior for pie chart slices with multiple legends
    - Fixed legend group and trace order defaults with multiple legends
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.25.0
    
    - Added "Equal Earth" projection for geo subplots
    - Added options to include legends for shapes and newshape
    - Added Plotly.deleteActiveShape command
    - Fixed contour plot colorscale domain calculation
    - Fixed text markers on non-mapbox styled maps
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.25.1
    
    - Fixed clearing legend using React (regression from v2.25.0)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Upgrade plotly.js to v2.25.2
    
    - Updated Croatian translations (hr locale)
    - Security fix: addressed potential prototype pollution in plot API calls
    
    This completes the upgrade from v2.11.1 to v2.25.2.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Add TODO tracking file for plotly.js upgrade
    
    Tracks:
    - Potential regressions to test (pie rotation, selection events, SVG export, etc.)
    - Potential improvements/new features to expose in R package
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Update TODO with regression investigation results
    
    Investigated all 9 potential regressions - none are actual regressions:
    - Pie rotation: schema change only, no behavioral change
    - Selection events: improvement (more consistent event emission)
    - SVG export: bug fix improving export quality
    - Multiple legends: additive feature, regression already fixed
    - Automargin: additive feature only
    - Hover labels: bug fix improving positioning
    - Bundle size: actually decreased by ~90KB
    - Static plots: bug fix for expected behavior
    - Heatmap: bug fixes and performance improvements
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Update .Rbuildignore to exclude upgrade files
    
    Exclude from package build:
    - .venv (Python virtual environment)
    - CLAUDE.md (project instructions)
    - PLOTLYJS_UPGRADE_LOG.md (upgrade tracking)
    - PLOTLYJS_UPGRADE_TODO.md (upgrade todos)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Clean up upgrade tracking files and revert R version requirement
    
    - Remove PLOTLYJS_UPGRADE_LOG.md and PLOTLYJS_UPGRADE_TODO.md from git
      (kept locally via .gitignore)
    - Revert R version requirement to >= 3.2.0 (plotly.js upgrade doesn't
      require newer R)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Restore upgrade tracking files to git
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Accept new snaps
    
    * Update shinytest2 snapshots for plotly.js v2.25.2
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Document plotly.js v2.25.2 upgrade in NEWS
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Remove upgrade tracking files from git (keep locally)
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * Apply suggestions from code review
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude authored Jan 19, 2026
    Configuration menu
    Copy the full SHA
    0fe3e53 View commit details
    Browse the repository at this point in the history

Commits on Jan 20, 2026

  1. Fix multiple ggplotly() regressions (#2469)

    * Fix #2415: variable named 'group' now shown in tooltip
    
    * Fix #2455, #2460: element_blank panel.border no longer creates empty shapes
    
    * Fix #2466: scale_*_manual with unused aesthetics no longer errors
    
    * Fix #2305: geom_boxplot outlier.shape=NA now hides outlier points
    
    * Fix #2467: multi-aesthetic scales and identity scale handling
    
    * Fix #2407, #2187: legend.position theme element now translated
    
    * Fix #2281: geom_blank no longer drops legend for other geoms
    
    * Accept new snaps
    
    * Update shinytest2 snapshots for S7 linewidth fix
    
    The linewidth_or_size.element fix now correctly returns "linewidth"
    for S7 objects (ggplot2 >= 4.0), which means theme elements like
    tickwidth, gridwidth, and borderwidth now get their actual values
    instead of 0.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude authored Jan 20, 2026
    Configuration menu
    Copy the full SHA
    386506d View commit details
    Browse the repository at this point in the history
  2. Update docs workflow to use Ruby 3.2

    Required for compatibility with newer gem versions from graphing-library-docs.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude committed Jan 20, 2026
    Configuration menu
    Copy the full SHA
    4868a68 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2026

  1. Fix save_image() compatibility with kaleido v1 (#2475)

    Use py_has_attr() instead of tryNULL() to check for kaleido.scopes
    attribute. Accessing a non-existent Python attribute can throw an
    AttributeError that may not be caught properly by tryCatch in certain
    reticulate configurations.
    
    Also add force(kaleido) in newKaleidoScope to avoid potential lazy
    evaluation issues with closures.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude committed Jan 23, 2026
    Configuration menu
    Copy the full SHA
    b1103b2 View commit details
    Browse the repository at this point in the history
  2. Fix kaleido version detection for CI compatibility

    Check for kaleido v1 by looking for the v1-specific `write_fig_sync`
    function rather than checking for absence of `scopes`. This handles
    edge cases where kaleido v0.2.1 may have broken `scopes` attribute
    on certain Python versions (e.g., Python 3.14).
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude committed Jan 23, 2026
    Configuration menu
    Copy the full SHA
    275422b View commit details
    Browse the repository at this point in the history
  3. Make shinytest2 snapshots robust to window size variations

    Scrub plotly_relayout-A width/height values from snapshots since they
    vary by environment (different browser window sizes on different CI
    runners). This fixes flaky macOS CI failures.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude committed Jan 23, 2026
    Configuration menu
    Copy the full SHA
    88aff36 View commit details
    Browse the repository at this point in the history

Commits on Jan 24, 2026

  1. v4.12.0 release (#2476)

    * v4.12.0 release candidate
    
    * Remove broken api.plot.ly documentation URLs
    
    The api.plot.ly/api.plotly.com domain has SSL connection issues,
    causing urlchecker::url_check() failures. Removed these broken
    documentation URLs from examples and references while keeping
    the descriptive text.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
    cpsievert and claude authored Jan 24, 2026
    Configuration menu
    Copy the full SHA
    ba96ad9 View commit details
    Browse the repository at this point in the history
  2. start new version

    cpsievert committed Jan 24, 2026
    Configuration menu
    Copy the full SHA
    f7acae4 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2026

  1. Configuration menu
    Copy the full SHA
    f8765bd View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2026

  1. collaborate is no longer a supported option for config and should…

    … not be included in the examples (#2486)
    
    * Fixing docs for config() to avoid deprecated example
    
    * Adding unit test for deprecation warning
    
    * Rebuilding docs for collaborated deprecation change
    wkumler authored Apr 11, 2026
    Configuration menu
    Copy the full SHA
    db95519 View commit details
    Browse the repository at this point in the history

Commits on Apr 16, 2026

  1. Fix Windows path handling in save_image() (#2487)

    * test: capture Windows path regression in kaleido
    
    * fix: avoid embedding Windows paths in kaleido Python code
    
    * docs: note Windows save_image fix in news
    
    * test: tighten kaleido review follow-ups
    
    * fix: harden kaleido context cleanup
    cpsievert authored Apr 16, 2026
    Configuration menu
    Copy the full SHA
    b8f8d96 View commit details
    Browse the repository at this point in the history
Loading