canvas-globe 1.0.0-beta.3 → 1.0.0

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,24 @@ All notable changes to this package are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.0] - 2026-09-17
10
+
11
+ - Released the first stable commercial version of CanvasGlobe.
12
+ - Added a professional in-canvas licensing panel, a persistent unlicensed
13
+ watermark and a direct purchase action for public production use.
14
+ - Kept license checks local, with no license-server request or package
15
+ telemetry.
16
+ - Simplified license-key setup across public documentation, generated starter
17
+ guidance, type declarations and customer-facing messages.
18
+
9
19
  ## [1.0.0-beta.3] - 2026-09-17
10
20
 
11
21
  - Replaced the small production license badge with a professional in-canvas
12
22
  license panel containing purchase, preview and existing-key actions.
13
23
  - Added a persistent unlicensed watermark and purchase ribbon after the panel
14
24
  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.
25
+ - Simplified customer-facing runtime copy to refer only to the supplied
26
+ license key.
17
27
 
18
28
  ## [1.0.0-beta.2] - 2026-09-17
19
29
 
@@ -24,8 +34,8 @@ All notable changes to this package are documented here. The format follows
24
34
 
25
35
  ## [1.0.0-beta.1] - 2026-09-16
26
36
 
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
37
+ - Prepared an opt-in proprietary 1.x licensing model with a local license-key
38
+ check and an in-component purchase notice for unlicensed
29
39
  production use.
30
40
  - Added commercial release safeguards and coordinated migration tools without
31
41
  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
 
@@ -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.0",
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.0";
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.0",
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.0";
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;