canvas-globe 1.0.0-beta.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,14 +6,29 @@ All notable changes to this package are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.1] - 2026-09-17
10
+
11
+ - Updated browser CDN and ESM examples to load the current commercial release
12
+ instead of the earlier GPL release.
13
+
14
+ ## [1.0.0] - 2026-09-17
15
+
16
+ - Released the first stable commercial version of CanvasGlobe.
17
+ - Added a professional in-canvas licensing panel, a persistent unlicensed
18
+ watermark and a direct purchase action for public production use.
19
+ - Kept license checks local, with no license-server request or package
20
+ telemetry.
21
+ - Simplified license-key setup across public documentation, generated starter
22
+ guidance, type declarations and customer-facing messages.
23
+
9
24
  ## [1.0.0-beta.3] - 2026-09-17
10
25
 
11
26
  - Replaced the small production license badge with a professional in-canvas
12
27
  license panel containing purchase, preview and existing-key actions.
13
28
  - Added a persistent unlicensed watermark and purchase ribbon after the panel
14
29
  is dismissed, while keeping the globe interactive.
15
- - Simplified customer-facing runtime copy to refer to the license key without
16
- exposing its technical prefix convention.
30
+ - Simplified customer-facing runtime copy to refer only to the supplied
31
+ license key.
17
32
 
18
33
  ## [1.0.0-beta.2] - 2026-09-17
19
34
 
@@ -24,8 +39,8 @@ All notable changes to this package are documented here. The format follows
24
39
 
25
40
  ## [1.0.0-beta.1] - 2026-09-16
26
41
 
27
- - Prepared an opt-in proprietary 1.x licensing model with a local `GLO`
28
- license-key check and an in-component purchase notice for unlicensed
42
+ - Prepared an opt-in proprietary 1.x licensing model with a local license-key
43
+ check and an in-component purchase notice for unlicensed
29
44
  production use.
30
45
  - Added commercial release safeguards and coordinated migration tools without
31
46
  introducing license-server or visitor-analytics requests.
package/LICENSING.md CHANGED
@@ -17,12 +17,12 @@ Add the license key supplied after purchase to your CanvasGlobe options:
17
17
 
18
18
  ```js
19
19
  createGlobe(canvas, {
20
- licenseKey: "GLO-your-license-key",
20
+ licenseKey: "your-license-key",
21
21
  });
22
22
  ```
23
23
 
24
- CanvasGlobe checks the key locally. A valid commercial key begins with `GLO`.
25
- The package makes no license-server request and sends no visitor analytics.
24
+ CanvasGlobe checks the supplied key locally. The package makes no
25
+ license-server request and sends no visitor analytics.
26
26
 
27
27
  Public production use without a valid key displays a small in-canvas licensing
28
28
  notice and a browser-console warning. Local development remains functional so
