← Back to home

Patch Notes

A running log of every update shipped to GraphIt.now.

v0.5Latest15 April 2026

Textbook-style economics diagrams

  • AS-AD: axes now show arrows at ends with no tick numbers (qualitative style matching textbook diagrams). Dotted lines drop from the AD/SRAS equilibrium to both axes, with P₁ on the y-axis and Y₁ on the x-axis.
  • Supply & Demand, Consumer Surplus: equilibrium annotations replaced with P* on the y-axis and Q* on the x-axis.
  • Money Market: r* on the y-axis and M* on the x-axis; vertical dotted line added from Ms to the x-axis.
  • Keynesian Cross: Y* label added on the x-axis, with Y*' shown when government spending shifts the curve.
  • Monopoly: Pₘ on the y-axis and Qₘ on the x-axis; dotted lines from the monopoly point to both axes.

Renderer improvements

  • New axis options: hideTicks (suppresses numeric tick labels) and arrowEnd (draws an arrowhead at the axis tip).
  • New annotation property axisAlign ("x" or "y") — snaps a label to the axis on first render, then becomes freely draggable like any other annotation.
  • New annotation property linkedCurve — when the named curve is hidden via the legend, its linked annotation is hidden automatically.
  • Sub/superscript parser fix: without braces, the parser now consumes all characters until the next space or formatting symbol (e.g. 5^2e now correctly renders the full "2e" as superscript).
  • Left padding increased when hideTicks is active so axis labels have breathing room.

Advanced editor — canvas size control

  • New Canvas Size section in Advanced mode lets users set a custom width and height for the exported graph.
  • Preset buttons: Widescreen (1600×1000), Standard (1200×750), Square (1000×1000), Portrait (800×1000).
  • The canvas letterboxes within a fixed 16:10 container so the page layout never shifts.

Contact form — full redesign

  • Three-tab form replacing the single feedback box: Share Feedback, Request Features, and Report a Bug.
  • Bug report tab collects: description, which graph, steps to reproduce, expected vs actual behaviour.
  • Feature request tab collects: graph name, subject area, description of desired behaviour.
  • Form submissions are emailed in real-time via Resend with a styled HTML template — colour-coded by submission type, key-value table, and a reply button when an email address is provided.
  • Contact page link in the post-download modal now opens in a new tab so the graph is not lost.

Legend improvements

  • Curve label column renamed from "Labels" to "Legend" to clarify its purpose.
  • Annotation text editing section removed from the sidebar — annotations are edited by dragging on the canvas.
  • Hiding a curve in the legend now also hides any annotation linked to it via linkedCurve.
v0.411 April 2026

32 new IB curriculum tools

  • Economics (9 new): Price Controls, Taxes & Subsidies, Negative Externalities, Positive Externalities, Monopoly Diagram, Lorenz Curve, Money Market, Foreign Exchange Market, Keynesian Cross.
  • Physics (9 new): Boyle's Law, Charles's Law, Capacitor Charge & Discharge, Radioactive Decay, Blackbody Radiation, Doppler Effect, V–I Characteristics, Gravitational Fields, Nuclear Binding Energy.
  • Chemistry (4 new): Reaction Rate Orders, Arrhenius Equation, Enthalpy Profile, Beer-Lambert Law.
  • Biology (5 new): Survivorship Curves, Oxygen Dissociation Curve, Photosynthesis Rate, Predator–Prey Dynamics, Enzyme Activity.
  • Mathematics (5 new): Binomial Distribution, Riemann Sums, Taylor / Maclaurin Series, Chi-Squared Distribution, Trigonometric Transformations.
  • Total tool count grows from 17 to 49 across 5 subjects.

Canvas snapshot previews on tool cards

  • Every graph tool card on the subject pages now renders a live canvas preview thumbnail at default parameters instead of a plain text placeholder.
  • Previews are rendered client-side via GraphPreview at 800×500 logical pixels and scaled down via CSS, ensuring axis padding stays proportional.
  • Simulation tools (e.g. Projectile Motion, Predator–Prey) show a "▶ Simulation" placeholder on their preview card.
  • Each of the 49 registered tools has a corresponding preview config in previews.ts — 32 new entries added this release.
  • A gradient overlay softens the bottom edge of each thumbnail for a cleaner card appearance.
v0.3Major Update11 April 2026

