Skip to content

Release v0.4.0 - #63

Merged
Federicocervelli merged 4 commits into
mainfrom
development
Jul 10, 2026
Merged

Release v0.4.0#63
Federicocervelli merged 4 commits into
mainfrom
development

Conversation

@Federicocervelli

Copy link
Copy Markdown
Owner

Summary

  • prepare BlazePlot v0.4.0
  • standardize standalone chart initialization on new Chart(...)
  • remove the breaking createChart(...) API, CreateChart* types, and blazeplot/react wrapper entry
  • apply nonlinear/reversed/right-axis transforms consistently to rendering, picking, pan, and zoom
  • accelerate range-based bounds queries and reduce WebGL allocation overhead
  • consolidate duplicated browser benchmark/test infrastructure
  • include the financial chart improvements already merged to main

Breaking changes

See changelogs/v0.4.0.md.

  • Replace createChart(...) with new Chart(...), add the series, initialize the viewport, and call start().
  • Replace BlazeChart with Chart construction/disposal in the framework lifecycle.

Validation

  • bun run ci
  • bun run pages:build
  • bun pm pack --dry-run
  • bun run release:benchmarks

Release benchmark command recorded in the changelog:

bun run bench:report --scenario ci-smoke --measure-ms 750 --warmup-ms 100 --width 800 --height 450 --top 12 --setup-timeout-ms 60000 --out-md changelogs/v0.4.0.md

Risk areas

  • package export removals are intentionally breaking
  • nonlinear axis rendering and interaction paths
  • OHLC/candlestick geometry integration with the main-only financial chart changes

Merging this PR to main triggers the release workflow, which publishes npm 0.4.0, creates tag v0.4.0, and creates the GitHub Release.

Remove alternate chart constructors and the React wrapper, apply nonlinear axis transforms throughout rendering and interaction, consolidate browser tooling, and prepare v0.4.0.
# Conflicts:
#	README.md
#	docs/api-reference.md
#	src/ui/Chart.ts
@Federicocervelli
Federicocervelli merged commit 59e5d56 into main Jul 10, 2026
2 checks passed
@Federicocervelli
Federicocervelli deleted the development branch July 10, 2026 06:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b12b30f6ba

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/ui/Chart.ts
const sample = series.nearestSampleByX(dataX, viewport);
if (!sample) continue;
const distancePx = Math.abs(sample.x - dataX) * xScale;
const distancePx = Math.abs(controller.scaleValue(sample.x, "x") - controller.scaleValue(dataX, "x")) * xScale;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Compare nearest-x candidates in scaled space

For log/symlog/custom X axes, this only measures the sample already chosen by series.nearestSampleByX, but that helper chooses by raw data distance. For example, with a log-X chart containing samples at 1 and 20, hovering at x=10 selects 1 because raw dx is 9 < 10, even though 20 is much closer on screen after the log transform; with a finite maxDistancePx this can also return no hover item while a visible point is within range. Please compare the lower-bound neighbors using controller.scaleValue(...) before selecting the nearest-X sample.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant