@@ -10,6 +10,64 @@ Fragment files in ``upcoming_changes/`` are assembled into this file by
1010
1111.. towncrier release notes start
1212
13+ 0.6.0 (2026-07-31)
14+ ==================
15+
16+ API and Behaviour Changes
17+ -------------------------
18+
19+ - **3-D orbit drags have reversed direction. ** Both azimuth and elevation now
20+ move the geometry *with * the cursor instead of away from it, matching
21+ matplotlib's ``mplot3d `` and every other turntable control — dragging right
22+ spins a globe right. Azimuth and elevation position the *camera *, so adding
23+ the drag delta swept the surface the opposite way, as if you had grabbed its
24+ far side. Any muscle memory (or scripted pointer drag) built against the old
25+ direction is inverted; panels driven from Python with
26+ :meth: `~anyplotlib.Plot3D.set_view ` are unaffected.
27+
28+
29+ New Features
30+ ------------
31+
32+ - :class: `~anyplotlib.Event ` now carries ``azimuth `` and ``elevation `` for 3-D
33+ orbit events. The renderer had always emitted them alongside ``zoom ``, but they
34+ were dropped on the way to Python — and since a JS-side drag does not sync back
35+ into ``Plot3D._state ``, a handler had no way to react to an orbit at all. See
36+ the new ``Star Globe Explorer `` gallery example, which links a celestial sphere
37+ to a sky map through them.
38+ - Added :meth: `~anyplotlib.Plot2D.add_brush_widget ` for painting freehand
39+ multi-class label strokes on a 2-D image with Shift-drag, leaving a bare drag to
40+ pan as before.
41+ - Added :meth: `~anyplotlib.Plot3D.set_texture ` for wrapping an image around a 3-D
42+ surface — a globe, a planet, or a star chart on the celestial sphere — with
43+ optional diffuse shading and backface culling. ``Axes.plot_surface `` gained
44+ ``texture= ``, ``bounds= ``, and ``gpu= `` to match. Textured surfaces render on
45+ WebGPU when it is available (roughly 9k triangles at 54 ms/frame on Canvas2D
46+ versus 0.4 ms on the GPU), falling back to Canvas2D silently otherwise.
47+ ``set_axis_off() `` now also hides a 3-D panel's axis lines, labels, and ticks.
48+
49+
50+ Bug Fixes
51+ ---------
52+
53+ - Fixed WebGPU 3-D geometry being clipped at the corners of a cube-shaped
54+ dataset. The clip-space depth scale let ``clip.z `` reach 1.09 for a point at
55+ the far corner of the normalised bounds box, outside the ``[0, 1] `` range
56+ WebGPU keeps, so the nearest corner of a dense :meth: `~anyplotlib.Axes.scatter3d `
57+ cloud silently vanished at the default camera angles. Spherical geometry was
58+ never affected.
59+ - Fixed an inverted depth comparison in the WebGPU 3-D projection: a GPU-rendered
60+ :meth: `~anyplotlib.Axes.scatter3d ` cloud drew its far points on top of its near
61+ ones wherever two points overlapped on screen. Voxel panels were unaffected
62+ (they disable depth writes), and the Canvas2D path was always correct.
63+ - Fixed the docs deployment racing itself on release. A push to ``main `` and its
64+ release tag are different refs, so the ``docs-${{ github.ref }} `` concurrency
65+ group put them in separate groups and both pushed to ``gh-pages `` at once; the
66+ loser was rejected and its versioned directory never appeared, while
67+ ``switcher.json `` still advertised the version. The deploy job now uses a
68+ ref-independent group so deployments queue instead.
69+
70+
13710.5.0 (2026-07-26)
1472==================
1573
0 commit comments