v1.0.0
What's Changed
- Let bins= take a per-row sequence in plot() by @ajschumacher in #17
- Accept ax= and return artist dicts by @ajschumacher in #18
- Pass presorted through pavement_stats; sync Iterable docstrings by @ajschumacher in #19
- Rename whisker= to whisker_extent= by @ajschumacher in #20
- Validate inputs at the public boundaries by @ajschumacher in #21
- Add 2D pavement plots by @ajschumacher in #22
- Add margin() for marginal pavement plots by @ajschumacher in #23
- Add box_props for a background fill by @ajschumacher in #24
- Extend box_props to 2D pavement plots by @ajschumacher in #25
- QC: drop dead import, add ruff lint + Python 3.14 CI by @ajschumacher in #26
- Default line width to 1.0 by @ajschumacher in #27
- Add bins=None to show all data (rug mode) by @ajschumacher in #28
- Interactive pavement plots for HoloViews (bokeh / plotly / matplotlib) by @ajschumacher in #29
- Add Plotly implementation (pavement.plotly) by @ajschumacher in #30
- Add Bokeh implementation (pavement.bokeh) by @ajschumacher in #31
- Unify the four backends behind one plot() API (1.0.0rc1) by @ajschumacher in #32
- Add spark(): inline sparkline pavement plots (matplotlib) by @ajschumacher in #33
- Add pavement.svg: dependency-free interactive inline sparklines by @ajschumacher in #34
- SVG spark hover: per-value rugs, hover effect on value lines, one tooltip layer by @ajschumacher in #35
- Add value_format hover hook across interactive backends by @ajschumacher in #36
- Fix HoloViews bokeh hover to cover every row's fills and ticks by @ajschumacher in #37
- Fix quantiles validation, stale doc references, and review nits by @ajschumacher in #38
- Add experimental column "tally" strip by @ajschumacher in #39
- Add experimental "proportion" plot (value_counts strip) by @ajschumacher in #40
- Drop box edges from rugs by default (show_box) by @ajschumacher in #41
- Add user-facing pavement-plots Claude skill by @ajschumacher in #42
- Package pavement-plots skill as a distributable plugin by @ajschumacher in #43
- Add pavement.summary: an inline dataframe/Series summary table by @ajschumacher in #44
- Add pavement.pandas: a .pave accessor and opt-in summary repr by @ajschumacher in #45
- hover: add "X of Y values" count line to pavement bins and ticks by @ajschumacher in #46
- Add polars support: summary() + a pavement.polars .pave namespace by @ajschumacher in #47
- hover: consistent value/percentile/share layout across all hover text by @ajschumacher in #48
- Draw date/datetime/Decimal columns as pavements, not categorical by @ajschumacher in #49
- svg: project timedelta and numpy datetime64/timedelta64 as sparks by @ajschumacher in #50
- Default show_whiskers to False by @ajschumacher in #51
- Base summary bin choice on total value count, not distinct by @ajschumacher in #52
- Show column count on left, row count on right in summary header by @ajschumacher in #53
- Include :SS in timedelta format when any value has non-zero seconds by @ajschumacher in #54
- Show 'N by M' shape label in summary header by @ajschumacher in #55
- Add min/max axis-label cells flanking the distribution column in summary by @ajschumacher in #56
- Add most/least-common extent labels for proportion columns in summary by @ajschumacher in #57
- Wrap blank/non-printable extent labels in curly quotation marks by @ajschumacher in #58
- Use comma-notation for numeric extent labels, up to 16 chars by @ajschumacher in #59
- svg spark: box edges only over bins with interior data by @ajschumacher in #60
- Default whisker_extent 0.1 → 0.05, consistent across backends by @ajschumacher in #61
- summary: fixed column widths, scrollable text cells, responsive layout by @ajschumacher in #62
- svg: proportional_representation flag for frequency rugs by @ajschumacher in #63
- rename: whisker → tassel throughout the codebase by @ajschumacher in #64
- svg: hover the gaps between a rug's value lines, like a pavement's bins by @ajschumacher in #65
- Drop missing values in the numeric core; re-export the column summaries by @ajschumacher in #66
- Clarify value_label defaults and matplotlib's lack of value_format by @ajschumacher in #67
- Raise a clear error when no HoloViews extension is active by @ajschumacher in #68
- Lead the README with a visual highlights reel for v1.0 by @ajschumacher in #69
- Add version to package by @ajschumacher in #70
- Extend summary() to accept pandas SeriesGroupBy by @ajschumacher in #71
- Reorganize examples/ for 1.0 by @ajschumacher in #72
- Fix summary() for DataFrameGroupBy (was showing single row) by @ajschumacher in #73
- Register .pave on pandas SeriesGroupBy and DataFrameGroupBy by @ajschumacher in #74
- Add MkDocs documentation site by @ajschumacher in #75
- Add polars GroupBy support: summary() and .pave accessor by @ajschumacher in #76
- Add draggable=True to summary() for browser row reordering by @ajschumacher in #77
- Fix unreadable "Show code" blocks on Examples page by @ajschumacher in #78
- Set a header logo + favicon for the docs site by @ajschumacher in #79
- Add standalone view links on Examples page by @ajschumacher in #80
- Point PyPI homepage and docs URL to planspace.org/pavement/ by @ajschumacher in #81
- Fix broken iframe src paths in examples.md by @ajschumacher in #82
- Add dataframe_view_demo: column profiles in table header by @ajschumacher in #83
- Add proportional tally width for groupby and variable-length data by @ajschumacher in #84
- Fix iframe 404s and add missing standalone link in examples.md by @ajschumacher in #85
- Upgrade GitHub Actions to Node.js 24 compatible versions by @ajschumacher in #86
- Add shared_bounds to summary and domain to spark for aligned distribution strips by @ajschumacher in #87
- Show per-group extent labels with shared_bounds instead of global bounds by @ajschumacher in #88
- Add labels arg and copy-order button to summary() by @ajschumacher in #89
- Fix API reference parameter formatting by @ajschumacher in #90
- Add copy-order button to summary() header by @ajschumacher in #91
- Widen summary() distribution column when shared_bounds is True by @ajschumacher in #92
- Release 1.0.0 by @ajschumacher in #93
- Match shared_bounds spark viewBox to its cell so strokes stay crisp by @ajschumacher in #94
- Add narrow_value_cols to summary() to control the layout independently by @ajschumacher in #95
- Fix stale summary() reference in plugin (pre-1.0) by @ajschumacher in #97
Full Changelog: v0.2.2...v1.0.0