From 907a7385bf46691f223481a7636bf5f638752bfb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Aug 2026 22:38:46 +0000 Subject: [PATCH 1/3] Materialize changelogs for xy@0.0.7a1 (new-prerelease-patch) --- CHANGELOG.md | 59 ++++++++++++++++++++++ news/+towncrier-changelog-releases.misc.md | 9 ---- news/481.bugfix.md | 11 ---- news/496.feature.md | 9 ---- news/499.bugfix.md | 6 --- news/501.bugfix.md | 12 ----- 6 files changed, 59 insertions(+), 47 deletions(-) delete mode 100644 news/+towncrier-changelog-releases.misc.md delete mode 100644 news/481.bugfix.md delete mode 100644 news/496.feature.md delete mode 100644 news/499.bugfix.md delete mode 100644 news/501.bugfix.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 90ed9ec9..5008c5a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,65 @@ workflow materializes the pending fragments into a new section with +## v0.0.7a1 (2026-08-25) + +### Features + +- Unanchored Cartesian legends now use content-aware placement when `loc` is set + to `"best"`. The initial static decision measures the legend against bounded + line, area, scatter, bar, and annotation geometry, while the browser remeasures + rendered pixels after responsive resize and settled view changes. + Initial/static placement takes the exact minimum with canonical tie order; after + the browser establishes a live winner, a five-percentage-point hysteresis keeps + near-uniform views from making the legend hop, while an empty candidate still + always beats an occupied one. Explicit locations, anchors, and polar legends + remain fixed. ([#496](https://github.com/reflex-dev/xy/issues/496)) + +### Bug Fixes + +- Funnel labels no longer overlap on short vertical charts. Value labels sit + at the stage centers and drop-off labels at the boundaries between them, so + the two ladders interleave at half the stage pitch; both were budgeted + against a whole one, and every pitch between one and two line heights piled + them onto each other. The label ladder's plot-size estimate was also + optimistic — it scaled the chart height by a fraction, while the title band, + tick labels and margins actually cost a roughly fixed ~90px, so it claimed + 153px of a real 92px plot at height 180 and placed labels that could not + fit. Cramped funnels now drop the derived drop-off percentage rather than + print it over the stage value; the tooltip and event payload still carry + every number, and roomy charts are unchanged. ([#481](https://github.com/reflex-dev/xy/issues/481)) +- Bar hover tooltips no longer rewrite themselves and jump when the kernel's + exact pick reply lands. The reply's row now follows the bar's orientation + (band center on the position axis, value end on the value axis) and is mapped + through the same display-value path as the local readout, so the refinement is + invisible instead of swapping a category label for its code and dragging the + anchor off the cursor. ([#499](https://github.com/reflex-dev/xy/issues/499)) +- Charts left running under GPU pressure no longer flicker blank or stay gone + until a page reload. Context-restore retries used to clear the presentation + canvas before every rebuild attempt, so each transient failure wiped the last + drawn frame; the canvas now resizes only when its dimensions actually change, + keeping the last good frame on screen until a rebuild succeeds. And when a + context stays "live" while every rebuild against it fails (a wedged driver), + three consecutive failures now recycle the shared WebGL surface — rebuilding + every chart on a fresh context, the in-page equivalent of the reload that was + previously the only escape. A genuine context loss — including one arriving + while a chart is still mid-retry from an earlier failure — resets that + escalation counter, so ordinary loss/restore churn keeps taking cheap + same-context retries. ([#501](https://github.com/reflex-dev/xy/issues/501)) + +### Miscellaneous + +- Releases are now driven by `CHANGELOG.md` instead of by a hand-cut git tag. + Contributors add a [towncrier](https://towncrier.readthedocs.io/) news fragment + under `news/` (`make news NAME=1234.feature.md`), the *Dispatch release* + workflow materializes the pending fragments into a version section, and merging + that pull request publishes: the release matrix builds every wheel, the sdist + and the runtime-verified PyEmscripten wheel, a human approves the single + credentialed upload job, and only a successful upload creates the tag and the + GitHub release. `CHANGELOG.md` is generated from that point on — version + headings are no longer written by hand. ([#498](https://github.com/reflex-dev/xy/issues/498)) + + ## v0.0.6 (2026-08-07) ### Added diff --git a/news/+towncrier-changelog-releases.misc.md b/news/+towncrier-changelog-releases.misc.md deleted file mode 100644 index f7b75b59..00000000 --- a/news/+towncrier-changelog-releases.misc.md +++ /dev/null @@ -1,9 +0,0 @@ -Releases are now driven by `CHANGELOG.md` instead of by a hand-cut git tag. -Contributors add a [towncrier](https://towncrier.readthedocs.io/) news fragment -under `news/` (`make news NAME=1234.feature.md`), the *Dispatch release* -workflow materializes the pending fragments into a version section, and merging -that pull request publishes: the release matrix builds every wheel, the sdist -and the runtime-verified PyEmscripten wheel, a human approves the single -credentialed upload job, and only a successful upload creates the tag and the -GitHub release. `CHANGELOG.md` is generated from that point on — version -headings are no longer written by hand. diff --git a/news/481.bugfix.md b/news/481.bugfix.md deleted file mode 100644 index bec186cd..00000000 --- a/news/481.bugfix.md +++ /dev/null @@ -1,11 +0,0 @@ -Funnel labels no longer overlap on short vertical charts. Value labels sit -at the stage centers and drop-off labels at the boundaries between them, so -the two ladders interleave at half the stage pitch; both were budgeted -against a whole one, and every pitch between one and two line heights piled -them onto each other. The label ladder's plot-size estimate was also -optimistic — it scaled the chart height by a fraction, while the title band, -tick labels and margins actually cost a roughly fixed ~90px, so it claimed -153px of a real 92px plot at height 180 and placed labels that could not -fit. Cramped funnels now drop the derived drop-off percentage rather than -print it over the stage value; the tooltip and event payload still carry -every number, and roomy charts are unchanged. diff --git a/news/496.feature.md b/news/496.feature.md deleted file mode 100644 index eea8aafa..00000000 --- a/news/496.feature.md +++ /dev/null @@ -1,9 +0,0 @@ -Unanchored Cartesian legends now use content-aware placement when `loc` is set -to `"best"`. The initial static decision measures the legend against bounded -line, area, scatter, bar, and annotation geometry, while the browser remeasures -rendered pixels after responsive resize and settled view changes. -Initial/static placement takes the exact minimum with canonical tie order; after -the browser establishes a live winner, a five-percentage-point hysteresis keeps -near-uniform views from making the legend hop, while an empty candidate still -always beats an occupied one. Explicit locations, anchors, and polar legends -remain fixed. diff --git a/news/499.bugfix.md b/news/499.bugfix.md deleted file mode 100644 index 50f5895e..00000000 --- a/news/499.bugfix.md +++ /dev/null @@ -1,6 +0,0 @@ -Bar hover tooltips no longer rewrite themselves and jump when the kernel's -exact pick reply lands. The reply's row now follows the bar's orientation -(band center on the position axis, value end on the value axis) and is mapped -through the same display-value path as the local readout, so the refinement is -invisible instead of swapping a category label for its code and dragging the -anchor off the cursor. diff --git a/news/501.bugfix.md b/news/501.bugfix.md deleted file mode 100644 index 455607d7..00000000 --- a/news/501.bugfix.md +++ /dev/null @@ -1,12 +0,0 @@ -Charts left running under GPU pressure no longer flicker blank or stay gone -until a page reload. Context-restore retries used to clear the presentation -canvas before every rebuild attempt, so each transient failure wiped the last -drawn frame; the canvas now resizes only when its dimensions actually change, -keeping the last good frame on screen until a rebuild succeeds. And when a -context stays "live" while every rebuild against it fails (a wedged driver), -three consecutive failures now recycle the shared WebGL surface — rebuilding -every chart on a fresh context, the in-page equivalent of the reload that was -previously the only escape. A genuine context loss — including one arriving -while a chart is still mid-retry from an earlier failure — resets that -escalation counter, so ordinary loss/restore churn keeps taking cheap -same-context retries. From 2a06d8e15d20624d60e005acada17bbbfbe7ae88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 01:16:35 +0000 Subject: [PATCH 2/3] Materialize changelogs for xy@0.0.7a2 (continued-prerelease) --- CHANGELOG.md | 17 +++++++++++++++++ news/503.bugfix.md | 11 ----------- 2 files changed, 17 insertions(+), 11 deletions(-) delete mode 100644 news/503.bugfix.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 5008c5a4..a3372328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,23 @@ workflow materializes the pending fragments into a new section with +## v0.0.7a2 (2026-08-26) + +### Bug Fixes + +- Charts no longer come back blank after the shared WebGL context budget + released them while their tab was hidden. A released chart used to revive with + `restoreContext()` on the same canvas, and Chrome can restore that context + fully healthy — draws, `readPixels`, and picking all succeed — while never + presenting the canvas element again, so the data layer stayed invisible under + intact axes until a page reload. Governed releases now re-acquire the way a + real eviction does: on a fresh canvas element, rebuilt from the retained spec + and payload. + Gestures follow the chart onto that fresh canvas: wheel zoom, drag, and hover + read their geometry from the live canvas rather than the one they were first + bound to, which previously sent a zoom after any context rebuild to infinity. ([#503](https://github.com/reflex-dev/xy/issues/503)) + + ## v0.0.7a1 (2026-08-25) ### Features diff --git a/news/503.bugfix.md b/news/503.bugfix.md deleted file mode 100644 index bbd83577..00000000 --- a/news/503.bugfix.md +++ /dev/null @@ -1,11 +0,0 @@ -Charts no longer come back blank after the shared WebGL context budget -released them while their tab was hidden. A released chart used to revive with -`restoreContext()` on the same canvas, and Chrome can restore that context -fully healthy — draws, `readPixels`, and picking all succeed — while never -presenting the canvas element again, so the data layer stayed invisible under -intact axes until a page reload. Governed releases now re-acquire the way a -real eviction does: on a fresh canvas element, rebuilt from the retained spec -and payload. -Gestures follow the chart onto that fresh canvas: wheel zoom, drag, and hover -read their geometry from the live canvas rather than the one they were first -bound to, which previously sent a zoom after any context rebuild to infinity. From dd5dacd08de3450fc4f05d95e0c305636cc49c16 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 02:30:12 +0000 Subject: [PATCH 3/3] Materialize changelogs for xy@0.0.7 (release-from-prerelease) --- CHANGELOG.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3372328..3810deb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,24 +14,7 @@ workflow materializes the pending fragments into a new section with -## v0.0.7a2 (2026-08-26) - -### Bug Fixes - -- Charts no longer come back blank after the shared WebGL context budget - released them while their tab was hidden. A released chart used to revive with - `restoreContext()` on the same canvas, and Chrome can restore that context - fully healthy — draws, `readPixels`, and picking all succeed — while never - presenting the canvas element again, so the data layer stayed invisible under - intact axes until a page reload. Governed releases now re-acquire the way a - real eviction does: on a fresh canvas element, rebuilt from the retained spec - and payload. - Gestures follow the chart onto that fresh canvas: wheel zoom, drag, and hover - read their geometry from the live canvas rather than the one they were first - bound to, which previously sent a zoom after any context rebuild to infinity. ([#503](https://github.com/reflex-dev/xy/issues/503)) - - -## v0.0.7a1 (2026-08-25) +## v0.0.7 (2026-08-26) ### Features @@ -76,6 +59,17 @@ workflow materializes the pending fragments into a new section with while a chart is still mid-retry from an earlier failure — resets that escalation counter, so ordinary loss/restore churn keeps taking cheap same-context retries. ([#501](https://github.com/reflex-dev/xy/issues/501)) +- Charts no longer come back blank after the shared WebGL context budget + released them while their tab was hidden. A released chart used to revive with + `restoreContext()` on the same canvas, and Chrome can restore that context + fully healthy — draws, `readPixels`, and picking all succeed — while never + presenting the canvas element again, so the data layer stayed invisible under + intact axes until a page reload. Governed releases now re-acquire the way a + real eviction does: on a fresh canvas element, rebuilt from the retained spec + and payload. + Gestures follow the chart onto that fresh canvas: wheel zoom, drag, and hover + read their geometry from the live canvas rather than the one they were first + bound to, which previously sent a zoom after any context rebuild to infinity. ([#503](https://github.com/reflex-dev/xy/issues/503)) ### Miscellaneous