Skip to content

Releases: charming-art/api

0.0.19 (AUG 19, 2025)

19 Aug 04:00
71a3002

Choose a tag to compare

0.0.19 (AUG 19, 2025) Pre-release
Pre-release

What's Changed

Brand new start! https://charmingjs.org/

Full Changelog: charming-art/charming@v0.0.18...v0.0.19

0.0.18 (JUN 13, 2025)

14 Jun 03:02

Choose a tag to compare

0.0.18 (JUN 13, 2025) Pre-release
Pre-release

What's Changed

Optimize and simplify APIs:

example
import * as cm from "charmingjs";

function circles(x, y, r, data = []) {
  if (r < 16) return;
  data.push({x, y, r});
  circles(x - r / 2, y, r * 0.5, data);
  circles(x + r / 2, y, r * 0.5, data);
  circles(x, y - r / 2, r * 0.5, data);
  circles(x, y + r / 2, r * 0.5, data);
  return data;
}

const svg = cm.render({
  width: 480,
  height: 480,
  marks: [
    cm.svg("circle", circles(240, 240, 200), {
      cx: (d) => d.x,
      cy: (d) => d.y,
      r: (d) => d.r,
      stroke: "black",
      fill: "transparent",
    }),
  ],
});

document.body.appendChild(svg);

Full Changelog: charming-art/charming@v0.0.17...v0.0.18

0.0.17 (APR 24, 2025)

24 Apr 14:01
d40d7e3

Choose a tag to compare

0.0.16 (MAR 30, 2025)

31 Mar 03:26
fd35053

Choose a tag to compare

0.0.15 (MAR 20, 2025)

21 Mar 02:26
db3a6e6

Choose a tag to compare

0.0.14 (MAR 13, 2025)

13 Mar 19:56

Choose a tag to compare

0.0.14 (MAR 13, 2025) Pre-release
Pre-release

What's Changed

Implemented basic diff algorithms in https://github.com/charming-art/charming/pull/330. And let's procedurally draw a Infinite Landscape with Charming! (Code)

image

Full Changelog: charming-art/charming@v0.0.13...v0.0.14

0.0.13 (MAR 10, 2025)

10 Mar 22:11
f1abcd9

Choose a tag to compare

0.0.12 (MAR 3, 2025)

04 Mar 00:24
aa6ae3e

Choose a tag to compare

0.0.12 (MAR 3, 2025) Pre-release
Pre-release

0.0.11 (FEB 24, 2025)

24 Feb 19:15
676a5db

Choose a tag to compare

0.0.11 (FEB 24, 2025) Pre-release
Pre-release

What's Changed

Optimize API based on the following examples:

const app = cm.render({
  width: 200,
  height: 50,
  loop: true,
  draw: () => [
    SVG.circle({
      cx: Math.abs(Math.sin(Date.now() / 1000) * 200),
      cy: 25,
      r: 20,
      stroke: "red",
      strokeWidth: 4,
    }),
  ],
});

document.body.append(app.node());

PRs

New Contributors

Full Changelog: charming-art/charming@v0.0.10...v0.0.11

0.0.10 (FEB 18, 2025)

18 Feb 16:39
67f099b

Choose a tag to compare

0.0.10 (FEB 18, 2025) Pre-release
Pre-release

What's Changed

Simplify API:

  • Split cm.flow into cm.state and cm.ticker.
  • Change cm.SVG from a function to cm.svg, a tagged template literal for readability.
import * as cm from "charmingjs";

const state = cm.state({x: 0});
const ticker = cm.ticker().on("animate", animate);

function animate() {
  state.x = Math.abs(Math.sin(Date.now() / 1000) * 200);
}

const node = cm.svg`<svg ${{width: 200, height: 50}}>
  <circle ${{cx: () => state.x, cy: 25, r: 20}}></circle>
</svg>`;

document.body.append(node);

Full Changelog: charming-art/charming@v0.0.9...v0.0.10