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
49 changes: 49 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,55 @@ Fragment files in ``upcoming_changes/`` are assembled into this file by

.. towncrier release notes start

0.8.0 (2026-08-25)
==================

API and Behaviour Changes
-------------------------

- In tile mode, ``set_data``/``update_tile_source`` now re-derive the quantisation band
``raw_min``/``raw_max`` from the incoming frame when the current band is unset or
degenerate (it previously stayed as first derived, even from a flat placeholder). A
band that is already valid is still never re-derived, so a contrast change keeps
re-windowing in the LUT with no pixel re-encode. One visible consequence: a tiled plot
born on a placeholder now quantises subsequent frames over the frame's own range
rather than the display window, matching what ``imshow`` of a large frame has always
done — so its wire bytes can differ by a rounding step from the equivalent untiled
plot, while the displayed image is unchanged. (`#60 <https://github.com/CSSFrancis/anyplotlib/pull/60>`_)


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

- Added :meth:`~anyplotlib.plot2d.Plot2D.set_tile_band` to pin the fixed quantisation
band tile bytes are encoded over, for a consumer that already knows the honest range
(a camera's bit depth, a detector's saturation point) or whose source starts flat and
so has no range to auto-derive. It re-samples the overview and any active detail tile
over the new band in a single push, replacing the practice of reaching into
``plot._state["raw_min"/"raw_max"]`` and calling ``update_tile_source()`` by hand. (`#60 <https://github.com/CSSFrancis/anyplotlib/pull/60>`_)
- Added :meth:`~anyplotlib.plot2d.Plot2D.set_display_window`, which moves the
contrast window without re-quantising the pixels — the non-destructive
counterpart to :meth:`~anyplotlib.plot2d.Plot2D.set_clim`, and what lets a
saved page be re-windowed with no Python behind it. (`#61 <https://github.com/CSSFrancis/anyplotlib/pull/61>`_)


Bug Fixes
---------

- Fixed a tiled 2-D image rendering solid black when tile mode was entered on a flat
placeholder frame (e.g. ``imshow`` of zeros before real data exists). The fixed
quantisation band ``raw_min``/``raw_max`` was derived from that placeholder — a
degenerate ``(0, 0)`` — and no later ``set_data`` re-derived it, leaving the two ends
of the protocol disagreeing about what it meant: the Python encoder treats a
degenerate band as unset and quantises over the display window, while the renderer
honoured ``(0, 0)`` and mapped every code below the display floor. The panel rendered
black on the WebGPU and Canvas2D paths alike, beside perfectly healthy stats and
histograms, with no warning. ``set_data`` and ``update_tile_source`` now re-derive a
degenerate band from the incoming frame, and the renderer falls back to the display
window for a degenerate band in tile mode — in the image LUT and in the colorbar
tick placement, which read the band the same way. (`#60 <https://github.com/CSSFrancis/anyplotlib/pull/60>`_)


0.7.3 (2026-08-13)
==================

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.7.3/" />
<link rel="canonical" href="v0.7.3/" />
<meta http-equiv="refresh" content="0; url=v0.8.0/" />
<link rel="canonical" href="v0.8.0/" />
</head>
<body>
<p>
Redirecting to <a href="v0.7.3/">v0.7.3 documentation</a>…
Redirecting to <a href="v0.8.0/">v0.8.0 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.8.0 (stable)",
"version": "v0.8.0",
"url": "https://cssfrancis.github.io/anyplotlib/v0.8.0/"
},
{
"name": "v0.7.3 (stable)",
"version": "v0.7.3",
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.7.3"
release = "0.8.0"

# 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.7.3"
version = "0.8.0"
description = "A plotting library using python, javascript and anywidget for performant in browser plotting."
readme = "README.md"
license = { text = "MIT" }
Expand Down
9 changes: 0 additions & 9 deletions upcoming_changes/60.api_change.rst

This file was deleted.

12 changes: 0 additions & 12 deletions upcoming_changes/60.bugfix.rst

This file was deleted.

6 changes: 0 additions & 6 deletions upcoming_changes/60.new_feature.rst

This file was deleted.

4 changes: 0 additions & 4 deletions upcoming_changes/61.new_feature.rst

This file was deleted.

Loading