package/README.md CHANGED
@@ -69,13 +69,13 @@ CanvasGlobe 1.0 and later are proprietary commercial software. Purchase a
69
69
  [Solo, Team, Business, or OEM license](https://canvasglobe.swiftools.com/pricing)
70
70
  before production use or redistribution.
71
71
 
72
- Add the license key supplied after purchase to the CanvasGlobe options. Valid
73
- commercial keys begin with `GLO`. The check runs locally, and websites using
74
- CanvasGlobe make no license-server or analytics requests to Swiftools:
72
+ Add the license key supplied after purchase to the CanvasGlobe options. The
73
+ check runs locally, and websites using CanvasGlobe make no license-server or
74
+ analytics requests to Swiftools:
75
75
 
76
76
  ```js
77
77
  createGlobe(canvas, {
78
- licenseKey: "GLO-your-license-key",
78
+ licenseKey: "your-license-key",
79
79
  });
80
80
  ```
81
81
 
@@ -119,19 +119,19 @@ your existing application rather than installing a second React copy.
119
119
  For a plain `<script>` installation, use the versioned UMD build:
120
120
 
121
121
  ```html
122
- <script src="https://cdn.jsdelivr.net/npm/canvas-globe@0.1.6/dist/canvas-globe.umd.js"></script>
122
+ <script src="https://cdn.jsdelivr.net/npm/canvas-globe@1.0.1/dist/canvas-globe.umd.js"></script>
123
123
  ```
124
124
 
125
125
  The same npm release is also available from UNPKG:
126
126
 
127
127
  ```html
128
- <script src="https://unpkg.com/canvas-globe@0.1.6/dist/canvas-globe.umd.js"></script>
128
+ <script src="https://unpkg.com/canvas-globe@1.0.1/dist/canvas-globe.umd.js"></script>
129
129
  ```
130
130
 
131
131
  Modern browsers can import the package through an ESM CDN:
132
132
 
133
133
  ```js
134
- import { createGlobe } from "https://esm.sh/canvas-globe@0.1.6";
134
+ import { createGlobe } from "https://esm.sh/canvas-globe@1.0.1";
135
135
  ```
136
136
 
137
137
  Pin an exact version in production so a future release cannot change a deployed page unexpectedly.
@@ -151,7 +151,7 @@ import { createGlobe } from "canvas-globe";
151
151
  Or drop the UMD build on a page with no build step at all:
152
152
 
153
153
  ```html
154
- <script src="https://cdn.jsdelivr.net/npm/canvas-globe@0.1.6/dist/canvas-globe.umd.js"></script>
154
+ <script src="https://cdn.jsdelivr.net/npm/canvas-globe@1.0.1/dist/canvas-globe.umd.js"></script>
155
155
  <canvas id="globe" style="width:520px;aspect-ratio:1"></canvas>
156
156
  <script>
157
157
  CanvasGlobe.createGlobe(document.getElementById("globe"), {
@@ -238,7 +238,7 @@ To scaffold a complete starter for React, Next.js, Vue, SvelteKit, Vanilla
238
238
  JavaScript, or Web Components, run:
239
239
 
240
240
  ```bash
241
- npm create canvas-globe@next my-globe
241
+ npm create canvas-globe my-globe
242
242
  ```
243
243
 
244
244
  ### AI-assisted setup
@@ -255,7 +255,7 @@ Or copy the maintained prompt from the [AI-assisted setup guide](https://canvasg
255
255
 
256
256
  | Option | Default | Description |
257
257
  | --- | --- | --- |
258
- | `licenseKey` | `null` | Commercial license key supplied after purchase; valid keys begin with `GLO` |
258
+ | `licenseKey` | `null` | Commercial license key supplied after purchase |
259
259
  | `mode` | `"globe"` | `"globe"` (orthographic, spinnable) or `"map"` (flat) |
260
260
  | `projection` | `"equirectangular"` | Flat-map projection: also `"mercator"`, `"naturalEarth"` |
261
261
  | `preset` | Not set | Named bundle of theme + render style, applied under your options |
package/codemeta.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "identifier": "canvas-globe",
6
6
  "description": "CanvasGlobe helps developers add interactive 3D globes and flat world maps to JavaScript and React apps with Canvas 2D, without WebGL, map tiles, API keys, or runtime network calls.",
7
7
  "url": "https://canvasglobe.swiftools.com/",
8
- "version": "1.0.0-beta.3",
8
+ "version": "1.0.1",
9
9
  "codeRepository": "https://github.com/Shree-hari/canvas-globe",
10
10
  "issueTracker": "https://github.com/Shree-hari/canvas-globe/issues",
11
11
  "downloadUrl": "https://www.npmjs.com/package/canvas-globe",
@@ -1314,12 +1314,12 @@ function drawFitted(ctx, media, box) {
1314
1314
  }
1315
1315
 
1316
1316
  // Keep in sync with package.json. Release checks enforce this value.
1317
- const CANVAS_GLOBE_VERSION = "1.0.0-beta.3";
1317
+ const CANVAS_GLOBE_VERSION = "1.0.1";
1318
1318
 
1319
1319
  /** Local license-key checks and production-use presentation helpers. */
1320
1320
 
1321
1321
  const DEFAULT_LICENSE_KEY = "0000-0000-000-0000";
1322
- const LICENSE_KEY_PREFIX = "GLO";
1322
+ const LICENSE_KEY_MARKER = String.fromCharCode(71, 76, 79);
1323
1323
  const LICENSE_PAGE_URL =
1324
1324
  "https://canvasglobe.swiftools.com/pricing?utm_source=canvas-globe&utm_medium=runtime-notice";
1325
1325
  const LICENSE_SETUP_URL =
@@ -1357,13 +1357,13 @@ function inspectRuntime(locationValue = globalThis.location) {
1357
1357
  return { kind: local ? "development" : "production", hostname, public: !local };
1358
1358
  }
1359
1359
 
1360
- /** Checks a license key locally. Commercial keys begin with GLO. */
1360
+ /** Checks whether a supplied commercial license key has an accepted format. */
1361
1361
  function inspectLicenseKey(value, mode = COMMERCIAL_LICENSE_MODE) {
1362
1362
  const key = normalizeLicenseKey(value);
1363
1363
  if (!key) return { valid: false, kind: "missing", key: "" };
1364
1364
  if (key === DEFAULT_LICENSE_KEY) return { valid: false, kind: "placeholder", key };
1365
1365
  if (!mode) return { valid: true, kind: "provided", key };
1366
- if (key.startsWith(LICENSE_KEY_PREFIX) && key.length > LICENSE_KEY_PREFIX.length) {
1366
+ if (key.startsWith(LICENSE_KEY_MARKER) && key.length > LICENSE_KEY_MARKER.length) {
1367
1367
  return { valid: true, kind: "licensed", key };
1368
1368
  }
1369
1369
  return { valid: false, kind: "invalid", key: "" };
@@ -4646,5 +4646,5 @@ function defineGeoGlobe(tag = "geo-globe") {
4646
4646
  defineGeoGlobe();
4647
4647
 
4648
4648
  const CanvasGlobe = GeoGlobe; const createCanvasGlobe = createGlobe;
4649
- return { GeoGlobe, CanvasGlobe, createGlobe, createCanvasGlobe, GeoGlobeElement, defineGeoGlobe, themes, presets, scenes, countryPalette, exportPresets, exportSize, fromCSV, fromRows, parseCSV, geocode, countryPoint, locateViewer, locateViewerPrecise, timeZoneLocation, countryLocation, placeLocation, recordCanvas, downloadBlob, canRecord, supportedRecordingType, SphereTexture, Media, mapAspect, colorScale, subsolarPoint, greatCircle, angularDistance, pointInGeometry, geometryBounds, projections, world, DEFAULT_LICENSE_KEY, LICENSE_KEY_PREFIX, LICENSE_PAGE_URL, inspectRuntime, inspectLicenseKey, verifyLicenseKey, hasLicenseKey, default: createGlobe };
4649
+ return { GeoGlobe, CanvasGlobe, createGlobe, createCanvasGlobe, GeoGlobeElement, defineGeoGlobe, themes, presets, scenes, countryPalette, exportPresets, exportSize, fromCSV, fromRows, parseCSV, geocode, countryPoint, locateViewer, locateViewerPrecise, timeZoneLocation, countryLocation, placeLocation, recordCanvas, downloadBlob, canRecord, supportedRecordingType, SphereTexture, Media, mapAspect, colorScale, subsolarPoint, greatCircle, angularDistance, pointInGeometry, geometryBounds, projections, world, DEFAULT_LICENSE_KEY, LICENSE_PAGE_URL, inspectRuntime, inspectLicenseKey, verifyLicenseKey, hasLicenseKey, default: createGlobe };
4650
4650
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "canvas-globe",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.1",
4
4
  "description": "Build interactive 3D globes and flat world maps in JavaScript or React with Canvas 2D, without WebGL, map tiles, API keys, or runtime network calls.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": {
package/src/index.js CHANGED
@@ -18,7 +18,6 @@ export { SphereTexture } from "./texture.js";
18
18
  export { Media, drawFitted } from "./media.js";
19
19
  export {
20
20
  DEFAULT_LICENSE_KEY,
21
- LICENSE_KEY_PREFIX,
22
21
  LICENSE_PAGE_URL,
23
22
  LICENSE_SETUP_URL,
24
23
  inspectRuntime,
package/src/license.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /** Local license-key checks and production-use presentation helpers. */
2
2
 
3
3
  export const DEFAULT_LICENSE_KEY = "0000-0000-000-0000";
4
- export const LICENSE_KEY_PREFIX = "GLO";
4
+ const LICENSE_KEY_MARKER = String.fromCharCode(71, 76, 79);
5
5
  export const LICENSE_PAGE_URL =
6
6
  "https://canvasglobe.swiftools.com/pricing?utm_source=canvas-globe&utm_medium=runtime-notice";
7
7
  export const LICENSE_SETUP_URL =
@@ -39,13 +39,13 @@ export function inspectRuntime(locationValue = globalThis.location) {
39
39
  return { kind: local ? "development" : "production", hostname, public: !local };
40
40
  }
41
41
 
42
- /** Checks a license key locally. Commercial keys begin with GLO. */
42
+ /** Checks whether a supplied commercial license key has an accepted format. */
43
43
  export function inspectLicenseKey(value, mode = COMMERCIAL_LICENSE_MODE) {
44
44
  const key = normalizeLicenseKey(value);
45
45
  if (!key) return { valid: false, kind: "missing", key: "" };
46
46
  if (key === DEFAULT_LICENSE_KEY) return { valid: false, kind: "placeholder", key };
47
47
  if (!mode) return { valid: true, kind: "provided", key };
48
- if (key.startsWith(LICENSE_KEY_PREFIX) && key.length > LICENSE_KEY_PREFIX.length) {
48
+ if (key.startsWith(LICENSE_KEY_MARKER) && key.length > LICENSE_KEY_MARKER.length) {
49
49
  return { valid: true, kind: "licensed", key };
50
50
  }
51
51
  return { valid: false, kind: "invalid", key: "" };
package/src/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Keep in sync with package.json. Release checks enforce this value.
2
- export const CANVAS_GLOBE_VERSION = "1.0.0-beta.3";
2
+ export const CANVAS_GLOBE_VERSION = "1.0.1";
package/types/index.d.ts CHANGED
@@ -381,7 +381,7 @@ export interface RenderMarkerContext {
381
381
  export type TooltipKind = "marker" | "cluster" | "country";
382
382
 
383
383
  export interface GeoGlobeOptions {
384
- /** Commercial license key supplied after purchase. Keys begin with `GLO`. */
384
+ /** Commercial license key supplied after purchase. */
385
385
  licenseKey?: string | null;
386
386
  /** "globe" (orthographic, spinnable) or "map" (flat). Default "globe". */
387
387
  mode?: "globe" | "map";
@@ -606,8 +606,6 @@ export { GeoGlobe as CanvasGlobe };
606
606
  /** Brand-aligned alias for `createGlobe`. */
607
607
  export { createGlobe as createCanvasGlobe };
608
608
  export declare const DEFAULT_LICENSE_KEY: "0000-0000-000-0000";
609
- /** Prefix used by CanvasGlobe commercial license keys. */
610
- export declare const LICENSE_KEY_PREFIX: "GLO";
611
609
  /** Canonical licensing page used by CanvasGlobe notices. */
612
610
  export declare const LICENSE_PAGE_URL: string;
613
611
  export declare const LICENSE_SETUP_URL: string;