Consumer & Producer Surplus — full rewrite

  • Replaced the old slider-based parameters (demand intercept, supply intercept, demand slope, supply slope) with direct equation inputs: type any linear expression such as P = 500 − 3Q or P = 20 + 1.5Q.
  • The graph now accepts inputs in the form "a − bQ" (demand) or "a + bQ" (supply) and parses them automatically.
  • Inline validation catches wrong formats, a demand curve with a positive slope, a supply curve with a negative slope, and cases where the two curves do not intersect at a positive quantity.
  • Press Enter or click "Update Graph" to apply equations — the graph only updates when valid input is confirmed.
  • Axes auto-scale to the equations: the Q-axis extends to where the demand curve hits zero; the P-axis scales to the demand intercept. Any price level (e.g. P = 5000) now renders correctly with no clipping or overflow.
  • Consumer surplus (CS) and producer surplus (PS) areas are computed and labelled dynamically from the parsed equations.
  • Equilibrium point, equilibrium price dashed line, Q* and P* annotations all update live with the entered equations.

Axis tick labels — clean number formatting

  • Tick positions are now calculated using a "nice numbers" algorithm instead of dividing the range by a fixed count. The step size is always a round value of the form 1, 2, 2.5, 5 or 10 × 10ⁿ.
  • A 0–1000 range with ~5 ticks now shows 0, 200, 400, 600, 800, 1000 instead of 0, 166.7, 333.3, 500, 666.7, 833.3, 1000.
  • Integer tick values are displayed without a decimal point (e.g. "200" not "200.0"). Values that are genuinely non-integer show one decimal place.
  • The same algorithm applies to both the X and Y axes on every graph across the site.
v0.2Foundation9 April 2026

Advanced Editor mode

  • Every tool now has an /advanced route providing a full-screen editing environment with a collapsible sidebar.
  • The sidebar contains five sections: Display, Text Sizes, Curves, Labels, and Colors.
  • All advanced-only content is deferred to after client mount to prevent Next.js hydration mismatches.

Sidebar — Display section

  • Toggle buttons to show or hide the grid and annotations.
  • Grid opacity slider (0–100%) lets users fade gridlines to taste.
  • Controls use pill-style toggle chips consistent with the rest of the UI.

Sidebar — Text Sizes section

  • Independent size sliders for the graph title (10–32 px), axis labels (8–24 px), and annotations (8–24 px).
  • Each slider shows a reset button (↺) when its value has been changed from default.
  • MiniSlider component: compact inline layout with label, range input, numeric readout, and optional reset.

Sidebar — Curves section

  • Each named curve listed with a colored dot, label, eye-toggle (show/hide), and dash-style chips (solid / dashed / dotted).
  • Fill / shading curves show a "Shading" badge instead of line-style controls.
  • Hiding a curve zeroes out its data points, keeping layout stable.

Sidebar — Labels section

  • Each graph annotation (e.g. "Q*", "CS", "AD") is listed with an editable text field.
  • Supports rich-text notation: ^ for superscript, _ for subscript (e.g. "Q^*", "P_0").
  • Individual reset button (↺) per annotation to restore the original text.
  • Annotations are reported from GraphCanvas to the context and kept in sync across re-renders.

Sidebar — Colors section

  • Per-curve color overrides via a row of 10 preset swatches plus a native color picker.
  • Fill curves are excluded from the Colors section (only line curves are colorable).
  • A global "Reset all" button restores every color to its original value.

Graph title and axis label editing

  • In advanced mode, the graph title and both axis labels become editable text inputs rendered directly on the canvas panel.
  • Changes are applied to the canvas via the GraphEditContext.

Axis bounds editor

  • A collapsible panel below the canvas lets users set custom X and Y axis min/max values.
  • Uses a draft-string approach: changes are staged and only applied when the user clicks Apply, preventing broken intermediate states while typing.
  • Invalid or out-of-range values display an inline error message. A Reset button restores the tool defaults.
  • The panel stays permanently open in advanced mode.

Parameter controls upgrade

  • Each parameter now shows both a range slider and a number input side by side.
  • The number input uses a local draft state: type freely, commit on blur or Enter. Values are clamped to [min, max] and snapped to step on commit.
  • The slider syncs to the number input and vice-versa without fighting each other.

Copy and export buttons

  • Copy to Clipboard and Download PNG buttons moved outside the canvas overlay to a dedicated row below the graph.
  • This avoids z-index conflicts and keeps the canvas surface clean.

Canvas renderer improvements

  • CanvasRenderer accepts gridOpacity, titleSize, annotationSizeOverride on GraphConfig.
  • AxisConfig now accepts labelSize to set per-axis label font size.
  • drawGrid() respects globalAlpha for opacity.
  • drawAnnotation() accepts a per-call size override.
  • Rich-text parser supports ^ (superscript) and _ (subscript) inline in any label or annotation.

Site structure and pages

  • Full Next.js App Router site with static generation for all tool pages.
  • Pages: Home, Subjects index, per-subject listing, individual tool pages, About, Contact, Privacy Policy, Terms of Service.
  • Dark mode toggle with system-preference detection and persistent localStorage storage.
  • Header search with live filtering across all registered tools.
  • Responsive layout with Tailwind CSS v4 (no config file, pure CSS import).
  • ShareToolbar with copy-link functionality on every tool page.