Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,37 @@ Fragment files in ``upcoming_changes/`` are assembled into this file by

.. towncrier release notes start

0.4.1 (2026-07-26)
==================

New Features
------------

- Added ``max_extent=`` to :class:`~anyplotlib.widgets.RangeWidget` and
:class:`~anyplotlib.widgets.RectangleWidget` (and the matching
``add_range_widget`` / ``add_rectangle_widget`` factories) — a size cap enforced
*while dragging*, so the widget physically stops growing instead of being
clamped after the fact. The dragged edge/corner pins and the opposite one stays
put, so the selection never jumps under the cursor. ``RangeWidget`` takes a span
width in data units; ``RectangleWidget`` takes a scalar (both axes) or a
``(max_w, max_h)`` pair. Default ``None`` leaves widgets unbounded.

Use it when a widget's size drives real downstream work — e.g. an integrating
selector whose span is a number of frames to read.


Bug Fixes
---------

- Fixed the band-style :class:`~anyplotlib.widgets.RangeWidget` being impossible
to drag by its body when narrow. Each edge claimed a fixed ±12 px grab zone, so
a band under ~24 px wide on screen (routine when zoomed out, or when its span is
capped) had no grabbable middle: aiming at the body to translate the band caught
an edge and resized it instead. Each edge now takes at most a third of the
band's width, leaving the middle third for the move handle. Wide bands are
unaffected.


0.4.0 (2026-07-18)
==================

Expand Down
6 changes: 3 additions & 3 deletions docs/_root/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
<meta charset="utf-8" />
<title>anyplotlib – redirecting…</title>
<!-- Redirect to the latest dev docs. -->
<meta http-equiv="refresh" content="0; url=v0.4.0/" />
<link rel="canonical" href="v0.4.0/" />
<meta http-equiv="refresh" content="0; url=v0.4.1/" />
<link rel="canonical" href="v0.4.1/" />
</head>
<body>
<p>
Redirecting to <a href="v0.4.0/">v0.4.0 documentation</a>…
Redirecting to <a href="v0.4.1/">v0.4.1 documentation</a>…
</p>
</body>
</html>
Expand Down
5 changes: 5 additions & 0 deletions docs/_root/switcher.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
"version": "dev",
"url": "https://cssfrancis.github.io/anyplotlib/dev/"
},
{
"name": "v0.4.1 (stable)",
"version": "v0.4.1",
"url": "https://cssfrancis.github.io/anyplotlib/v0.4.1/"
},
{
"name": "v0.4.0 (stable)",
"version": "v0.4.0",
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
project = "anyplotlib"
copyright = "2026, anyplotlib contributors"
author = "anyplotlib contributors"
release = "0.4.0"
release = "0.4.1"

# When built in CI the workflow sets DOCS_VERSION to the tag name (e.g.
# "v0.1.0") or "dev". Fall back to "dev" for local builds.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ exclude = [

[project]
name = "anyplotlib"
version = "0.4.0"
version = "0.4.1"
description = "A plotting library using python, javascript and anywidget for performant in browser plotting."
readme = "README.md"
license = { text = "MIT" }
Expand Down
7 changes: 0 additions & 7 deletions upcoming_changes/+narrow_band_grab.bugfix.rst

This file was deleted.

11 changes: 0 additions & 11 deletions upcoming_changes/+widget_max_extent.new_feature.rst

This file was deleted.

Loading